This is an archive of the discontinued LLVM Phabricator instance.

[VE] Change to promote i32 AND/OR/XOR operations
ClosedPublic

Authored by kaz7 on Aug 11 2020, 6:02 AM.

Details

Summary

VE has only 64 bits AND/OR/XOR instructions. We pretended that VE has 32 bits
instructions also, but doing it increase the number of generated instructions.
Therefore, we decide to promote 32 bits operations and use only 64 bits
instructions in back end. We also avoid pretending that VE has 32 bits LEA
instruction. Update regression tests also.

Diff Detail

Event Timeline

kaz7 created this revision.Aug 11 2020, 6:02 AM
kaz7 requested review of this revision.Aug 11 2020, 6:02 AM
simoll accepted this revision.Aug 11 2020, 8:32 AM
simoll added inline comments.
llvm/test/CodeGen/VE/xor.ll
115–118

Are you planning to address this regression? (non-blocker given the significant improvements everywhere else)

This revision is now accepted and ready to land.Aug 11 2020, 8:32 AM
kaz7 added a comment.Aug 12 2020, 12:22 AM

Thank you for reviewing.

llvm/test/CodeGen/VE/xor.ll
115–118

No since I think these additional instructions are required to handle 32 bits correctly. VE instructions sign-extend all immediate values in instructions. So, (33)1 is 0xFFFFFFFF80000000. However, llvm expects 0x0000000080000000 here, I think.

This revision was landed with ongoing or failed builds.Aug 12 2020, 12:24 AM
This revision was automatically updated to reflect the committed changes.