xref: /llvm-project/llvm/test/CodeGen/X86/branchfolding-debug-invariant.mir (revision 898de302919b3caf09b820757c58190cd8621255)
1# RUN: llc -mtriple=x86_64-- -run-pass branch-folder -O3 -o - %s | FileCheck %s
2
3---
4name:            test1a
5body:             |
6  ; CHECK-LABEL: name: test1a
7  ; CHECK: bb.0:
8  ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
9  ; CHECK:   JCC_1 %bb.2, 5, implicit $eflags
10  ; CHECK: bb.1:
11  ; CHECK:   successors: %bb.2(0x80000000)
12  ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
13  ; CHECK-NOT: RET
14  ; CHECK: bb.2:
15  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
16  ; CHECK:   RET 0
17  bb.0:
18    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
19    JCC_1 %bb.2, 5, implicit killed $eflags
20
21  bb.1:
22    MOV8mi $r12, 1, $noreg, 0, $noreg, 0
23    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
24    RET 0
25
26  bb.2:
27    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
28    RET 0
29...
30
31---
32name:            test1b
33body:             |
34
35  ; Verify that we get the same rewrites as in test1a when adding some
36  ; DBG_VALUE instructions in the mix.
37  ;
38  ; CHECK-LABEL: name: test1b
39  ; CHECK: bb.0:
40  ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
41  ; CHECK:   JCC_1 %bb.2, 5, implicit $eflags
42  ; CHECK: bb.1:
43  ; CHECK:   successors: %bb.2(0x80000000)
44  ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
45  ; CHECK-NOT: RET
46  ; CHECK: bb.2:
47  ; CHECK:   DBG_VALUE
48  ; CHECK:   DBG_VALUE
49  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
50  ; CHECK:   RET 0
51  bb.0:
52    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
53    JCC_1 %bb.2, 5, implicit killed $eflags
54
55  bb.1:
56    MOV8mi $r12, 1, $noreg, 0, $noreg, 0
57    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
58    RET 0
59
60  bb.2:
61    DBG_VALUE
62    DBG_VALUE
63    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
64    RET 0
65...
66
67---
68name:            test2a
69body:             |
70  ; CFI instruction currently prevents the rewrite here (although technically
71  ; I suppose that branch folding could let bb.1 fallthrough into bb.2 here).
72  ;
73  ; CHECK-LABEL: name: test2a
74  ; CHECK: bb.0:
75  ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
76  ; CHECK:   JCC_1 %bb.2, 5, implicit killed $eflags
77  ; CHECK: bb.1:
78  ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
79  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
80  ; CHECK:   RET 0
81  ; CHECK: bb.2:
82  ; CHECK:   CFI_INSTRUCTION def_cfa_offset 8
83  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
84  ; CHECK:   RET 0
85  bb.0:
86    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
87    JCC_1 %bb.2, 5, implicit killed $eflags
88
89  bb.1:
90    MOV8mi $r12, 1, $noreg, 0, $noreg, 0
91    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
92    RET 0
93
94  bb.2:
95    CFI_INSTRUCTION def_cfa_offset 8
96    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
97    RET 0
98...
99
100---
101name:            test2b
102body:             |
103  ; Verify that we get the same rewrites as in test1a when adding some
104  ; DBG_VALUE instructions in the mix.
105  ;
106  ; CHECK-LABEL: name: test2b
107  ; CHECK: bb.0:
108  ; CHECK:   TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
109  ; CHECK:   JCC_1 %bb.2, 5, implicit killed $eflags
110  ; CHECK: bb.1:
111  ; CHECK:   MOV8mi $r12, 1, $noreg, 0, $noreg, 0
112  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
113  ; CHECK:   RET 0
114  ; CHECK: bb.2:
115  ; CHECK:   DBG_VALUE
116  ; CHECK:   CFI_INSTRUCTION def_cfa_offset 8
117  ; CHECK:   DBG_VALUE
118  ; CHECK:   MOV8mi $r13, 1, $noreg, 0, $noreg, 0
119  ; CHECK:   RET 0
120  bb.0:
121    TEST8rr killed renamable $al, renamable $al, implicit-def $eflags
122    JCC_1 %bb.2, 5, implicit killed $eflags
123
124  bb.1:
125    MOV8mi $r12, 1, $noreg, 0, $noreg, 0
126    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
127    RET 0
128
129  bb.2:
130    DBG_VALUE
131    CFI_INSTRUCTION def_cfa_offset 8
132    DBG_VALUE
133    MOV8mi $r13, 1, $noreg, 0, $noreg, 0
134    RET 0
135...
136