-
Notifications
You must be signed in to change notification settings - Fork 13.5k
ARM instruction selection failure when -promote-elements=true and -mattr=+neon #11691
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
Comments
Potential fix |
Nadav, does the attached patch look correct? |
Eli, Yes. This patch looks good to me. |
r144057. |
2011-11-05-NeonCallReturnVector.ll from the attached test cases is still failing with the following output: $ llc -march=arm -mattr=+neon < 2011-11-05-NeonCallReturnVector.ll
|
r144216. |
Sorry that I wasn't more specific with my last comment. The remaining 4 test cases still fail as well (for slightly different reasons). The logs from running llc are below: 2011-11-05-NeonVolatile_v216.ll 2011-11-05-NeonVolatile_v216.ll
2011-11-05-Ne |
r144361. |
Extended Description
When we enable ARM NEON (-mattr=+neon) during the code generation, llc will return either instruction selection failure or assertion failure on APInt bit width in some circumstance (see the attached test cases).
After further inspection, we found that only if both of the following flags are enabled will the bug occur:
(a) -mattr=+neon : This flag enables the code generation for ARM NEON instruction.
(b) -promote-elements=true : This flag enables some vector type to vector type promotion during the legalization process. This flag has been enabled by default since revision 142152.
PROCEDURE TO REPRODUCE:
Fetch and build the LLVM.
Download the attached test case, extract the files, and place them in /test/CodeGen/ARM
Run "make check". The expected behavior is that no additional unexpected test failure is discovered. But there will be 6 additional test failures after adding the attached test cases.
The text was updated successfully, but these errors were encountered: