forked from OSchip/llvm-project
Regenerate test-shrink.ll test results. NFC
llvm-svn: 320602
This commit is contained in:
parent
2fbee4f869
commit
a402e51428
|
@ -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
|
||||
; 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
|
||||
|
||||
; CHECK-64-LABEL: g64xh:
|
||||
; CHECK-64: btl $11
|
||||
; CHECK-64: ret
|
||||
; CHECK-32-LABEL: g64xh:
|
||||
; CHECK-32: btl $11
|
||||
; CHECK-32: ret
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue