Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86 -disable-cgp-branch-opts    | FileCheck %s -check-prefix=32
      2 ; RUN: llc < %s -march=x86-64 -disable-cgp-branch-opts | FileCheck %s -check-prefix=64
      3 ; rdar://7573216
      4 ; PR6146
      5 
      6 define i32 @t1(i32 %x) nounwind readnone ssp {
      7 entry:
      8 ; 32: t1:
      9 ; 32: cmpl $1
     10 ; 32: sbbl
     11 
     12 ; 64: t1:
     13 ; 64: cmpl $1
     14 ; 64: sbbl
     15   %0 = icmp eq i32 %x, 0
     16   %iftmp.0.0 = select i1 %0, i32 -1, i32 0
     17   ret i32 %iftmp.0.0
     18 }
     19 
     20 define i32 @t2(i32 %x) nounwind readnone ssp {
     21 entry:
     22 ; 32: t2:
     23 ; 32: cmpl $1
     24 ; 32: sbbl
     25 
     26 ; 64: t2:
     27 ; 64: cmpl $1
     28 ; 64: sbbl
     29   %0 = icmp eq i32 %x, 0
     30   %iftmp.0.0 = sext i1 %0 to i32
     31   ret i32 %iftmp.0.0
     32 }
     33 
     34 %struct.zbookmark = type { i64, i64 }
     35 %struct.zstream = type { }
     36 
     37 define i32 @t3() nounwind readonly {
     38 entry:
     39 ; 32: t3:
     40 ; 32: cmpl $1
     41 ; 32: sbbl
     42 ; 32: cmpl
     43 ; 32: xorl
     44 
     45 ; 64: t3:
     46 ; 64: cmpl $1
     47 ; 64: sbbq
     48 ; 64: cmpq
     49 ; 64: xorl
     50   %not.tobool = icmp eq i32 undef, 0              ; <i1> [#uses=2]
     51   %cond = sext i1 %not.tobool to i32              ; <i32> [#uses=1]
     52   %conv = sext i1 %not.tobool to i64              ; <i64> [#uses=1]
     53   %add13 = add i64 0, %conv                       ; <i64> [#uses=1]
     54   %cmp = icmp ult i64 undef, %add13               ; <i1> [#uses=1]
     55   br i1 %cmp, label %if.then, label %if.end
     56 
     57 if.then:                                          ; preds = %entry
     58   br label %if.end
     59 
     60 if.end:                                           ; preds = %if.then, %entry
     61   %xor27 = xor i32 undef, %cond                   ; <i32> [#uses=0]
     62   ret i32 0
     63 }
     64