diff options
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86LegalizerInfo.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index 3a814d3daa8..94dece2d150 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -130,6 +130,11 @@ void X86LegalizerInfo::setLegalizerInfo32bit() { .maxScalar(0, s32) .widenScalarToNextPow2(0, /*Min*/ 8); getActionDefinitionsBuilder(G_INTTOPTR).legalFor({s32, p0}); + + // Shifts + getActionDefinitionsBuilder({G_SHL, G_LSHR, G_ASHR}) + .legalFor({s8, s16, s32}) + .clampScalar(0, s8, s32); } // Control-flow @@ -209,6 +214,11 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { // Comparison setAction({G_ICMP, 1, s64}, Legal); + // Shifts + getActionDefinitionsBuilder({G_SHL, G_LSHR, G_ASHR}) + .legalFor({s8, s16, s32, s64}) + .clampScalar(0, s8, s64); + // Merge/Unmerge setAction({G_MERGE_VALUES, s128}, Legal); setAction({G_UNMERGE_VALUES, 1, s128}, Legal); |