CodeGen peephole: fold redundant phys reg copies
[oota-llvm.git] / test / CodeGen / X86 / fast-isel-i1.ll
index 5d572c1de500779c6a7b5b042702de498b2a96ab..589de76617a00ae38aeb7d7aae5b17ce075c741c 100644 (file)
@@ -1,14 +1,15 @@
-; RUN: llc < %s -march=x86 -fast-isel | FileCheck %s
+; RUN: llc < %s -mtriple=i686-apple-darwin10 -fast-isel -fast-isel-abort=1 | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-apple-darwin10 -fast-isel -fast-isel-abort=1 | FileCheck %s
 
-declare i64 @test1a(i64)
+declare i32 @test1a(i32)
 
-define i32 @test1(i64 %x) nounwind {
-; CHECK: test1:
+define i32 @test1(i32 %x) nounwind {
+; CHECK-LABEL: test1:
 ; CHECK: andb $1, %
-       %y = add i64 %x, -3
-       %t = call i64 @test1a(i64 %y)
-       %s = mul i64 %t, 77
-       %z = trunc i64 %s to i1
+       %y = add i32 %x, -3
+       %t = call i32 @test1a(i32 %y)
+       %s = mul i32 %t, 77
+       %z = trunc i32 %s to i1
        br label %next
 
 next:          ; preds = %0
@@ -22,14 +23,15 @@ exit:               ; preds = %next
 
 define void @test2(i8* %a) nounwind {
 entry:
-; CHECK: test2:
+; clang uses i8 constants for booleans, so we test with an i8 1.
+; CHECK-LABEL: test2:
 ; CHECK: movb {{.*}} %al
 ; CHECK-NEXT: xorb $1, %al
 ; CHECK-NEXT: testb $1
-  %tmp = load i8* %a, align 1
-  %tobool = trunc i8 %tmp to i1
-  %tobool2 = xor i1 %tobool, true
-  br i1 %tobool2, label %if.then, label %if.end
+  %tmp = load i8, i8* %a, align 1
+  %xor = xor i8 %tmp, 1
+  %tobool = trunc i8 %xor to i1
+  br i1 %tobool, label %if.then, label %if.end
 
 if.then:
   call void @test2(i8* null)