Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TIR][TVMScript] Convert tir.op operands to PrimExpr #15091

Merged

Conversation

Lunderberg
Copy link
Contributor

Previously, some operations in tvm.tir.op required the operand to already be a PrimExpr, and raised an error if the operand was instead a python object. This could cause failures round-trip through TVMScript, as int32 and float32 types are printed as literals in TVMScript, relying on automatic conversion to convert them back into PrimExpr objects. For example, T.expr2(T.int32(0)) is printed as T.expr2(0), which then passes the python object 0 into tvm.tir.op.expr2 when parsing the TVMScript.

This commit updates the operations in tvm.tir.op to convert operands prior to accessing operand.dtype, avoiding the error and allowing these expressions to round-trip.

This issue was first noticed in #15076 for T.ret(0), but applied to any operator that used the operand's dtype without first normalizing to PrimExpr.

Previously, some operations in `tvm.tir.op` required the operand to
already be a `PrimExpr`, and raised an error if the operand was
instead a python object.  This could cause failures round-trip through
TVMScript, as int32 and float32 types are printed as literals in
TVMScript, relying on automatic conversion to convert them back into
`PrimExpr` objects.  For example, `T.expr2(T.int32(0))` is printed as
`T.expr2(0)`, which then passes the python object `0` into
`tvm.tir.op.expr2` when parsing the TVMScript.

This commit updates the operations in `tvm.tir.op` to convert operands
prior to accessing `operand.dtype`, avoiding the error and allowing
these expressions to round-trip.

This issue was first noticed in
apache#15076 for `T.ret(0)`, but applied
to any operator that used the operand's dtype without first
normalizing to `PrimExpr`.
@tvm-bot
Copy link
Collaborator

tvm-bot commented Jun 13, 2023

Thanks for contributing to TVM! Please refer to the contributing guidelines https://tvm.apache.org/docs/contribute/ for useful information and tips. Please request code reviews from Reviewers by @-ing them in a comment.

Generated by tvm-bot

@Lunderberg
Copy link
Contributor Author

@tvm-bot rerun

@csullivan csullivan merged commit d05715d into apache:main Jun 15, 2023
18 checks passed
@Lunderberg Lunderberg deleted the tir_op_normalize_operand_to_primexpr branch June 15, 2023 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants