Skip to content

Commit a7d28f5

Browse files
committed
[X86] early-ifcvt-remarks.ll - add codegen checks
1 parent 837dc54 commit a7d28f5

File tree

1 file changed

+74
-9
lines changed

1 file changed

+74
-9
lines changed

llvm/test/CodeGen/X86/early-ifcvt-remarks.ll

Lines changed: 74 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
12
; RUN: llc %s -x86-early-ifcvt -pass-remarks='early-ifcvt' -pass-remarks-missed='early-ifcvt' -mcpu=k8 -o - 2>&1 | FileCheck %s
23
target triple = "x86_64-none-none"
34

@@ -6,7 +7,26 @@ target triple = "x86_64-none-none"
67
; CHECK-SAME: and the short leg adds another {{[0-9]+}} cycles{{s?}},
78
; CHECK-SAME: and the long leg adds another {{[0-9]+}} cycles{{s?}},
89
; CHECK-SAME: each staying under the threshold of {{[0-9]+}} cycles{{s?}}.
10+
11+
; CHECK: remark: <unknown>:0:0: did not if-convert branch:
12+
; CHECK-SAME: the condition would add {{[0-9]+}} cycles{{s?}} to the critical path,
13+
; CHECK-SAME: and the short leg would add another {{[0-9]+}} cycles{{s?}},
14+
; CHECK-SAME: and the long leg would add another {{[0-9]+}} cycles{{s?}} exceeding the limit of {{[0-9]+}} cycles{{s?}}.
15+
16+
; CHECK: remark: <unknown>:0:0: did not if-convert branch:
17+
; CHECK-SAME: the resulting critical path ({{[0-9]+}} cycles{{s?}})
18+
; CHECK-SAME: would extend the shorter leg's critical path ({{[0-9]+}} cycle{{s?}})
19+
; CHECK-SAME: by more than the threshold of {{[0-9]+}} cycles{{s?}},
20+
; CHECK-SAME: which cannot be hidden by available ILP.
21+
922
define i32 @mm1(i1 %pred, i32 %val) {
23+
; CHECK-LABEL: mm1:
24+
; CHECK: # %bb.0: # %entry
25+
; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
26+
; CHECK-NEXT: leal 1(%rsi), %eax
27+
; CHECK-NEXT: testb $1, %dil
28+
; CHECK-NEXT: cmovel %esi, %eax
29+
; CHECK-NEXT: retq
1030
entry:
1131
br i1 %pred, label %if.true, label %if.else
1232

@@ -19,11 +39,20 @@ if.else:
1939
ret i32 %res
2040
}
2141

22-
; CHECK: remark: <unknown>:0:0: did not if-convert branch:
23-
; CHECK-SAME: the condition would add {{[0-9]+}} cycles{{s?}} to the critical path,
24-
; CHECK-SAME: and the short leg would add another {{[0-9]+}} cycles{{s?}},
25-
; CHECK-SAME: and the long leg would add another {{[0-9]+}} cycles{{s?}} exceeding the limit of {{[0-9]+}} cycles{{s?}}.
2642
define i32 @mm2(i1 %pred, i32 %val, i32 %e1, i32 %e2, i32 %e3, i32 %e4, i32 %e5) {
43+
; CHECK-LABEL: mm2:
44+
; CHECK: # %bb.0: # %entry
45+
; CHECK-NEXT: movl %esi, %eax
46+
; CHECK-NEXT: testb $1, %dil
47+
; CHECK-NEXT: je .LBB1_2
48+
; CHECK-NEXT: # %bb.1: # %if.true
49+
; CHECK-NEXT: addl %eax, %edx
50+
; CHECK-NEXT: addl %ecx, %r8d
51+
; CHECK-NEXT: addl %edx, %r8d
52+
; CHECK-NEXT: addl %r8d, %r9d
53+
; CHECK-NEXT: movl %r9d, %eax
54+
; CHECK-NEXT: .LBB1_2: # %if.else
55+
; CHECK-NEXT: retq
2756
entry:
2857
br i1 %pred, label %if.true, label %if.else
2958

@@ -39,12 +68,48 @@ if.else:
3968
ret i32 %res
4069
}
4170

42-
; CHECK: did not if-convert branch:
43-
; CHECK-SAME: the resulting critical path ({{[0-9]+}} cycles{{s?}})
44-
; CHECK-SAME: would extend the shorter leg's critical path ({{[0-9]+}} cycle{{s?}})
45-
; CHECK-SAME: by more than the threshold of {{[0-9]+}} cycles{{s?}},
46-
; CHECK-SAME: which cannot be hidden by available ILP.
4771
define i32 @mm3(i1 %pred, i32 %val, i32 %e1, i128 %e2, i128 %e3, i128 %e4, i128 %e5) {
72+
; CHECK-LABEL: mm3:
73+
; CHECK: # %bb.0: # %entry
74+
; CHECK-NEXT: movl %esi, %eax
75+
; CHECK-NEXT: testb $1, %dil
76+
; CHECK-NEXT: movl %esi, %r10d
77+
; CHECK-NEXT: jne .LBB2_2
78+
; CHECK-NEXT: # %bb.1: # %if.false
79+
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rsi
80+
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rdi
81+
; CHECK-NEXT: imull %edx, %edx
82+
; CHECK-NEXT: movslq %edx, %r10
83+
; CHECK-NEXT: movq %rcx, %rax
84+
; CHECK-NEXT: movl %edx, %r9d
85+
; CHECK-NEXT: mulq %r10
86+
; CHECK-NEXT: imulq %r10, %r8
87+
; CHECK-NEXT: sarq $63, %r10
88+
; CHECK-NEXT: imulq %rcx, %r10
89+
; CHECK-NEXT: addq %rdx, %r8
90+
; CHECK-NEXT: addq %r10, %r8
91+
; CHECK-NEXT: addq {{[0-9]+}}(%rsp), %rax
92+
; CHECK-NEXT: adcq {{[0-9]+}}(%rsp), %r8
93+
; CHECK-NEXT: xorq {{[0-9]+}}(%rsp), %rdi
94+
; CHECK-NEXT: xorq %r8, %rdi
95+
; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r10
96+
; CHECK-NEXT: xorq %rsi, %r10
97+
; CHECK-NEXT: xorq %rax, %r10
98+
; CHECK-NEXT: movq %rdi, %rax
99+
; CHECK-NEXT: movl %esi, %ecx
100+
; CHECK-NEXT: sarq %cl, %rax
101+
; CHECK-NEXT: addq %rdi, %rdi
102+
; CHECK-NEXT: notb %cl
103+
; CHECK-NEXT: shlq %cl, %rdi
104+
; CHECK-NEXT: movl %esi, %ecx
105+
; CHECK-NEXT: shrq %cl, %r10
106+
; CHECK-NEXT: orq %rdi, %r10
107+
; CHECK-NEXT: testb $64, %sil
108+
; CHECK-NEXT: cmovneq %rax, %r10
109+
; CHECK-NEXT: movl %r9d, %eax
110+
; CHECK-NEXT: .LBB2_2: # %if.endif
111+
; CHECK-NEXT: addl %r10d, %eax
112+
; CHECK-NEXT: retq
48113
entry:
49114
br i1 %pred, label %if.true, label %if.false
50115

0 commit comments

Comments
 (0)