Otherwise we have garbage in the upper bits that can affect the
results of the UREM.
Fixes PR55296.
| Paths 
 |  Differential  D125076  
[SelectionDAG] Clear promoted bits before UREM on shift amount in PromoteIntRes_FunnelShift. ClosedPublic Authored by craig.topper on May 6 2022, 12:12 AM. 
Details Summary Otherwise we have garbage in the upper bits that can affect the Fixes PR55296. 
Diff Detail 
 Event TimelineThis revision is now accepted and ready to land.May 6 2022, 1:06 AM craig.topper retitled this revision from [SelectionDAG] Clear promoted bits before UREM on shift amount in PromoteIntRes_Rotate. to [SelectionDAG] Clear promoted bits before UREM on shift amount in PromoteIntRes_FunnelShift..May 6 2022, 8:57 AM 
 
 This revision was landed with ongoing or failed builds.May 6 2022, 9:26 AM Closed by commit rG76f90a9d71ee: [SelectionDAG] Clear promoted bits before UREM on shift amount in… (authored by craig.topper).  ·  Explain Why This revision was automatically updated to reflect the committed changes. 
Revision Contents 
 
 
Diff 427662 llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
 llvm/test/CodeGen/AArch64/funnel-shift.ll
 llvm/test/CodeGen/AMDGPU/fshr.ll
 llvm/test/CodeGen/ARM/funnel-shift.ll
 llvm/test/CodeGen/Mips/funnel-shift.ll
 llvm/test/CodeGen/PowerPC/funnel-shift.ll
 llvm/test/CodeGen/X86/funnel-shift.ll
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Like other shifts/rotates, the shift amount for funnel shifts isn't required to match the data type is it? Should this be checking that the argument needs to be promoted first?