Fix a broadcast related regression on the vector shuffle lowering.
[oota-llvm.git] / test / CodeGen / X86 / vec_clear.ll
index 1c38825afc75ff721156db98fd9b60b31d9c778d..166d4363ec8d54534e203810a3c6495ad30ed0e0 100644 (file)
@@ -1,9 +1,13 @@
-; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 &&
-; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | not grep and
-<4 x float> %test(<4 x float>* %v1) {
-       %tmp = load <4 x float>* %v1
-       %tmp15 = cast <4 x float> %tmp to <2 x long>
-       %tmp24 = and <2 x long> %tmp15, cast (<4 x int> < int 0, int 0, int -1, int -1 > to <2 x long>)
-       %tmp31 = cast <2 x long> %tmp24 to <4 x float>
-       ret <4 x float> %tmp31
+; RUN: llc < %s -march=x86 -mattr=+sse2 -mtriple=i386-apple-darwin -o %t
+; RUN: not grep and %t
+; RUN: not grep psrldq %t
+; RUN: grep xorps %t
+
+define <4 x float> @test(<4 x float>* %v1) nounwind {
+        %tmp = load <4 x float>* %v1            ; <<4 x float>> [#uses=1]
+        %tmp15 = bitcast <4 x float> %tmp to <2 x i64>          ; <<2 x i64>> [#uses=1]
+        %tmp24 = and <2 x i64> %tmp15, bitcast (<4 x i32> < i32 0, i32 0, i32 -1, i32 -1 > to <2 x i64>)              ; <<2 x i64>> [#uses=1]
+        %tmp31 = bitcast <2 x i64> %tmp24 to <4 x float>                ; <<4 x float>> [#uses=1]
+        ret <4 x float> %tmp31
 }
+