This patch vectorizes the 2i64/4i64 ASHR shift operations - the only remaining integer vector shifts that still are being transferred to/from the scalar unit to be completed.
Note: The poor code gen for the X32 tests will be improved by D11327.
Paths
| Differential D11439
[X86][SSE] Vectorize i64 ASHR operations ClosedPublic Authored by RKSimon on Jul 22 2015, 4:20 PM.
Details Summary This patch vectorizes the 2i64/4i64 ASHR shift operations - the only remaining integer vector shifts that still are being transferred to/from the scalar unit to be completed. Note: The poor code gen for the X32 tests will be improved by D11327.
Diff Detail
Event TimelineRKSimon updated this object.
Comment Actions Thanks Quentin, if its not too much trouble please can you check the sibling patch to this one (D11327)?
Comment Actions Updated psuedocode comments to use llvm ir. Also updated the comment that I copied this from. This revision is now accepted and ready to land.Jul 29 2015, 10:06 AM Closed by commit rL243569: [X86][SSE] Vectorize i64 ASHR operations (authored by RKSimon). · Explain WhyJul 29 2015, 1:32 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 30634 lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86TargetTransformInfo.cpp
test/Analysis/CostModel/X86/arith.ll
test/Analysis/CostModel/X86/testshiftashr.ll
test/CodeGen/X86/vector-shift-ashr-128.ll
test/CodeGen/X86/vector-shift-ashr-256.ll
|
That wasn’t immediately clear to me that s>> and u>> referred to signed and unsigned shift.
Use lshr and ashr instead, like in llvm ir (or the SD name variant if you prefer).