[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / merge-m0.mir
blobbafbce05a8876eb9da0f4264ed77a6e8869afcf6
1 # RUN: llc -march=amdgcn -amdgpu-enable-merge-m0 -verify-machineinstrs -run-pass si-fix-sgpr-copies %s -o - | FileCheck -check-prefix=GCN %s
3 # GCN:    bb.0.entry:
4 # GCN:      SI_INIT_M0 -1
5 # GCN-NEXT: DS_WRITE_B32
6 # GCN-NEXT: DS_WRITE_B32
7 # GCN-NEXT: SI_INIT_M0 65536
8 # GCN-NEXT: DS_WRITE_B32
9 # GCN-NEXT: DS_WRITE_B32
10 # GCN-NEXT: SI_INIT_M0 -1
11 # GCN-NEXT: DS_WRITE_B32
12 # GCN-NEXT: SI_INIT_M0 65536
13 # GCN-NEXT: DS_WRITE_B32
15 # GCN:    bb.1:
16 # GCN:      SI_INIT_M0 -1
17 # GCN-NEXT: DS_WRITE_B32
18 # GCN-NEXT: DS_WRITE_B32
20 # GCN:    bb.2:
21 # GCN:      SI_INIT_M0 65536
22 # GCN-NEXT: DS_WRITE_B32
24 # GCN:    bb.3:
25 # GCN:      SI_INIT_M0 3
27 # GCN:    bb.4:
28 # GCN-NOT:  SI_INIT_M0
29 # GCN:      DS_WRITE_B32
30 # GCN-NEXT: SI_INIT_M0 4
31 # GCN-NEXT: DS_WRITE_B32
33 # GCN:    bb.5:
34 # GCN-NOT: SI_INIT_M0
35 # GCN:     DS_WRITE_B32
36 # GCN-NEXT: SI_INIT_M0 4
37 # GCN-NEXT: DS_WRITE_B32
39 # GCN:    bb.6:
40 # GCN:      SI_INIT_M0 -1,
41 # GCN-NEXT: DS_WRITE_B32
42 # GCN:      SI_INIT_M0 %2
43 # GCN-NEXT: DS_WRITE_B32
44 # GCN-NEXT: SI_INIT_M0 %2
45 # GCN-NEXT: DS_WRITE_B32
46 # GCN-NEXT: SI_INIT_M0 -1
47 # GCN-NEXT: DS_WRITE_B32
49 ---
50 name:            merge-m0-many-init
51 registers:
52   - { id: 0, class: vgpr_32 }
53   - { id: 1, class: vgpr_32 }
54   - { id: 2, class: sreg_32_xm0 }
55 body:             |
56   bb.0.entry:
57     successors: %bb.1, %bb.2
59     %0 = IMPLICIT_DEF
60     %1 = IMPLICIT_DEF
61     SI_INIT_M0 -1, implicit-def $m0
62     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
63     SI_INIT_M0 -1, implicit-def $m0
64     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
65     SI_INIT_M0 65536, implicit-def $m0
66     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
67     SI_INIT_M0 65536, implicit-def $m0
68     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
69     SI_INIT_M0 -1, implicit-def $m0
70     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
71     SI_INIT_M0 65536, implicit-def $m0
72     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
73     S_CBRANCH_VCCZ %bb.1, implicit undef $vcc
74     S_BRANCH %bb.2
76   bb.1:
77     successors: %bb.2
78     SI_INIT_M0 -1, implicit-def $m0
79     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
80     SI_INIT_M0 -1, implicit-def $m0
81     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
82     S_BRANCH %bb.2
84   bb.2:
85     successors: %bb.3
86     SI_INIT_M0 65536, implicit-def $m0
87     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
88     S_BRANCH %bb.3
90   bb.3:
91     successors: %bb.4, %bb.5
92     S_CBRANCH_VCCZ %bb.4, implicit undef $vcc
93     S_BRANCH %bb.5
95   bb.4:
96     successors: %bb.6
97     SI_INIT_M0 3, implicit-def $m0
98     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
99     SI_INIT_M0 4, implicit-def $m0
100     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
101     S_BRANCH %bb.6
103   bb.5:
104     successors: %bb.6
105     SI_INIT_M0 3, implicit-def $m0
106     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
107     SI_INIT_M0 4, implicit-def $m0
108     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
109     S_BRANCH %bb.6
111   bb.6:
112     successors: %bb.0.entry, %bb.6
113     SI_INIT_M0 -1, implicit-def $m0
114     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
115     %2 = IMPLICIT_DEF
116     SI_INIT_M0 %2, implicit-def $m0
117     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
118     SI_INIT_M0 %2, implicit-def $m0
119     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
120     SI_INIT_M0 -1, implicit-def $m0
121     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
122     S_CBRANCH_VCCZ %bb.6, implicit undef $vcc
123     S_BRANCH %bb.0.entry
127 # GCN:    bb.0.entry:
128 # GCN:      SI_INIT_M0 65536
129 # GCN-NEXT: DS_WRITE_B32
131 #GCN:     bb.1:
132 #GCN-NOT:   SI_INIT_M0 65536
133 #GCN-NOT:   SI_INIT_M0 -1
135 #GCN:     bb.2:
136 #GCN:       SI_INIT_M0 -1
138 #GCN:     bb.3:
139 #GCN:       SI_INIT_M0 -1
142 name:            merge-m0-dont-hoist-past-init-with-different-initializer
143 registers:
144   - { id: 0, class: vgpr_32 }
145   - { id: 1, class: vgpr_32 }
146 body:             |
147   bb.0.entry:
148     successors: %bb.1
150     %0 = IMPLICIT_DEF
151     %1 = IMPLICIT_DEF
152     SI_INIT_M0 65536, implicit-def $m0
153     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
154     S_BRANCH %bb.1
156   bb.1:
157     successors: %bb.2, %bb.3
159     SI_INIT_M0 65536, implicit-def $m0
160     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
161     S_CBRANCH_VCCZ %bb.2, implicit undef $vcc
162     S_BRANCH %bb.3
164   bb.2:
165     successors: %bb.4
167     SI_INIT_M0 -1, implicit-def $m0
168     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
169     S_BRANCH %bb.4
171   bb.3:
172     successors: %bb.4
174     SI_INIT_M0 -1, implicit-def $m0
175     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
176     S_BRANCH %bb.4
178   bb.4:
179     S_ENDPGM 0
182 # GCN:    bb.0.entry:
183 # GCN-NOT:  SI_INIT_M0
184 # GCN:      S_OR_B64
185 # GCN-NEXT: SI_INIT_M0
187 #GCN:     bb.1:
188 #GCN-NOT:   SI_INIT_M0 -1
190 #GCN:     bb.2:
191 #GCN-NOT:   SI_INIT_MO -1
194 name:            merge-m0-after-prologue
195 registers:
196   - { id: 0, class: vgpr_32 }
197   - { id: 1, class: vgpr_32 }
198 body:             |
199   bb.0.entry:
200     successors: %bb.1, %bb.2
201     liveins: $sgpr0_sgpr1
203     $exec = S_OR_B64 $exec, killed $sgpr0_sgpr1, implicit-def $scc
204     %0 = IMPLICIT_DEF
205     %1 = IMPLICIT_DEF
206     S_CBRANCH_VCCZ %bb.1, implicit undef $vcc
207     S_BRANCH %bb.2
209   bb.1:
210     successors: %bb.3
212     SI_INIT_M0 -1, implicit-def $m0
213     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
214     S_BRANCH %bb.3
216   bb.2:
217     successors: %bb.3
219     SI_INIT_M0 -1, implicit-def $m0
220     DS_WRITE_B32 %0, %1, 0, 0, implicit $m0, implicit $exec
221     S_BRANCH %bb.3
223   bb.3:
224     S_ENDPGM 0