Skip to content

Commit a0adadd

Browse files
committed
[X86] Add test coverage for #62145
1 parent 1e25b67 commit a0adadd

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

llvm/test/CodeGen/X86/pr62145.ll

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefixes=X86
3+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefixes=X64
4+
5+
define void @f(i64 %a, i64 %b) nounwind {
6+
; X86-LABEL: f:
7+
; X86: # %bb.0: # %entry
8+
; X86-NEXT: pushl %ebx
9+
; X86-NEXT: pushl %edi
10+
; X86-NEXT: pushl %esi
11+
; X86-NEXT: movl {{[0-9]+}}(%esp), %esi
12+
; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
13+
; X86-NEXT: movl $-65536, %ebx # imm = 0xFFFF0000
14+
; X86-NEXT: movl $-589824, %edi # imm = 0xFFF70000
15+
; X86-NEXT: cmpl $65527, %eax # imm = 0xFFF7
16+
; X86-NEXT: jne .LBB0_2
17+
; X86-NEXT: # %bb.1: # %if.then
18+
; X86-NEXT: calll ext1@PLT
19+
; X86-NEXT: .LBB0_2: # %if.end
20+
; X86-NEXT: calll ext2@PLT
21+
; X86-NEXT: andl %ebx, %esi
22+
; X86-NEXT: xorl %edi, %esi
23+
; X86-NEXT: jne .LBB0_3
24+
; X86-NEXT: # %bb.4: # %if.then2
25+
; X86-NEXT: popl %esi
26+
; X86-NEXT: popl %edi
27+
; X86-NEXT: popl %ebx
28+
; X86-NEXT: jmp ext1@PLT # TAILCALL
29+
; X86-NEXT: .LBB0_3: # %if.end3
30+
; X86-NEXT: popl %esi
31+
; X86-NEXT: popl %edi
32+
; X86-NEXT: popl %ebx
33+
; X86-NEXT: retl
34+
;
35+
; X64-LABEL: f:
36+
; X64: # %bb.0: # %entry
37+
; X64-NEXT: pushq %r15
38+
; X64-NEXT: pushq %r14
39+
; X64-NEXT: pushq %rbx
40+
; X64-NEXT: movq %rsi, %rbx
41+
; X64-NEXT: movabsq $-281474976710656, %r14 # imm = 0xFFFF000000000000
42+
; X64-NEXT: movabsq $-2533274790395904, %r15 # imm = 0xFFF7000000000000
43+
; X64-NEXT: shrq $48, %rdi
44+
; X64-NEXT: cmpl $65527, %edi # imm = 0xFFF7
45+
; X64-NEXT: jne .LBB0_2
46+
; X64-NEXT: # %bb.1: # %if.then
47+
; X64-NEXT: callq ext1@PLT
48+
; X64-NEXT: .LBB0_2: # %if.end
49+
; X64-NEXT: callq ext2@PLT
50+
; X64-NEXT: andq %r14, %rbx
51+
; X64-NEXT: cmpq %r15, %rbx
52+
; X64-NEXT: jne .LBB0_3
53+
; X64-NEXT: # %bb.4: # %if.then2
54+
; X64-NEXT: popq %rbx
55+
; X64-NEXT: popq %r14
56+
; X64-NEXT: popq %r15
57+
; X64-NEXT: jmp ext1@PLT # TAILCALL
58+
; X64-NEXT: .LBB0_3: # %if.end3
59+
; X64-NEXT: popq %rbx
60+
; X64-NEXT: popq %r14
61+
; X64-NEXT: popq %r15
62+
; X64-NEXT: retq
63+
entry:
64+
%shr.mask.i = and i64 %a, -281474976710656
65+
%cmp.i = icmp eq i64 %shr.mask.i, -2533274790395904
66+
br i1 %cmp.i, label %if.then, label %if.end
67+
68+
if.then:
69+
tail call void @ext1()
70+
br label %if.end
71+
72+
if.end:
73+
tail call void @ext2()
74+
%shr.mask.i4 = and i64 %b, -281474976710656
75+
%cmp.i5 = icmp eq i64 %shr.mask.i4, -2533274790395904
76+
br i1 %cmp.i5, label %if.then2, label %if.end3
77+
78+
if.then2:
79+
tail call void @ext1()
80+
br label %if.end3
81+
82+
if.end3:
83+
ret void
84+
}
85+
declare void @ext1()
86+
declare void @ext2()

0 commit comments

Comments
 (0)