| 740 | } |
| 741 | |
| 742 | ValueRefList CompiledTransformation::apply_get_attr( |
| 743 | const GetAttr& get_attr, Span<ValueRef> inputs) { |
| 744 | if (auto* traced_value = inputs[0].as(m_value_type)) { |
| 745 | ValueRef output; |
| 746 | switch (get_attr.attr()) { |
| 747 | case GetAttr::Shape: |
| 748 | output = traced_value->shape(); |
| 749 | break; |
| 750 | case GetAttr::Data: |
| 751 | output = traced_value->data(); |
| 752 | break; |
| 753 | case GetAttr::Value: |
| 754 | output = traced_value->value(); |
| 755 | break; |
| 756 | case GetAttr::DType: |
| 757 | output = traced_value->dtype(); |
| 758 | break; |
| 759 | case GetAttr::Device: |
| 760 | output = traced_value->comp_node(); |
| 761 | break; |
| 762 | default: |
| 763 | break; |
| 764 | } |
| 765 | return {output}; |
| 766 | } else { |
| 767 | return imperative::apply(get_attr, inputs); |
| 768 | } |
| 769 | } |
| 770 | |
| 771 | ValueRefList CompiledTransformation::apply_create_tensor( |
| 772 | const CreateTensor& create_tensor, Span<ValueRef> inputs) { |