Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / required-export-priority.mir
blob392519171cd710ac8ef4d19ccb7bed606fd3375f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1150 -run-pass=post-RA-hazard-rec %s -o - | FileCheck -check-prefixes=GFX1150 %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx11-generic -run-pass=post-RA-hazard-rec %s -o - | FileCheck -check-prefixes=GFX1150 %s
5 --- |
6   define amdgpu_ps void @end_of_shader() {
7     ret void
8   }
9   define amdgpu_ps void @end_of_shader_return_to_epilogue() {
10     ret void
11   }
12   define amdgpu_ps void @end_of_block() {
13     ret void
14   }
15   define amdgpu_ps void @start_of_block() {
16     ret void
17   }
18   define amdgpu_ps void @block_of_exports() {
19     ret void
20   }
21   define amdgpu_ps void @sparse_exports() {
22     ret void
23   }
24   define amdgpu_ps void @existing_setprio_1() {
25     ret void
26   }
27   define amdgpu_ps void @existing_setprio_2() {
28     ret void
29   }
30 ...
32 ---
33 name: end_of_shader
34 tracksRegLiveness: true
35 liveins:
36   - { reg: '$vgpr0' }
37 body: |
38   bb.0:
39     liveins: $vgpr0
40     ; GFX1150-LABEL: name: end_of_shader
41     ; GFX1150: liveins: $vgpr0
42     ; GFX1150-NEXT: {{  $}}
43     ; GFX1150-NEXT: S_SETPRIO 2
44     ; GFX1150-NEXT: EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
45     ; GFX1150-NEXT: S_SETPRIO 0
46     ; GFX1150-NEXT: S_NOP 0
47     ; GFX1150-NEXT: S_NOP 0
48     ; GFX1150-NEXT: S_ENDPGM 0
49     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
50     S_ENDPGM 0
51 ...
53 ---
54 name: end_of_shader_return_to_epilogue
55 tracksRegLiveness: true
56 liveins:
57   - { reg: '$vgpr0' }
58 body: |
59   bb.0:
60     liveins: $vgpr0
61     ; GFX1150-LABEL: name: end_of_shader_return_to_epilogue
62     ; GFX1150: liveins: $vgpr0
63     ; GFX1150-NEXT: {{  $}}
64     ; GFX1150-NEXT: S_SETPRIO 2
65     ; GFX1150-NEXT: EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
66     ; GFX1150-NEXT: S_SETPRIO 0
67     ; GFX1150-NEXT: S_WAITCNT_EXPCNT $sgpr_null, 0
68     ; GFX1150-NEXT: S_NOP 0
69     ; GFX1150-NEXT: S_NOP 0
70     ; GFX1150-NEXT: S_SETPRIO 2
71     ; GFX1150-NEXT: SI_RETURN_TO_EPILOG $vgpr0
72     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
73     SI_RETURN_TO_EPILOG $vgpr0
74 ...
76 ---
77 name: end_of_block
78 tracksRegLiveness: true
79 liveins:
80   - { reg: '$vgpr0' }
81 body: |
82   ; GFX1150-LABEL: name: end_of_block
83   ; GFX1150: bb.0:
84   ; GFX1150-NEXT:   successors: %bb.1(0x80000000)
85   ; GFX1150-NEXT:   liveins: $vgpr0
86   ; GFX1150-NEXT: {{  $}}
87   ; GFX1150-NEXT:   S_SETPRIO 2
88   ; GFX1150-NEXT:   EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
89   ; GFX1150-NEXT:   S_SETPRIO 0
90   ; GFX1150-NEXT:   S_WAITCNT_EXPCNT $sgpr_null, 0
91   ; GFX1150-NEXT:   S_NOP 0
92   ; GFX1150-NEXT:   S_NOP 0
93   ; GFX1150-NEXT:   S_SETPRIO 2
94   ; GFX1150-NEXT: {{  $}}
95   ; GFX1150-NEXT: bb.1:
96   ; GFX1150-NEXT:   S_ENDPGM 0
97   bb.0:
98     liveins: $vgpr0
99     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
101   bb.1:
102     S_ENDPGM 0
106 name: start_of_block
107 tracksRegLiveness: true
108 liveins:
109   - { reg: '$vgpr0' }
110 body: |
111   ; GFX1150-LABEL: name: start_of_block
112   ; GFX1150: bb.0:
113   ; GFX1150-NEXT:   successors: %bb.1(0x80000000)
114   ; GFX1150-NEXT:   liveins: $vgpr0
115   ; GFX1150-NEXT: {{  $}}
116   ; GFX1150-NEXT:   S_SETPRIO 2
117   ; GFX1150-NEXT: {{  $}}
118   ; GFX1150-NEXT: bb.1:
119   ; GFX1150-NEXT:   successors: %bb.2(0x80000000)
120   ; GFX1150-NEXT:   liveins: $vgpr0
121   ; GFX1150-NEXT: {{  $}}
122   ; GFX1150-NEXT:   EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
123   ; GFX1150-NEXT:   S_SETPRIO 0
124   ; GFX1150-NEXT:   S_WAITCNT_EXPCNT $sgpr_null, 0
125   ; GFX1150-NEXT:   S_NOP 0
126   ; GFX1150-NEXT:   S_NOP 0
127   ; GFX1150-NEXT:   S_SETPRIO 2
128   ; GFX1150-NEXT: {{  $}}
129   ; GFX1150-NEXT: bb.2:
130   ; GFX1150-NEXT:   S_ENDPGM 0
131   bb.0:
132     liveins: $vgpr0
134   bb.1:
135     liveins: $vgpr0
136     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
138   bb.2:
139     S_ENDPGM 0
143 name: block_of_exports
144 tracksRegLiveness: true
145 liveins:
146   - { reg: '$vgpr0' }
147 body: |
148   bb.0:
149     liveins: $vgpr0
150     ; GFX1150-LABEL: name: block_of_exports
151     ; GFX1150: liveins: $vgpr0
152     ; GFX1150-NEXT: {{  $}}
153     ; GFX1150-NEXT: S_SETPRIO 2
154     ; GFX1150-NEXT: EXP 2, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
155     ; GFX1150-NEXT: EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
156     ; GFX1150-NEXT: EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
157     ; GFX1150-NEXT: S_SETPRIO 0
158     ; GFX1150-NEXT: S_NOP 0
159     ; GFX1150-NEXT: S_NOP 0
160     ; GFX1150-NEXT: S_ENDPGM 0
161     EXP 2, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
162     EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
163     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
164     S_ENDPGM 0
168 name: sparse_exports
169 tracksRegLiveness: true
170 liveins:
171   - { reg: '$vgpr0' }
172 body: |
173   bb.0:
174     liveins: $vgpr0
175     ; GFX1150-LABEL: name: sparse_exports
176     ; GFX1150: liveins: $vgpr0
177     ; GFX1150-NEXT: {{  $}}
178     ; GFX1150-NEXT: S_SETPRIO 2
179     ; GFX1150-NEXT: EXP 2, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
180     ; GFX1150-NEXT: S_SETPRIO 0
181     ; GFX1150-NEXT: S_WAITCNT_EXPCNT $sgpr_null, 0
182     ; GFX1150-NEXT: S_NOP 0
183     ; GFX1150-NEXT: S_NOP 0
184     ; GFX1150-NEXT: S_SETPRIO 2
185     ; GFX1150-NEXT: $vgpr0 = V_AND_B32_e32 1, $vgpr0, implicit $exec
186     ; GFX1150-NEXT: EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
187     ; GFX1150-NEXT: S_SETPRIO 0
188     ; GFX1150-NEXT: S_WAITCNT_EXPCNT $sgpr_null, 0
189     ; GFX1150-NEXT: S_NOP 0
190     ; GFX1150-NEXT: S_NOP 0
191     ; GFX1150-NEXT: S_SETPRIO 2
192     ; GFX1150-NEXT: $vgpr0 = V_OR_B32_e32 2, $vgpr0, implicit $exec
193     ; GFX1150-NEXT: EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
194     ; GFX1150-NEXT: S_SETPRIO 0
195     ; GFX1150-NEXT: S_NOP 0
196     ; GFX1150-NEXT: S_NOP 0
197     ; GFX1150-NEXT: S_ENDPGM 0
198     EXP 2, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
199     $vgpr0 = V_AND_B32_e32 1, $vgpr0, implicit $exec
200     EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
201     $vgpr0 = V_OR_B32_e32 2, $vgpr0, implicit $exec
202     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
203     S_ENDPGM 0
207 name: existing_setprio_1
208 tracksRegLiveness: true
209 liveins:
210   - { reg: '$vgpr0' }
211 body: |
212   ; GFX1150-LABEL: name: existing_setprio_1
213   ; GFX1150: bb.0:
214   ; GFX1150-NEXT:   successors: %bb.1(0x80000000)
215   ; GFX1150-NEXT:   liveins: $vgpr0
216   ; GFX1150-NEXT: {{  $}}
217   ; GFX1150-NEXT:   S_SETPRIO 2
218   ; GFX1150-NEXT:   $vgpr0 = V_AND_B32_e32 1, $vgpr0, implicit $exec
219   ; GFX1150-NEXT: {{  $}}
220   ; GFX1150-NEXT: bb.1:
221   ; GFX1150-NEXT:   successors: %bb.2(0x80000000)
222   ; GFX1150-NEXT:   liveins: $vgpr0
223   ; GFX1150-NEXT: {{  $}}
224   ; GFX1150-NEXT:   S_SETPRIO 3
225   ; GFX1150-NEXT:   $vgpr0 = V_OR_B32_e32 2, $vgpr0, implicit $exec
226   ; GFX1150-NEXT:   S_SETPRIO 2
227   ; GFX1150-NEXT: {{  $}}
228   ; GFX1150-NEXT: bb.2:
229   ; GFX1150-NEXT:   successors: %bb.3(0x80000000)
230   ; GFX1150-NEXT:   liveins: $vgpr0
231   ; GFX1150-NEXT: {{  $}}
232   ; GFX1150-NEXT:   S_SETPRIO 3
233   ; GFX1150-NEXT:   $vgpr0 = V_OR_B32_e32 3, $vgpr0, implicit $exec
234   ; GFX1150-NEXT:   S_SETPRIO 2
235   ; GFX1150-NEXT: {{  $}}
236   ; GFX1150-NEXT: bb.3:
237   ; GFX1150-NEXT:   liveins: $vgpr0
238   ; GFX1150-NEXT: {{  $}}
239   ; GFX1150-NEXT:   EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
240   ; GFX1150-NEXT:   EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
241   ; GFX1150-NEXT:   S_SETPRIO 0
242   ; GFX1150-NEXT:   S_NOP 0
243   ; GFX1150-NEXT:   S_NOP 0
244   ; GFX1150-NEXT:   S_ENDPGM 0
245   bb.0:
246     liveins: $vgpr0
247     $vgpr0 = V_AND_B32_e32 1, $vgpr0, implicit $exec
249   bb.1:
250     liveins: $vgpr0
251     S_SETPRIO 3
252     $vgpr0 = V_OR_B32_e32 2, $vgpr0, implicit $exec
253     S_SETPRIO 0
255   bb.2:
256     liveins: $vgpr0
257     S_SETPRIO 1
258     $vgpr0 = V_OR_B32_e32 3, $vgpr0, implicit $exec
259     S_SETPRIO 0
261   bb.3:
262     liveins: $vgpr0
263     EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
264     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
265     S_ENDPGM 0
269 name: existing_setprio_2
270 tracksRegLiveness: true
271 liveins:
272   - { reg: '$vgpr0' }
273 body: |
274   bb.0:
275     liveins: $vgpr0
276     ; GFX1150-LABEL: name: existing_setprio_2
277     ; GFX1150: liveins: $vgpr0
278     ; GFX1150-NEXT: {{  $}}
279     ; GFX1150-NEXT: S_SETPRIO 3
280     ; GFX1150-NEXT: EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
281     ; GFX1150-NEXT: EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
282     ; GFX1150-NEXT: S_SETPRIO 0
283     ; GFX1150-NEXT: S_WAITCNT_EXPCNT $sgpr_null, 0
284     ; GFX1150-NEXT: S_NOP 0
285     ; GFX1150-NEXT: S_NOP 0
286     ; GFX1150-NEXT: S_SETPRIO 2
287     ; GFX1150-NEXT: S_SETPRIO 3
288     ; GFX1150-NEXT: S_ENDPGM 0
289     S_SETPRIO 3
290     EXP 1, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
291     EXP_DONE 0, $vgpr0, $vgpr0, $vgpr0, $vgpr0, -1, -1, 15, implicit $exec
292     S_SETPRIO 3
293     S_ENDPGM 0