diff options
Diffstat (limited to 'test/CodeGen/X86/xor-icmp.ll')
-rw-r--r-- | test/CodeGen/X86/xor-icmp.ll | 78 |
1 files changed, 51 insertions, 27 deletions
diff --git a/test/CodeGen/X86/xor-icmp.ll b/test/CodeGen/X86/xor-icmp.ll index 397e5bc10f5b..cd58dd1e7604 100644 --- a/test/CodeGen/X86/xor-icmp.ll +++ b/test/CodeGen/X86/xor-icmp.ll @@ -1,21 +1,33 @@ -; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32 -; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64 +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s -check-prefix=X32 +; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s -check-prefix=X64 ; rdar://7367229 define i32 @t(i32 %a, i32 %b) nounwind ssp { +; X32-LABEL: t: +; X32: # BB#0: # %entry +; X32-NEXT: movb {{[0-9]+}}(%esp), %al +; X32-NEXT: xorb {{[0-9]+}}(%esp), %al +; X32-NEXT: testb $64, %al +; X32-NEXT: je .LBB0_1 +; X32-NEXT: # BB#2: # %bb1 +; X32-NEXT: jmp bar # TAILCALL +; X32-NEXT: .LBB0_1: # %bb +; X32-NEXT: jmp foo # TAILCALL +; +; X64-LABEL: t: +; X64: # BB#0: # %entry +; X64-NEXT: movl %edi, %eax +; X64-NEXT: xorl %esi, %eax +; X64-NEXT: testb $64, %ah +; X64-NEXT: je .LBB0_1 +; X64-NEXT: # BB#2: # %bb1 +; X64-NEXT: xorl %eax, %eax +; X64-NEXT: jmp bar # TAILCALL +; X64-NEXT: .LBB0_1: # %bb +; X64-NEXT: xorl %eax, %eax +; X64-NEXT: jmp foo # TAILCALL entry: -; X32-LABEL: t: -; X32: xorb -; X32-NOT: andb -; X32-NOT: shrb -; X32: testb $64 -; X32: je - -; X64-LABEL: t: -; X64-NOT: setne -; X64: xorl -; X64: testb $64 -; X64: je %0 = and i32 %a, 16384 %1 = icmp ne i32 %0, 0 %2 = and i32 %b, 16384 @@ -38,20 +50,32 @@ declare i32 @bar(...) define i32 @t2(i32 %x, i32 %y) nounwind ssp { ; X32-LABEL: t2: -; X32: cmpl -; X32: sete -; X32: cmpl -; X32: sete -; X32-NOT: xor -; X32: je - +; X32: # BB#0: # %entry +; X32-NEXT: cmpl $0, {{[0-9]+}}(%esp) +; X32-NEXT: sete %al +; X32-NEXT: cmpl $0, {{[0-9]+}}(%esp) +; X32-NEXT: sete %cl +; X32-NEXT: cmpb %al, %cl +; X32-NEXT: je .LBB1_1 +; X32-NEXT: # BB#2: # %bb +; X32-NEXT: jmp foo # TAILCALL +; X32-NEXT: .LBB1_1: # %return +; X32-NEXT: retl +; ; X64-LABEL: t2: -; X64: testl -; X64: sete -; X64: testl -; X64: sete -; X64-NOT: xor -; X64: je +; X64: # BB#0: # %entry +; X64-NEXT: testl %edi, %edi +; X64-NEXT: sete %al +; X64-NEXT: testl %esi, %esi +; X64-NEXT: sete %cl +; X64-NEXT: cmpb %al, %cl +; X64-NEXT: je .LBB1_1 +; X64-NEXT: # BB#2: # %bb +; X64-NEXT: xorl %eax, %eax +; X64-NEXT: jmp foo # TAILCALL +; X64-NEXT: .LBB1_1: # %return +; X64-NEXT: retq + entry: %0 = icmp eq i32 %x, 0 ; <i1> [#uses=1] %1 = icmp eq i32 %y, 0 ; <i1> [#uses=1] |