@@ -142,3 +142,116 @@ body: |
142142 $vgpr4 = V_MOV_B32_e32 0, implicit $exec
143143 renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
144144 ...
145+
146+ ---
147+ # GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0
148+ # GCN: V_MOV_B32
149+ # GCN-NEXT: S_NOP 1
150+ # GCN-NEXT: V_PERMLANE
151+ name : valu_write_vdst_read_permlane16_swap_0
152+ body : |
153+ bb.0:
154+ liveins: $vgpr1
155+ $vgpr0 = V_MOV_B32_e32 0, implicit $exec
156+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
157+ ...
158+
159+ ---
160+ # GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_1
161+ # GCN: V_MOV_B32
162+ # GCN-NEXT: S_NOP 1
163+ # GCN-NEXT: V_PERMLANE
164+ name : valu_write_vdst_read_permlane16_swap_1
165+ body : |
166+ bb.0:
167+ liveins: $vgpr0
168+ $vgpr1 = V_MOV_B32_e32 0, implicit $exec
169+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
170+ ...
171+
172+ ---
173+ # GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_0
174+ # GCN: V_MOV_B32
175+ # GCN-NEXT: S_NOP 1
176+ # GCN-NEXT: V_PERMLANE
177+ name : valu_write_vdst_read_permlane32_swap_0
178+ body : |
179+ bb.0:
180+ liveins: $vgpr1
181+ $vgpr0 = V_MOV_B32_e32 0, implicit $exec
182+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
183+ ...
184+
185+ ---
186+ # GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_1
187+ # GCN: V_MOV_B32
188+ # GCN-NEXT: S_NOP 1
189+ # GCN-NEXT: V_PERMLANE
190+ name : valu_write_vdst_read_permlane32_swap_1
191+ body : |
192+ bb.0:
193+ liveins: $vgpr0
194+ $vgpr1 = V_MOV_B32_e32 0, implicit $exec
195+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
196+ ...
197+
198+ ---
199+ # No hazard, write of other register
200+ # GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0_otherreg
201+ # GCN: V_MOV_B32
202+ # GCN-NEXT: V_PERMLANE
203+ name : valu_write_vdst_read_permlane16_swap_0_otherreg
204+ body : |
205+ bb.0:
206+ liveins: $vgpr1
207+ $vgpr2 = V_MOV_B32_e32 0, implicit $exec
208+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
209+ ...
210+
211+ ---
212+ # Both permlane hazards at once.
213+ # GCN-LABEL: name: valu_writes_vdst__vcmpx_write_exec__permlane32_swap
214+ # GCN: V_MOV_B32
215+ # GCN: V_CMPX_EQ_I32
216+ # GCN-NEXT: S_NOP 3
217+ # GCN-NEXT: V_PERMLANE
218+ name : valu_writes_vdst__vcmpx_write_exec__permlane32_swap
219+ body : |
220+ bb.0:
221+ liveins: $vgpr0, $vgpr2, $vgpr3
222+ $vgpr1 = V_MOV_B32_e32 0, implicit $exec
223+ $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
224+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
225+ ...
226+
227+ ---
228+ # GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdst___permlane32_swap
229+ # GCN: V_CMPX_EQ_I32
230+ # GCN: V_MOV_B32
231+ # GCN-NEXT: S_NOP 2
232+ # GCN-NEXT: V_PERMLANE
233+ name : vcmpx_write_exec__valu_writes_vdst___permlane32_swap
234+ body : |
235+ bb.0:
236+ liveins: $vgpr0, $vgpr2, $vgpr3
237+ $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
238+ $vgpr1 = V_MOV_B32_e32 0, implicit $exec
239+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
240+ ...
241+
242+ ---
243+ # GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdstx2___permlane32_swap
244+ # GCN: V_CMPX_EQ_I32
245+ # GCN: V_MOV_B32
246+ # GCN: V_MOV_B32
247+ # GCN-NEXT: S_NOP 1
248+ # GCN-NEXT: V_PERMLANE
249+ name : vcmpx_write_exec__valu_writes_vdstx2___permlane32_swap
250+ body : |
251+ bb.0:
252+ liveins: $vgpr0, $vgpr2, $vgpr3
253+ $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
254+ $vgpr1 = V_MOV_B32_e32 0, implicit $exec
255+ $vgpr0 = V_MOV_B32_e32 0, implicit $exec
256+ renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
257+ ...
0 commit comments