verify that the fcmp version of this works just as well as the
authorChris Lattner <sabre@nondot.org>
Tue, 7 Jul 2009 22:07:47 +0000 (22:07 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 7 Jul 2009 22:07:47 +0000 (22:07 +0000)
vfcmp version.  We actually get better code for this silly testcase.

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

test/CodeGen/X86/vfcmp.ll

index 85b82a0ac8e87545e597d8d148340ff1b8c6590d..cfec1745831a25171fc926e77141333cffcb807e 100644 (file)
@@ -11,3 +11,15 @@ define void @t(i32 %m_task_id, i32 %start_x, i32 %end_x) nounwind {
        store <2 x i8> %6, <2 x i8>* null
        ret void
 }
+
+define void @t2(i32 %m_task_id, i32 %start_x, i32 %end_x) nounwind {
+       %A = fcmp olt <2 x double> zeroinitializer, zeroinitializer             ; <<2 x i64>>:1 [#uses=1]
+        sext <2 x i1> %A to <2 x i64>
+       extractelement <2 x i64> %1, i32 1              ; <i64>:2 [#uses=1]
+       lshr i64 %2, 63         ; <i64>:3 [#uses=1]
+       trunc i64 %3 to i1              ; <i1>:4 [#uses=1]
+       zext i1 %4 to i8                ; <i8>:5 [#uses=1]
+       insertelement <2 x i8> zeroinitializer, i8 %5, i32 1            ; <<2 x i8>>:6 [#uses=1]
+       store <2 x i8> %6, <2 x i8>* null
+       ret void
+}