summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAmaury Sechet <deadalnix@gmail.com>2017-12-13 18:04:57 +0000
committerAmaury Sechet <deadalnix@gmail.com>2017-12-13 18:04:57 +0000
commitc1f4787343460f0807fbe910e4ee1d6f11a01c16 (patch)
tree2b6688437b3badc1edcf7091ba191685b1785b56 /test
parent4cac1c471edc817552d46b7aec8256480ed1330e (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.ll431
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