diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2017-12-13 18:04:57 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2017-12-13 18:04:57 +0000 |
commit | c1f4787343460f0807fbe910e4ee1d6f11a01c16 (patch) | |
tree | 2b6688437b3badc1edcf7091ba191685b1785b56 /test | |
parent | 4cac1c471edc817552d46b7aec8256480ed1330e (diff) |
Regenerate test-shrink.ll test results. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320602 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/test-shrink.ll | 431 |
1 files changed, 361 insertions, 70 deletions
diff --git a/test/CodeGen/X86/test-shrink.ll b/test/CodeGen/X86/test-shrink.ll index e09ec43210e..9e59f9a2faa 100644 --- a/test/CodeGen/X86/test-shrink.ll +++ b/test/CodeGen/X86/test-shrink.ll @@ -1,14 +1,39 @@ -; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s --check-prefix=CHECK-64 -; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s --check-prefix=CHECK-64 -; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefix=CHECK-32 - -; CHECK-64-LABEL: g64xh: -; CHECK-64: btl $11 -; CHECK-64: ret -; CHECK-32-LABEL: g64xh: -; CHECK-32: btl $11 -; CHECK-32: ret +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s --check-prefix=CHECK-LINUX64 +; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s --check-prefix=CHECK-WIN32-64 +; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefix=CHECK-X86 + define void @g64xh(i64 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g64xh: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: btl $11, %edi +; CHECK-LINUX64-NEXT: jb .LBB0_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB0_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g64xh: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: btl $11, %ecx +; CHECK-WIN32-64-NEXT: jb .LBB0_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB0_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g64xh: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: btl $11, %eax +; CHECK-X86-NEXT: jb .LBB0_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB0_2: # %no +; CHECK-X86-NEXT: retl %t = and i64 %x, 2048 %s = icmp eq i64 %t, 0 br i1 %s, label %yes, label %no @@ -19,13 +44,38 @@ yes: no: ret void } -; CHECK-64-LABEL: g64xl: -; CHECK-64: testb $8, [[A0L:%dil|%cl]] -; CHECK-64: ret -; CHECK-32-LABEL: g64xl: -; CHECK-32: testb $8, %al -; CHECK-32: ret + define void @g64xl(i64 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g64xl: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testb $8, %dil +; CHECK-LINUX64-NEXT: jne .LBB1_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB1_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g64xl: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testb $8, %cl +; CHECK-WIN32-64-NEXT: jne .LBB1_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB1_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g64xl: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testb $8, %al +; CHECK-X86-NEXT: jne .LBB1_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB1_2: # %no +; CHECK-X86-NEXT: retl %t = and i64 %x, 8 %s = icmp eq i64 %t, 0 br i1 %s, label %yes, label %no @@ -36,13 +86,38 @@ yes: no: ret void } -; CHECK-64-LABEL: g32xh: -; CHECK-64: btl $11 -; CHECK-64: ret -; CHECK-32-LABEL: g32xh: -; CHECK-32: btl $11 -; CHECK-32: ret + define void @g32xh(i32 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g32xh: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: btl $11, %edi +; CHECK-LINUX64-NEXT: jb .LBB2_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB2_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g32xh: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: btl $11, %ecx +; CHECK-WIN32-64-NEXT: jb .LBB2_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB2_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g32xh: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: btl $11, %eax +; CHECK-X86-NEXT: jb .LBB2_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB2_2: # %no +; CHECK-X86-NEXT: retl %t = and i32 %x, 2048 %s = icmp eq i32 %t, 0 br i1 %s, label %yes, label %no @@ -53,13 +128,38 @@ yes: no: ret void } -; CHECK-64-LABEL: g32xl: -; CHECK-64: testb $8, [[A0L]] -; CHECK-64: ret -; CHECK-32-LABEL: g32xl: -; CHECK-32: testb $8, %al -; CHECK-32: ret + define void @g32xl(i32 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g32xl: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testb $8, %dil +; CHECK-LINUX64-NEXT: jne .LBB3_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB3_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g32xl: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testb $8, %cl +; CHECK-WIN32-64-NEXT: jne .LBB3_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB3_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g32xl: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testb $8, %al +; CHECK-X86-NEXT: jne .LBB3_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB3_2: # %no +; CHECK-X86-NEXT: retl %t = and i32 %x, 8 %s = icmp eq i32 %t, 0 br i1 %s, label %yes, label %no @@ -70,13 +170,38 @@ yes: no: ret void } -; CHECK-64-LABEL: g16xh: -; CHECK-64: btl $11 -; CHECK-64: ret -; CHECK-32-LABEL: g16xh: -; CHECK-32: btl $11 -; CHECK-32: ret + define void @g16xh(i16 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g16xh: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: btl $11, %edi +; CHECK-LINUX64-NEXT: jb .LBB4_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB4_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g16xh: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: btl $11, %ecx +; CHECK-WIN32-64-NEXT: jb .LBB4_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB4_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g16xh: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: btl $11, %eax +; CHECK-X86-NEXT: jb .LBB4_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB4_2: # %no +; CHECK-X86-NEXT: retl %t = and i16 %x, 2048 %s = icmp eq i16 %t, 0 br i1 %s, label %yes, label %no @@ -87,13 +212,38 @@ yes: no: ret void } -; CHECK-64-LABEL: g16xl: -; CHECK-64: testb $8, [[A0L]] -; CHECK-64: ret -; CHECK-32-LABEL: g16xl: -; CHECK-32: testb $8, %al -; CHECK-32: ret + define void @g16xl(i16 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g16xl: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testb $8, %dil +; CHECK-LINUX64-NEXT: jne .LBB5_2 +; CHECK-LINUX64-NEXT: # %bb.1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: .LBB5_2: # %no +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g16xl: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testb $8, %cl +; CHECK-WIN32-64-NEXT: jne .LBB5_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB5_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g16xl: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testb $8, %al +; CHECK-X86-NEXT: jne .LBB5_2 +; CHECK-X86-NEXT: # %bb.1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: .LBB5_2: # %no +; CHECK-X86-NEXT: retl %t = and i16 %x, 8 %s = icmp eq i16 %t, 0 br i1 %s, label %yes, label %no @@ -104,13 +254,42 @@ yes: no: ret void } -; CHECK-64-LABEL: g64x16: -; CHECK-64: testl $32896, %[[A0D:edi|ecx]] -; CHECK-64: ret -; CHECK-32-LABEL: g64x16: -; CHECK-32: testl $32896, %eax -; CHECK-32: ret + define void @g64x16(i64 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g64x16: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testl $32896, %edi # imm = 0x8080 +; CHECK-LINUX64-NEXT: je .LBB6_1 +; CHECK-LINUX64-NEXT: # %bb.2: # %no +; CHECK-LINUX64-NEXT: retq +; CHECK-LINUX64-NEXT: .LBB6_1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g64x16: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testl $32896, %ecx # imm = 0x8080 +; CHECK-WIN32-64-NEXT: je .LBB6_1 +; CHECK-WIN32-64-NEXT: # %bb.2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; CHECK-WIN32-64-NEXT: .LBB6_1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g64x16: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testl $32896, %eax # imm = 0x8080 +; CHECK-X86-NEXT: je .LBB6_1 +; CHECK-X86-NEXT: # %bb.2: # %no +; CHECK-X86-NEXT: retl +; CHECK-X86-NEXT: .LBB6_1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: retl %t = and i64 %x, 32896 %s = icmp eq i64 %t, 0 br i1 %s, label %yes, label %no @@ -121,13 +300,40 @@ yes: no: ret void } -; CHECK-64-LABEL: g64x16minsize: -; CHECK-64: testw $-32640, %[[A0W:di|cx]] -; CHECK-64: ret -; CHECK-32-LABEL: g64x16minsize: -; CHECK-32: testw $-32640, %ax -; CHECK-32: ret + define void @g64x16minsize(i64 inreg %x) nounwind minsize { +; CHECK-LINUX64-LABEL: g64x16minsize: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testw $-32640, %di # imm = 0x8080 +; CHECK-LINUX64-NEXT: je .LBB7_1 +; CHECK-LINUX64-NEXT: # %bb.2: # %no +; CHECK-LINUX64-NEXT: retq +; CHECK-LINUX64-NEXT: .LBB7_1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g64x16minsize: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testw $-32640, %cx # imm = 0x8080 +; CHECK-WIN32-64-NEXT: jne .LBB7_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB7_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g64x16minsize: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testw $-32640, %ax # imm = 0x8080 +; CHECK-X86-NEXT: je .LBB7_1 +; CHECK-X86-NEXT: # %bb.2: # %no +; CHECK-X86-NEXT: retl +; CHECK-X86-NEXT: .LBB7_1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: retl %t = and i64 %x, 32896 %s = icmp eq i64 %t, 0 br i1 %s, label %yes, label %no @@ -138,13 +344,42 @@ yes: no: ret void } -; CHECK-64-LABEL: g32x16: -; CHECK-64: testl $32896, %[[A0D]] -; CHECK-64: ret -; CHECK-32-LABEL: g32x16: -; CHECK-32: testl $32896, %eax -; CHECK-32: ret + define void @g32x16(i32 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g32x16: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testl $32896, %edi # imm = 0x8080 +; CHECK-LINUX64-NEXT: je .LBB8_1 +; CHECK-LINUX64-NEXT: # %bb.2: # %no +; CHECK-LINUX64-NEXT: retq +; CHECK-LINUX64-NEXT: .LBB8_1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g32x16: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testl $32896, %ecx # imm = 0x8080 +; CHECK-WIN32-64-NEXT: je .LBB8_1 +; CHECK-WIN32-64-NEXT: # %bb.2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; CHECK-WIN32-64-NEXT: .LBB8_1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g32x16: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testl $32896, %eax # imm = 0x8080 +; CHECK-X86-NEXT: je .LBB8_1 +; CHECK-X86-NEXT: # %bb.2: # %no +; CHECK-X86-NEXT: retl +; CHECK-X86-NEXT: .LBB8_1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: retl %t = and i32 %x, 32896 %s = icmp eq i32 %t, 0 br i1 %s, label %yes, label %no @@ -155,13 +390,40 @@ yes: no: ret void } -; CHECK-64-LABEL: g32x16minsize: -; CHECK-64: testw $-32640, %[[A0W]] -; CHECK-64: ret -; CHECK-32-LABEL: g32x16minsize: -; CHECK-32: testw $-32640, %ax -; CHECK-32: ret + define void @g32x16minsize(i32 inreg %x) nounwind minsize { +; CHECK-LINUX64-LABEL: g32x16minsize: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testw $-32640, %di # imm = 0x8080 +; CHECK-LINUX64-NEXT: je .LBB9_1 +; CHECK-LINUX64-NEXT: # %bb.2: # %no +; CHECK-LINUX64-NEXT: retq +; CHECK-LINUX64-NEXT: .LBB9_1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g32x16minsize: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testw $-32640, %cx # imm = 0x8080 +; CHECK-WIN32-64-NEXT: jne .LBB9_2 +; CHECK-WIN32-64-NEXT: # %bb.1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: .LBB9_2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g32x16minsize: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testw $-32640, %ax # imm = 0x8080 +; CHECK-X86-NEXT: je .LBB9_1 +; CHECK-X86-NEXT: # %bb.2: # %no +; CHECK-X86-NEXT: retl +; CHECK-X86-NEXT: .LBB9_1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: retl %t = and i32 %x, 32896 %s = icmp eq i32 %t, 0 br i1 %s, label %yes, label %no @@ -172,13 +434,42 @@ yes: no: ret void } -; CHECK-64-LABEL: g64x32: -; CHECK-64: testl $268468352, %[[A0D]] -; CHECK-64: ret -; CHECK-32-LABEL: g64x32: -; CHECK-32: testl $268468352, %eax -; CHECK-32: ret + define void @g64x32(i64 inreg %x) nounwind { +; CHECK-LINUX64-LABEL: g64x32: +; CHECK-LINUX64: # %bb.0: +; CHECK-LINUX64-NEXT: testl $268468352, %edi # imm = 0x10008080 +; CHECK-LINUX64-NEXT: je .LBB10_1 +; CHECK-LINUX64-NEXT: # %bb.2: # %no +; CHECK-LINUX64-NEXT: retq +; CHECK-LINUX64-NEXT: .LBB10_1: # %yes +; CHECK-LINUX64-NEXT: pushq %rax +; CHECK-LINUX64-NEXT: callq bar +; CHECK-LINUX64-NEXT: popq %rax +; CHECK-LINUX64-NEXT: retq +; +; CHECK-WIN32-64-LABEL: g64x32: +; CHECK-WIN32-64: # %bb.0: +; CHECK-WIN32-64-NEXT: subq $40, %rsp +; CHECK-WIN32-64-NEXT: testl $268468352, %ecx # imm = 0x10008080 +; CHECK-WIN32-64-NEXT: je .LBB10_1 +; CHECK-WIN32-64-NEXT: # %bb.2: # %no +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; CHECK-WIN32-64-NEXT: .LBB10_1: # %yes +; CHECK-WIN32-64-NEXT: callq bar +; CHECK-WIN32-64-NEXT: addq $40, %rsp +; CHECK-WIN32-64-NEXT: retq +; +; CHECK-X86-LABEL: g64x32: +; CHECK-X86: # %bb.0: +; CHECK-X86-NEXT: testl $268468352, %eax # imm = 0x10008080 +; CHECK-X86-NEXT: je .LBB10_1 +; CHECK-X86-NEXT: # %bb.2: # %no +; CHECK-X86-NEXT: retl +; CHECK-X86-NEXT: .LBB10_1: # %yes +; CHECK-X86-NEXT: calll bar +; CHECK-X86-NEXT: retl %t = and i64 %x, 268468352 %s = icmp eq i64 %t, 0 br i1 %s, label %yes, label %no |