[llvm] 2925f3c - [X86] LowerRotate - pull out repeated splitVectorIntBinary call. NFC.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 7 04:14:25 PST 2021
Author: Simon Pilgrim
Date: 2021-12-07T12:05:33Z
New Revision: 2925f3c9ae1beb49ee37b745bbed2ad6ed3d8d27
URL: https://github.com/llvm/llvm-project/commit/2925f3c9ae1beb49ee37b745bbed2ad6ed3d8d27
DIFF: https://github.com/llvm/llvm-project/commit/2925f3c9ae1beb49ee37b745bbed2ad6ed3d8d27.diff
LOG: [X86] LowerRotate - pull out repeated splitVectorIntBinary call. NFC.
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 660cf626946b..8838faf0032e 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -29820,12 +29820,14 @@ static SDValue LowerRotate(SDValue Op, const X86Subtarget &Subtarget,
assert(IsROTL && "Only ROTL supported");
+ // Split 256-bit integers on XOP/pre-AVX2 targets.
+ if (VT.is256BitVector() && (Subtarget.hasXOP() || !Subtarget.hasAVX2()))
+ return splitVectorIntBinary(Op, DAG);
+
// XOP has 128-bit vector variable + immediate rotates.
// +ve/-ve Amt = rotate left/right - just need to handle ISD::ROTL.
// XOP implicitly uses modulo rotation amounts.
if (Subtarget.hasXOP()) {
- if (VT.is256BitVector())
- return splitVectorIntBinary(Op, DAG);
assert(VT.is128BitVector() && "Only rotate 128-bit vectors!");
// Attempt to rotate by immediate.
@@ -29839,10 +29841,6 @@ static SDValue LowerRotate(SDValue Op, const X86Subtarget &Subtarget,
return Op;
}
- // Split 256-bit integers on pre-AVX2 targets.
- if (VT.is256BitVector() && !Subtarget.hasAVX2())
- return splitVectorIntBinary(Op, DAG);
-
assert((VT == MVT::v4i32 || VT == MVT::v8i16 || VT == MVT::v16i8 ||
((VT == MVT::v8i32 || VT == MVT::v16i16 || VT == MVT::v32i8) &&
Subtarget.hasAVX2()) ||
More information about the llvm-commits
mailing list