[Bugfix] Fixed: Bitwise ops on floats causing wrong code generation and crashes. #4892
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bitwise Ops on Floats
I encountered a few bugs involving using bitwise operators on floating point types. The first bug is that the
<<
and>>
operators are essentially no-ops when applied to floats which can be misleading. For example:The other bitwise operators
|
,&
,^
, and~
throw an error in the LLVM backend when applied to floats. For reference I tested using LLVM-8.This bug is fixed by adding checks to filter out floats for the
|
,&
,^
,~
,<<
, and>>
operators.TypeError Crashes
I also encountered a few more cases where operators failed to promote python types to tvm ExprOps which causes a python TypeError.
This bug is fixed by adding the missing operators to
expr.py
This pull request also includes a regression test for both in
test_lang_basic.py
@tqchen @ZihengJiang