1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=gfx908 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX908 %s
3# RUN: llc -march=amdgcn -mcpu=gfx90a -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX90A %s
4
5---
6name: copy_v64_to_v64
7tracksRegLiveness: true
8body: |
9  bb.0:
10    liveins: $vgpr2_vgpr3
11    ; GFX908-LABEL: name: copy_v64_to_v64
12    ; GFX908: liveins: $vgpr2_vgpr3
13    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
14    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
15    ; GFX90A-LABEL: name: copy_v64_to_v64
16    ; GFX90A: liveins: $vgpr2_vgpr3
17    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
18    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
19...
20
21---
22name: copy_s64_to_v64
23tracksRegLiveness: true
24body: |
25  bb.0:
26    liveins: $sgpr2_sgpr3
27    ; GFX908-LABEL: name: copy_s64_to_v64
28    ; GFX908: liveins: $sgpr2_sgpr3
29    ; GFX908: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3
30    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec
31    ; GFX90A-LABEL: name: copy_s64_to_v64
32    ; GFX90A: liveins: $sgpr2_sgpr3
33    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $sgpr2_sgpr3, 12, $sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec
34    $vgpr0_vgpr1 = COPY killed $sgpr2_sgpr3, implicit $exec
35...
36
37---
38name: copy_a64_to_v64
39tracksRegLiveness: true
40body: |
41  bb.0:
42    liveins: $agpr2_agpr3
43    ; GFX908-LABEL: name: copy_a64_to_v64
44    ; GFX908: liveins: $agpr2_agpr3
45    ; GFX908: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
46    ; GFX908: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
47    ; GFX90A-LABEL: name: copy_a64_to_v64
48    ; GFX90A: liveins: $agpr2_agpr3
49    ; GFX90A: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
50    ; GFX90A: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
51    $vgpr0_vgpr1 = COPY killed $agpr2_agpr3, implicit $exec
52...
53
54---
55name: copy_v128_to_v128_fwd
56tracksRegLiveness: true
57body: |
58  bb.0:
59    liveins: $vgpr2_vgpr3_vgpr4_vgpr5
60    ; GFX908-LABEL: name: copy_v128_to_v128_fwd
61    ; GFX908: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
62    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5
63    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
64    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
65    ; GFX908: $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
66    ; GFX90A-LABEL: name: copy_v128_to_v128_fwd
67    ; GFX90A: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
68    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3
69    ; GFX90A: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr4_vgpr5, 12, $vgpr4_vgpr5, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
70    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
71...
72
73---
74name: copy_v128_to_v128_back
75tracksRegLiveness: true
76body: |
77  bb.0:
78    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
79    ; GFX908-LABEL: name: copy_v128_to_v128_back
80    ; GFX908: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
81    ; GFX908: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3
82    ; GFX908: $vgpr4 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
83    ; GFX908: $vgpr3 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
84    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
85    ; GFX90A-LABEL: name: copy_v128_to_v128_back
86    ; GFX90A: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
87    ; GFX90A: $vgpr4_vgpr5 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5
88    ; GFX90A: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr0_vgpr1, 12, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
89    $vgpr2_vgpr3_vgpr4_vgpr5 = COPY killed $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
90...
91
92---
93name: copy_v96_to_v96
94tracksRegLiveness: true
95body: |
96  bb.0:
97    liveins: $vgpr4_vgpr5_vgpr6
98    ; GFX908-LABEL: name: copy_v96_to_v96
99    ; GFX908: liveins: $vgpr4_vgpr5_vgpr6
100    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
101    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
102    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
103    ; GFX90A-LABEL: name: copy_v96_to_v96
104    ; GFX90A: liveins: $vgpr4_vgpr5_vgpr6
105    ; GFX90A: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
106    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
107    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
108    $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr4_vgpr5_vgpr6, implicit $exec
109...
110
111---
112name: copy_v64_to_v64_undef_sub0
113tracksRegLiveness: true
114body: |
115  bb.0:
116    liveins: $vgpr3
117    ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub0
118    ; GFX908: liveins: $vgpr3
119    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
120    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
121    ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub0
122    ; GFX90A: liveins: $vgpr3
123    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
124    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
125...
126
127---
128name: copy_v64_to_v64_undef_sub1
129tracksRegLiveness: true
130body: |
131  bb.0:
132    liveins: $vgpr2
133    ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub1
134    ; GFX908: liveins: $vgpr2
135    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
136    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
137    ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub1
138    ; GFX90A: liveins: $vgpr2
139    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $vgpr2_vgpr3, 12, $vgpr2_vgpr3, 0, 0, 0, 0, 0, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
140    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
141...
142
143---
144name: copy_s128_to_v128_killed
145tracksRegLiveness: true
146body: |
147  bb.0:
148    liveins: $sgpr4_sgpr5_sgpr6_sgpr7
149    ; GFX908-LABEL: name: copy_s128_to_v128_killed
150    ; GFX908: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
151    ; GFX908: $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7
152    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
153    ; GFX908: $vgpr2 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
154    ; GFX908: $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7
155    ; GFX90A-LABEL: name: copy_s128_to_v128_killed
156    ; GFX90A: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
157    ; GFX90A: $vgpr0_vgpr1 = V_PK_MOV_B32 8, $sgpr4_sgpr5, 12, $sgpr4_sgpr5, 0, 0, 0, 0, 0, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3
158    ; GFX90A: $vgpr2_vgpr3 = V_PK_MOV_B32 8, $sgpr6_sgpr7, 12, $sgpr6_sgpr7, 0, 0, 0, 0, 0, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7
159    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $sgpr4_sgpr5_sgpr6_sgpr7
160...
161
162---
163name: copy_v64_to_v64_unaligned
164tracksRegLiveness: true
165body: |
166  bb.0:
167    liveins: $vgpr2_vgpr3
168    ; GFX908-LABEL: name: copy_v64_to_v64_unaligned
169    ; GFX908: liveins: $vgpr2_vgpr3
170    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
171    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
172    ; GFX90A-LABEL: name: copy_v64_to_v64_unaligned
173    ; GFX90A: liveins: $vgpr2_vgpr3
174    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
175    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
176    $vgpr1_vgpr2 = COPY killed $vgpr2_vgpr3, implicit $exec
177...
178
179---
180name: copy_v64_unaligned_to_v64
181tracksRegLiveness: true
182body: |
183  bb.0:
184    liveins: $vgpr3_vgpr4
185    ; GFX908-LABEL: name: copy_v64_unaligned_to_v64
186    ; GFX908: liveins: $vgpr3_vgpr4
187    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
188    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
189    ; GFX90A-LABEL: name: copy_v64_unaligned_to_v64
190    ; GFX90A: liveins: $vgpr3_vgpr4
191    ; GFX90A: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
192    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
193    $vgpr0_vgpr1 = COPY killed $vgpr3_vgpr4, implicit $exec
194...
195
196---
197name: copy_v128_to_v128_unaligned
198tracksRegLiveness: true
199body: |
200  bb.0:
201    liveins: $vgpr8_vgpr9_vgpr10_vgpr11
202    ; GFX908-LABEL: name: copy_v128_to_v128_unaligned
203    ; GFX908: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
204    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
205    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
206    ; GFX908: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
207    ; GFX908: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
208    ; GFX90A-LABEL: name: copy_v128_to_v128_unaligned
209    ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
210    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
211    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
212    ; GFX90A: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
213    ; GFX90A: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
214    $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
215...
216
217---
218name: copy_v128_unaligned_to_v128
219tracksRegLiveness: true
220body: |
221  bb.0:
222    liveins: $vgpr7_vgpr8_vgpr9_vgpr10
223    ; GFX908-LABEL: name: copy_v128_unaligned_to_v128
224    ; GFX908: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
225    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
226    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
227    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
228    ; GFX908: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
229    ; GFX90A-LABEL: name: copy_v128_unaligned_to_v128
230    ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
231    ; GFX90A: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
232    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
233    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
234    ; GFX90A: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
235    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
236...
237
238---
239name: copy_s64_to_v64_unaligned
240tracksRegLiveness: true
241body: |
242  bb.0:
243    liveins: $sgpr8_sgpr9
244    ; GFX908-LABEL: name: copy_s64_to_v64_unaligned
245    ; GFX908: liveins: $sgpr8_sgpr9
246    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
247    ; GFX908: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
248    ; GFX90A-LABEL: name: copy_s64_to_v64_unaligned
249    ; GFX90A: liveins: $sgpr8_sgpr9
250    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
251    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
252    $vgpr1_vgpr2 = COPY killed $sgpr8_sgpr9, implicit $exec
253...
254
255---
256name: copy_s128_to_v128_unaligned
257tracksRegLiveness: true
258body: |
259  bb.0:
260    liveins: $sgpr8_sgpr9_sgpr10_sgpr11
261    ; GFX908-LABEL: name: copy_s128_to_v128_unaligned
262    ; GFX908: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
263    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
264    ; GFX908: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
265    ; GFX908: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
266    ; GFX908: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
267    ; GFX90A-LABEL: name: copy_s128_to_v128_unaligned
268    ; GFX90A: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
269    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
270    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
271    ; GFX90A: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
272    ; GFX90A: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
273    $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
274...
275
276---
277name: copy_v96_to_v96_unaligned
278tracksRegLiveness: true
279body: |
280  bb.0:
281    liveins: $vgpr8_vgpr9_vgpr10
282    ; GFX908-LABEL: name: copy_v96_to_v96_unaligned
283    ; GFX908: liveins: $vgpr8_vgpr9_vgpr10
284    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
285    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
286    ; GFX908: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
287    ; GFX90A-LABEL: name: copy_v96_to_v96_unaligned
288    ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10
289    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
290    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
291    ; GFX90A: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
292    $vgpr1_vgpr2_vgpr3 = COPY killed $vgpr8_vgpr9_vgpr10, implicit $exec
293...
294
295---
296name: copy_v96_unaligned_to_v96
297tracksRegLiveness: true
298body: |
299  bb.0:
300    liveins: $vgpr7_vgpr8_vgpr9
301    ; GFX908-LABEL: name: copy_v96_unaligned_to_v96
302    ; GFX908: liveins: $vgpr7_vgpr8_vgpr9
303    ; GFX908: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
304    ; GFX908: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
305    ; GFX908: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
306    ; GFX90A-LABEL: name: copy_v96_unaligned_to_v96
307    ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9
308    ; GFX90A: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
309    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
310    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
311    $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr7_vgpr8_vgpr9, implicit $exec
312...
313
314---
315name: copy_s96_to_v96
316tracksRegLiveness: true
317body: |
318  bb.0:
319    liveins: $sgpr0_sgpr1_sgpr2
320    ; GFX908-LABEL: name: copy_s96_to_v96
321    ; GFX908: liveins: $sgpr0_sgpr1_sgpr2
322    ; GFX908: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
323    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
324    ; GFX908: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
325    ; GFX90A-LABEL: name: copy_s96_to_v96
326    ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2
327    ; GFX90A: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
328    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
329    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
330    $vgpr0_vgpr1_vgpr2 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec
331...
332
333---
334name: copy_s96_to_v96_unaligned
335tracksRegLiveness: true
336body: |
337  bb.0:
338    liveins: $sgpr0_sgpr1_sgpr2
339    ; GFX908-LABEL: name: copy_s96_to_v96_unaligned
340    ; GFX908: liveins: $sgpr0_sgpr1_sgpr2
341    ; GFX908: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
342    ; GFX908: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
343    ; GFX908: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
344    ; GFX90A-LABEL: name: copy_s96_to_v96_unaligned
345    ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2
346    ; GFX90A: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
347    ; GFX90A: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
348    ; GFX90A: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
349    $vgpr1_vgpr2_vgpr3 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec
350...
351