Make x86 test actually test x86 code generation. Fix the
authorEli Friedman <eli.friedman@gmail.com>
Sat, 22 Aug 2009 03:13:10 +0000 (03:13 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Sat, 22 Aug 2009 03:13:10 +0000 (03:13 +0000)
construct on ARM, which was breaking by coincidence, and add a similar
testcase for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79719 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/vshift_split.ll [new file with mode: 0644]
test/CodeGen/X86/vshift_split.ll

index f04b45dc793b2170e0681736ff01de6ecd55af96..7d8362c93dab1b1d1831bab887c209f8e68156cc 100644 (file)
@@ -2134,8 +2134,11 @@ static SDValue LowerShift(SDNode *N, SelectionDAG &DAG,
                        N->getOperand(0), NegatedCount);
   }
 
-  assert(VT == MVT::i64 &&
-         (N->getOpcode() == ISD::SRL || N->getOpcode() == ISD::SRA) &&
+  // We can get here for a node like i32 = ISD::SHL i32, i64
+  if (VT != MVT::i64)
+    return SDValue();
+
+  assert((N->getOpcode() == ISD::SRL || N->getOpcode() == ISD::SRA) &&
          "Unknown shift to lower!");
 
   // We only lower SRA, SRL of 1 here, all others use generic lowering.
diff --git a/test/CodeGen/ARM/vshift_split.ll b/test/CodeGen/ARM/vshift_split.ll
new file mode 100644 (file)
index 0000000..a44db66
--- /dev/null
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | llc -march=arm -mattr=-neon
+
+; Example that requires splitting and expanding a vector shift.
+define <2 x i64> @update(<2 x i64> %val) nounwind readnone {
+entry:
+       %shr = lshr <2 x i64> %val, < i64 2, i64 2 >            ; <<2 x i64>> [#uses=1]
+       ret <2 x i64> %shr
+}
index 8f485ddd9a6f4ce3a1f4dae6d324f9395155df11..a1376e54cfad62f1e8e12f835d09f73bd9bafce2 100644 (file)
@@ -1,8 +1,8 @@
-; RUN: llvm-as < %s | llc
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2
 
 ; Example that requires splitting and expanding a vector shift.
 define <2 x i64> @update(<2 x i64> %val) nounwind readnone {
 entry:
-       %shr = lshr <2 x i64> %val, < i64 2, i64 2 >            ; <<2 x i64>> [#uses=1]
+       %shr = lshr <2 x i64> %val, < i64 2, i64 3 >
        ret <2 x i64> %shr
 }