| 25 | |
| 26 | @register_lower_rule("create_tensor") |
| 27 | def create_tensor_lower(ctx, *args: Union[HLOTensor, Sequence[HLOTensor]]): |
| 28 | assert len(args) == len(ctx.vars_in) == len(ctx.vars_out) == 1 |
| 29 | var_in, var_out = ctx.vars_in[0], ctx.vars_out[0] |
| 30 | if var_in.bound_data is not None: |
| 31 | ctx.module_context.set_value(var_in, var_in.bound_data) |
| 32 | ctx.module_context.set_value(var_out, var_in.bound_data) |
| 33 | assert var_in.shape == var_out.shape |
| 34 | if var_out.bound_data is not None: |
| 35 | data = np.asarray(var_out.bound_data, var_out.dtype) |
| 36 | elif var_in.bound_data is not None: |
| 37 | data = np.asarray(var_in.bound_data, var_out.dtype) |
| 38 | else: |
| 39 | assert False, "only support create tensor from const now" |
| 40 | |
| 41 | return HLOTensor(data) |
| 42 | |
| 43 | |
| 44 | @register_lower_rule("io_mark_var") |