add tests to show broken current behavior of minsize attribute
[oota-llvm.git] / test / CodeGen / X86 / use-add-flags.ll
index 2dd2a4adac559b155a5ae7d68367ef08c9083eda..da0002cc2520eeb4c2c9bb074a5aebd768389f53 100644 (file)
@@ -1,18 +1,19 @@
-; RUN: llc < %s -march=x86-64 -o - | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s
 
 ; Reuse the flags value from the add instructions instead of emitting separate
 ; testl instructions.
 
 ; Use the flags on the add.
 
-; CHECK: add_zf:
-;      CHECK: addl    (%rdi), %esi
-; CHECK-NEXT: movl    %edx, %eax
-; CHECK-NEXT: cmovnsl %ecx, %eax
-; CHECK-NEXT: ret
+; CHECK-LABEL: test1:
+;     CHECK: addl
+; CHECK-NOT: test
+;     CHECK: cmovnsl
+;     CHECK: ret
 
-define i32 @add_zf(i32* %x, i32 %y, i32 %a, i32 %b) nounwind {
-       %tmp2 = load i32* %x, align 4           ; <i32> [#uses=1]
+define i32 @test1(i32* %x, i32 %y, i32 %a, i32 %b) nounwind {
+       %tmp2 = load i32, i32* %x, align 4              ; <i32> [#uses=1]
        %tmp4 = add i32 %tmp2, %y               ; <i32> [#uses=1]
        %tmp5 = icmp slt i32 %tmp4, 0           ; <i1> [#uses=1]
        %tmp.0 = select i1 %tmp5, i32 %a, i32 %b                ; <i32> [#uses=1]
@@ -24,10 +25,10 @@ declare void @foo(i32)
 ; Don't use the flags result of the and here, since the and has no
 ; other use. A simple test is better.
 
-; CHECK: bar:
-; CHECK: testb   $16, %dil
+; CHECK-LABEL: test2:
+; CHECK: testb   $16, {{%dil|%cl}}
 
-define void @bar(i32 %x) nounwind {
+define void @test2(i32 %x) nounwind {
   %y = and i32 %x, 16
   %t = icmp eq i32 %y, 0
   br i1 %t, label %true, label %false
@@ -40,11 +41,11 @@ false:
 
 ; Do use the flags result of the and here, since the and has another use.
 
-; CHECK: qux:
-;      CHECK: andl    $16, %edi
+; CHECK-LABEL: test3:
+;      CHECK: andl    $16, %e
 ; CHECK-NEXT: jne
 
-define void @qux(i32 %x) nounwind {
+define void @test3(i32 %x) nounwind {
   %y = and i32 %x, 16
   %t = icmp eq i32 %y, 0
   br i1 %t, label %true, label %false