Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86    | FileCheck %s -check-prefix=X32
      2 ; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64
      3 ; rdar://7367229
      4 
      5 define i32 @t(i32 %a, i32 %b) nounwind ssp {
      6 entry:
      7 ; X32:     t:
      8 ; X32:     xorb
      9 ; X32-NOT: andb
     10 ; X32-NOT: shrb
     11 ; X32:     testb $64
     12 ; X32:     jne
     13 
     14 ; X64:     t:
     15 ; X64-NOT: setne
     16 ; X64:     xorl
     17 ; X64:     testb $64
     18 ; X64:     jne
     19   %0 = and i32 %a, 16384
     20   %1 = icmp ne i32 %0, 0
     21   %2 = and i32 %b, 16384
     22   %3 = icmp ne i32 %2, 0
     23   %4 = xor i1 %1, %3
     24   br i1 %4, label %bb1, label %bb
     25 
     26 bb:                                               ; preds = %entry
     27   %5 = tail call i32 (...)* @foo() nounwind       ; <i32> [#uses=1]
     28   ret i32 %5
     29 
     30 bb1:                                              ; preds = %entry
     31   %6 = tail call i32 (...)* @bar() nounwind       ; <i32> [#uses=1]
     32   ret i32 %6
     33 }
     34 
     35 declare i32 @foo(...)
     36 
     37 declare i32 @bar(...)
     38 
     39 define i32 @t2(i32 %x, i32 %y) nounwind ssp {
     40 ; X32: t2:
     41 ; X32: cmpl
     42 ; X32: sete
     43 ; X32: cmpl
     44 ; X32: sete
     45 ; X32-NOT: xor
     46 ; X32: jne
     47 
     48 ; X64: t2:
     49 ; X64: testl
     50 ; X64: sete
     51 ; X64: testl
     52 ; X64: sete
     53 ; X64-NOT: xor
     54 ; X64: jne
     55 entry:
     56   %0 = icmp eq i32 %x, 0                          ; <i1> [#uses=1]
     57   %1 = icmp eq i32 %y, 0                          ; <i1> [#uses=1]
     58   %2 = xor i1 %1, %0                              ; <i1> [#uses=1]
     59   br i1 %2, label %bb, label %return
     60 
     61 bb:                                               ; preds = %entry
     62   %3 = tail call i32 (...)* @foo() nounwind       ; <i32> [#uses=0]
     63   ret i32 undef
     64 
     65 return:                                           ; preds = %entry
     66   ret i32 undef
     67 }
     68