Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / branchfolding-debug-invariant.mir
blob95c96d06393a2be25a431811d5b47ca6d2415759
1 # RUN: llc -mtriple=x86_64-- -run-pass branch-folder -O3 -o - %s | FileCheck %s
3 ---
4 name:            test1a
5 body:             |
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
21   bb.1:
22     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
23     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
24     RET 0
26   bb.2:
27     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
28     RET 0
29 ...
31 ---
32 name:            test1b
33 body:             |
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
55   bb.1:
56     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
57     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
58     RET 0
60   bb.2:
61     DBG_VALUE
62     DBG_VALUE
63     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
64     RET 0
65 ...
67 ---
68 name:            test2a
69 body:             |
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
89   bb.1:
90     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
91     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
92     RET 0
94   bb.2:
95     CFI_INSTRUCTION def_cfa_offset 8
96     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
97     RET 0
98 ...
101 name:            test2b
102 body:             |
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
124   bb.1:
125     MOV8mi $r12, 1, $noreg, 0, $noreg, 0
126     MOV8mi $r13, 1, $noreg, 0, $noreg, 0
127     RET 0
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