summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86LegalizerInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86LegalizerInfo.cpp10
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);
OpenPOWER on IntegriCloud