If the upper 32 bits of a 64 bit mask are all zeros, we have special isel patterns to use a 32-bit and instead of a 64-bit and by relying on the impliciting zeroing of 32 bit ops.
This patch teachs shrinkAndImmediate not to break that optimization.
Paths
| Differential D42899
[X86] Teach X86DAGToDAGISel::shrinkAndImmediate to preserve upper 32 zeroes of a 64 bit mask. ClosedPublic Authored by craig.topper on Feb 4 2018, 7:11 PM.
Details Summary If the upper 32 bits of a 64 bit mask are all zeros, we have special isel patterns to use a 32-bit and instead of a 64-bit and by relying on the impliciting zeroing of 32 bit ops. This patch teachs shrinkAndImmediate not to break that optimization.
Diff Detail
Event TimelineComment Actions
This is an improvement to D42088. LGTM with the updated comment. I'd just copy the summary text as shown here as the code comment. This revision is now accepted and ready to land.Feb 5 2018, 7:21 AM Closed by commit rL324249: [X86] Teach X86DAGToDAGISel::shrinkAndImmediate to preserve upper 32 zeroes of… (authored by ctopper). · Explain WhyFeb 5 2018, 8:56 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 132841 llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp
llvm/trunk/test/CodeGen/X86/and-encoding.ll
llvm/trunk/test/CodeGen/X86/shift-pair.ll
|