Lucien0 commented on PR #15547:
URL: https://github.com/apache/tvm/pull/15547#issuecomment-1676803133

   Thanks for reply. I think these two problems can be shown in one example:
   
   ```
   uint_var = T.call_extern("uint32", "some_function")
   divided_var = T.truncdiv(128, uint_var)
   for i in range(divided_var):
       xxx
   
   if divided_var % 4 == 0:
       xxx
   ```
   
   1. Our hardware has an architecture like OpenCL, here this function may like 
get_local_id. I used the divided_var after the for loop in mod, which will 
analysis its min_val in pass lower intrin. If set to int, its min_val will be 
-128 rather than 0.
   Actually, I can indeed cast like `for i in range(T.int32(divided_var))`, but 
it is horrible to add this in every for statement and is unnecessary. Just let 
the variable adapt to the later type.
   
   3. I just create uint var through call_extern. 
   
   BTW, I come from Arm China. And we discovered this issue when utilizing TVM 
Script to create a DSL for our custom operators during the process of writing 
the actual operators. cc @Johnson9009 
   
    
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to