Plug TTI into the speculation logic, giving it a real cost interface
[oota-llvm.git] / test / Transforms / SimplifyCFG / SpeculativeExec.ll
index 7e27f415f76694da42c22a40682a6e535a2db12a..bcef8480405c7a4dfa6f16e76ae0b12f34570ee5 100644 (file)
@@ -108,3 +108,32 @@ end:
 
   ret i8* %x10
 }
+
+define i16 @test5(i1* %dummy, i16 %a, i16 %b) {
+; Test that we speculate no-op instructions.
+; CHECK: @test5
+
+entry:
+  %cond1 = load volatile i1* %dummy
+  br i1 %cond1, label %if, label %end
+
+if:
+  %cond2 = load volatile i1* %dummy
+  %a.conv = sext i16 %a to i32
+  %b.conv = sext i16 %b to i32
+  %cmp = icmp ult i32 %a.conv, %b.conv
+  br i1 %cond2, label %then, label %end
+
+then:
+  %sub = sub i32 %a.conv, %b.conv
+  %sub.conv = trunc i32 %sub to i16
+  br label %end
+
+end:
+  %x = phi i16 [ %a, %entry ], [ %b, %if ], [ %sub.conv, %then ]
+; CHECK-NOT: phi
+; CHECK: select i1
+
+  ret i16 %x
+}
+