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# RUN: llc -march=amdgcn -mcpu=gfx940 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX940 %s
5# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s
6# RUN: llc -march=amdgcn -mcpu=gfx1100 -run-pass postrapseudos -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s
7
8---
9name: copy_v64_to_v64
10tracksRegLiveness: true
11body: |
12  bb.0:
13    liveins: $vgpr2_vgpr3
14    ; GFX908-LABEL: name: copy_v64_to_v64
15    ; GFX908: liveins: $vgpr2_vgpr3
16    ; GFX908-NEXT: {{  $}}
17    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
18    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
19    ; GFX90A-LABEL: name: copy_v64_to_v64
20    ; GFX90A: liveins: $vgpr2_vgpr3
21    ; GFX90A-NEXT: {{  $}}
22    ; GFX90A-NEXT: $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
23    ; GFX940-LABEL: name: copy_v64_to_v64
24    ; GFX940: liveins: $vgpr2_vgpr3
25    ; GFX940-NEXT: {{  $}}
26    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec
27    ; GFX10-LABEL: name: copy_v64_to_v64
28    ; GFX10: liveins: $vgpr2_vgpr3
29    ; GFX10-NEXT: {{  $}}
30    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
31    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
32    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
33...
34
35---
36name: copy_s64_to_v64
37tracksRegLiveness: true
38body: |
39  bb.0:
40    liveins: $sgpr2_sgpr3
41    ; GFX908-LABEL: name: copy_s64_to_v64
42    ; GFX908: liveins: $sgpr2_sgpr3
43    ; GFX908-NEXT: {{  $}}
44    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3
45    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec
46    ; GFX90A-LABEL: name: copy_s64_to_v64
47    ; GFX90A: liveins: $sgpr2_sgpr3
48    ; GFX90A-NEXT: {{  $}}
49    ; GFX90A-NEXT: $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
50    ; GFX940-LABEL: name: copy_s64_to_v64
51    ; GFX940: liveins: $sgpr2_sgpr3
52    ; GFX940-NEXT: {{  $}}
53    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $sgpr2_sgpr3, implicit $exec, implicit $exec
54    ; GFX10-LABEL: name: copy_s64_to_v64
55    ; GFX10: liveins: $sgpr2_sgpr3
56    ; GFX10-NEXT: {{  $}}
57    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr3
58    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $exec
59    $vgpr0_vgpr1 = COPY killed $sgpr2_sgpr3, implicit $exec
60...
61
62---
63name: copy_a64_to_v64
64tracksRegLiveness: true
65body: |
66  bb.0:
67    liveins: $agpr2_agpr3
68    ; GFX908-LABEL: name: copy_a64_to_v64
69    ; GFX908: liveins: $agpr2_agpr3
70    ; GFX908-NEXT: {{  $}}
71    ; GFX908-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
72    ; GFX908-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
73    ; GFX90A-LABEL: name: copy_a64_to_v64
74    ; GFX90A: liveins: $agpr2_agpr3
75    ; GFX90A-NEXT: {{  $}}
76    ; GFX90A-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
77    ; GFX90A-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
78    ; GFX940-LABEL: name: copy_a64_to_v64
79    ; GFX940: liveins: $agpr2_agpr3
80    ; GFX940-NEXT: {{  $}}
81    ; GFX940-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
82    ; GFX940-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
83    ; GFX10-LABEL: name: copy_a64_to_v64
84    ; GFX10: liveins: $agpr2_agpr3
85    ; GFX10-NEXT: {{  $}}
86    ; GFX10-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 $agpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $agpr2_agpr3
87    ; GFX10-NEXT: $vgpr1 = V_ACCVGPR_READ_B32_e64 $agpr3, implicit $exec, implicit killed $agpr2_agpr3, implicit $exec
88    $vgpr0_vgpr1 = COPY killed $agpr2_agpr3, implicit $exec
89...
90
91---
92name: copy_v128_to_v128_fwd
93tracksRegLiveness: true
94body: |
95  bb.0:
96    liveins: $vgpr2_vgpr3_vgpr4_vgpr5
97    ; GFX908-LABEL: name: copy_v128_to_v128_fwd
98    ; GFX908: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
99    ; GFX908-NEXT: {{  $}}
100    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5
101    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
102    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
103    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
104    ; GFX90A-LABEL: name: copy_v128_to_v128_fwd
105    ; GFX90A: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
106    ; GFX90A-NEXT: {{  $}}
107    ; GFX90A-NEXT: $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
108    ; GFX90A-NEXT: $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
109    ; GFX940-LABEL: name: copy_v128_to_v128_fwd
110    ; GFX940: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
111    ; GFX940-NEXT: {{  $}}
112    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 $vgpr2_vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5
113    ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $vgpr4_vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
114    ; GFX10-LABEL: name: copy_v128_to_v128_fwd
115    ; GFX10: liveins: $vgpr2_vgpr3_vgpr4_vgpr5
116    ; GFX10-NEXT: {{  $}}
117    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr2_vgpr3_vgpr4_vgpr5
118    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
119    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5
120    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
121    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr2_vgpr3_vgpr4_vgpr5, implicit $exec
122...
123
124---
125name: copy_v128_to_v128_back
126tracksRegLiveness: true
127body: |
128  bb.0:
129    liveins: $vgpr0_vgpr1_vgpr2_vgpr3
130    ; GFX908-LABEL: name: copy_v128_to_v128_back
131    ; GFX908: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
132    ; GFX908-NEXT: {{  $}}
133    ; GFX908-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3
134    ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
135    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
136    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
137    ; GFX90A-LABEL: name: copy_v128_to_v128_back
138    ; GFX90A: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
139    ; GFX90A-NEXT: {{  $}}
140    ; GFX90A-NEXT: $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
141    ; GFX90A-NEXT: $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
142    ; GFX940-LABEL: name: copy_v128_to_v128_back
143    ; GFX940: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
144    ; GFX940-NEXT: {{  $}}
145    ; GFX940-NEXT: $vgpr4_vgpr5 = V_MOV_B64_e32 $vgpr2_vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3
146    ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $vgpr0_vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
147    ; GFX10-LABEL: name: copy_v128_to_v128_back
148    ; GFX10: liveins: $vgpr0_vgpr1_vgpr2_vgpr3
149    ; GFX10-NEXT: {{  $}}
150    ; GFX10-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr2_vgpr3_vgpr4_vgpr5, implicit $vgpr0_vgpr1_vgpr2_vgpr3
151    ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
152    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3
153    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
154    $vgpr2_vgpr3_vgpr4_vgpr5 = COPY killed $vgpr0_vgpr1_vgpr2_vgpr3, implicit $exec
155...
156
157---
158name: copy_v96_to_v96
159tracksRegLiveness: true
160body: |
161  bb.0:
162    liveins: $vgpr4_vgpr5_vgpr6
163    ; GFX908-LABEL: name: copy_v96_to_v96
164    ; GFX908: liveins: $vgpr4_vgpr5_vgpr6
165    ; GFX908-NEXT: {{  $}}
166    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
167    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
168    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
169    ; GFX90A-LABEL: name: copy_v96_to_v96
170    ; GFX90A: liveins: $vgpr4_vgpr5_vgpr6
171    ; GFX90A-NEXT: {{  $}}
172    ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
173    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
174    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
175    ; GFX940-LABEL: name: copy_v96_to_v96
176    ; GFX940: liveins: $vgpr4_vgpr5_vgpr6
177    ; GFX940-NEXT: {{  $}}
178    ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
179    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
180    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
181    ; GFX10-LABEL: name: copy_v96_to_v96
182    ; GFX10: liveins: $vgpr4_vgpr5_vgpr6
183    ; GFX10-NEXT: {{  $}}
184    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr4_vgpr5_vgpr6
185    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr5, implicit $exec, implicit $vgpr4_vgpr5_vgpr6
186    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr6, implicit $exec, implicit killed $vgpr4_vgpr5_vgpr6, implicit $exec
187    $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr4_vgpr5_vgpr6, implicit $exec
188...
189
190---
191name: copy_v64_to_v64_undef_sub0
192tracksRegLiveness: true
193body: |
194  bb.0:
195    liveins: $vgpr3
196    ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub0
197    ; GFX908: liveins: $vgpr3
198    ; GFX908-NEXT: {{  $}}
199    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
200    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
201    ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub0
202    ; GFX90A: liveins: $vgpr3
203    ; GFX90A-NEXT: {{  $}}
204    ; GFX90A-NEXT: $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
205    ; GFX940-LABEL: name: copy_v64_to_v64_undef_sub0
206    ; GFX940: liveins: $vgpr3
207    ; GFX940-NEXT: {{  $}}
208    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec
209    ; GFX10-LABEL: name: copy_v64_to_v64_undef_sub0
210    ; GFX10: liveins: $vgpr3
211    ; GFX10-NEXT: {{  $}}
212    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
213    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
214    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
215...
216
217---
218name: copy_v64_to_v64_undef_sub1
219tracksRegLiveness: true
220body: |
221  bb.0:
222    liveins: $vgpr2
223    ; GFX908-LABEL: name: copy_v64_to_v64_undef_sub1
224    ; GFX908: liveins: $vgpr2
225    ; GFX908-NEXT: {{  $}}
226    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
227    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
228    ; GFX90A-LABEL: name: copy_v64_to_v64_undef_sub1
229    ; GFX90A: liveins: $vgpr2
230    ; GFX90A-NEXT: {{  $}}
231    ; GFX90A-NEXT: $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
232    ; GFX940-LABEL: name: copy_v64_to_v64_undef_sub1
233    ; GFX940: liveins: $vgpr2
234    ; GFX940-NEXT: {{  $}}
235    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 killed $vgpr2_vgpr3, implicit $exec, implicit $exec
236    ; GFX10-LABEL: name: copy_v64_to_v64_undef_sub1
237    ; GFX10: liveins: $vgpr2
238    ; GFX10-NEXT: {{  $}}
239    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr2_vgpr3
240    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit killed $vgpr2_vgpr3, implicit $exec
241    $vgpr0_vgpr1 = COPY killed $vgpr2_vgpr3, implicit $exec
242...
243
244---
245name: copy_s128_to_v128_killed
246tracksRegLiveness: true
247body: |
248  bb.0:
249    liveins: $sgpr4_sgpr5_sgpr6_sgpr7
250    ; GFX908-LABEL: name: copy_s128_to_v128_killed
251    ; GFX908: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
252    ; GFX908-NEXT: {{  $}}
253    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7
254    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
255    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
256    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7
257    ; GFX90A-LABEL: name: copy_s128_to_v128_killed
258    ; GFX90A: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
259    ; GFX90A-NEXT: {{  $}}
260    ; GFX90A-NEXT: $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
261    ; GFX90A-NEXT: $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
262    ; GFX940-LABEL: name: copy_s128_to_v128_killed
263    ; GFX940: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
264    ; GFX940-NEXT: {{  $}}
265    ; GFX940-NEXT: $vgpr0_vgpr1 = V_MOV_B64_e32 $sgpr4_sgpr5, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7
266    ; GFX940-NEXT: $vgpr2_vgpr3 = V_MOV_B64_e32 $sgpr6_sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7
267    ; GFX10-LABEL: name: copy_s128_to_v128_killed
268    ; GFX10: liveins: $sgpr4_sgpr5_sgpr6_sgpr7
269    ; GFX10-NEXT: {{  $}}
270    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $sgpr4_sgpr5_sgpr6_sgpr7
271    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr5, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
272    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr6, implicit $exec, implicit $sgpr4_sgpr5_sgpr6_sgpr7
273    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec, implicit killed $sgpr4_sgpr5_sgpr6_sgpr7
274    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $sgpr4_sgpr5_sgpr6_sgpr7
275...
276
277---
278name: copy_v64_to_v64_unaligned
279tracksRegLiveness: true
280body: |
281  bb.0:
282    liveins: $vgpr2_vgpr3
283    ; GFX908-LABEL: name: copy_v64_to_v64_unaligned
284    ; GFX908: liveins: $vgpr2_vgpr3
285    ; GFX908-NEXT: {{  $}}
286    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
287    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
288    ; GFX90A-LABEL: name: copy_v64_to_v64_unaligned
289    ; GFX90A: liveins: $vgpr2_vgpr3
290    ; GFX90A-NEXT: {{  $}}
291    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
292    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
293    ; GFX940-LABEL: name: copy_v64_to_v64_unaligned
294    ; GFX940: liveins: $vgpr2_vgpr3
295    ; GFX940-NEXT: {{  $}}
296    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
297    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
298    ; GFX10-LABEL: name: copy_v64_to_v64_unaligned
299    ; GFX10: liveins: $vgpr2_vgpr3
300    ; GFX10-NEXT: {{  $}}
301    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $vgpr2_vgpr3
302    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr2_vgpr3, implicit $exec
303    $vgpr1_vgpr2 = COPY killed $vgpr2_vgpr3, implicit $exec
304...
305
306---
307name: copy_v64_unaligned_to_v64
308tracksRegLiveness: true
309body: |
310  bb.0:
311    liveins: $vgpr3_vgpr4
312    ; GFX908-LABEL: name: copy_v64_unaligned_to_v64
313    ; GFX908: liveins: $vgpr3_vgpr4
314    ; GFX908-NEXT: {{  $}}
315    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
316    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
317    ; GFX90A-LABEL: name: copy_v64_unaligned_to_v64
318    ; GFX90A: liveins: $vgpr3_vgpr4
319    ; GFX90A-NEXT: {{  $}}
320    ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
321    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
322    ; GFX940-LABEL: name: copy_v64_unaligned_to_v64
323    ; GFX940: liveins: $vgpr3_vgpr4
324    ; GFX940-NEXT: {{  $}}
325    ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
326    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
327    ; GFX10-LABEL: name: copy_v64_unaligned_to_v64
328    ; GFX10: liveins: $vgpr3_vgpr4
329    ; GFX10-NEXT: {{  $}}
330    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $vgpr3_vgpr4
331    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit killed $vgpr3_vgpr4, implicit $exec
332    $vgpr0_vgpr1 = COPY killed $vgpr3_vgpr4, implicit $exec
333...
334
335---
336name: copy_v128_to_v128_unaligned
337tracksRegLiveness: true
338body: |
339  bb.0:
340    liveins: $vgpr8_vgpr9_vgpr10_vgpr11
341    ; GFX908-LABEL: name: copy_v128_to_v128_unaligned
342    ; GFX908: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
343    ; GFX908-NEXT: {{  $}}
344    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
345    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
346    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
347    ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
348    ; GFX90A-LABEL: name: copy_v128_to_v128_unaligned
349    ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
350    ; GFX90A-NEXT: {{  $}}
351    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
352    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
353    ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
354    ; GFX90A-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
355    ; GFX940-LABEL: name: copy_v128_to_v128_unaligned
356    ; GFX940: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
357    ; GFX940-NEXT: {{  $}}
358    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
359    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
360    ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
361    ; GFX940-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
362    ; GFX10-LABEL: name: copy_v128_to_v128_unaligned
363    ; GFX10: liveins: $vgpr8_vgpr9_vgpr10_vgpr11
364    ; GFX10-NEXT: {{  $}}
365    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $vgpr8_vgpr9_vgpr10_vgpr11
366    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
367    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit $vgpr8_vgpr9_vgpr10_vgpr11
368    ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $vgpr11, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
369    $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $vgpr8_vgpr9_vgpr10_vgpr11, implicit $exec
370...
371
372---
373name: copy_v128_unaligned_to_v128
374tracksRegLiveness: true
375body: |
376  bb.0:
377    liveins: $vgpr7_vgpr8_vgpr9_vgpr10
378    ; GFX908-LABEL: name: copy_v128_unaligned_to_v128
379    ; GFX908: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
380    ; GFX908-NEXT: {{  $}}
381    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
382    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
383    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
384    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
385    ; GFX90A-LABEL: name: copy_v128_unaligned_to_v128
386    ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
387    ; GFX90A-NEXT: {{  $}}
388    ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
389    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
390    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
391    ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
392    ; GFX940-LABEL: name: copy_v128_unaligned_to_v128
393    ; GFX940: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
394    ; GFX940-NEXT: {{  $}}
395    ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
396    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
397    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
398    ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
399    ; GFX10-LABEL: name: copy_v128_unaligned_to_v128
400    ; GFX10: liveins: $vgpr7_vgpr8_vgpr9_vgpr10
401    ; GFX10-NEXT: {{  $}}
402    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3, implicit $vgpr7_vgpr8_vgpr9_vgpr10
403    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
404    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr7_vgpr8_vgpr9_vgpr10
405    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
406    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY killed $vgpr7_vgpr8_vgpr9_vgpr10, implicit $exec
407...
408
409---
410name: copy_s64_to_v64_unaligned
411tracksRegLiveness: true
412body: |
413  bb.0:
414    liveins: $sgpr8_sgpr9
415    ; GFX908-LABEL: name: copy_s64_to_v64_unaligned
416    ; GFX908: liveins: $sgpr8_sgpr9
417    ; GFX908-NEXT: {{  $}}
418    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
419    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
420    ; GFX90A-LABEL: name: copy_s64_to_v64_unaligned
421    ; GFX90A: liveins: $sgpr8_sgpr9
422    ; GFX90A-NEXT: {{  $}}
423    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
424    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
425    ; GFX940-LABEL: name: copy_s64_to_v64_unaligned
426    ; GFX940: liveins: $sgpr8_sgpr9
427    ; GFX940-NEXT: {{  $}}
428    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
429    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
430    ; GFX10-LABEL: name: copy_s64_to_v64_unaligned
431    ; GFX10: liveins: $sgpr8_sgpr9
432    ; GFX10-NEXT: {{  $}}
433    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr8_sgpr9
434    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit killed $sgpr8_sgpr9, implicit $exec
435    $vgpr1_vgpr2 = COPY killed $sgpr8_sgpr9, implicit $exec
436...
437
438---
439name: copy_s128_to_v128_unaligned
440tracksRegLiveness: true
441body: |
442  bb.0:
443    liveins: $sgpr8_sgpr9_sgpr10_sgpr11
444    ; GFX908-LABEL: name: copy_s128_to_v128_unaligned
445    ; GFX908: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
446    ; GFX908-NEXT: {{  $}}
447    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
448    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
449    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
450    ; GFX908-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
451    ; GFX90A-LABEL: name: copy_s128_to_v128_unaligned
452    ; GFX90A: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
453    ; GFX90A-NEXT: {{  $}}
454    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
455    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
456    ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
457    ; GFX90A-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
458    ; GFX940-LABEL: name: copy_s128_to_v128_unaligned
459    ; GFX940: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
460    ; GFX940-NEXT: {{  $}}
461    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
462    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
463    ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
464    ; GFX940-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
465    ; GFX10-LABEL: name: copy_s128_to_v128_unaligned
466    ; GFX10: liveins: $sgpr8_sgpr9_sgpr10_sgpr11
467    ; GFX10-NEXT: {{  $}}
468    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3_vgpr4, implicit $sgpr8_sgpr9_sgpr10_sgpr11
469    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr9, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
470    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr10, implicit $exec, implicit $sgpr8_sgpr9_sgpr10_sgpr11
471    ; GFX10-NEXT: $vgpr4 = V_MOV_B32_e32 $sgpr11, implicit $exec, implicit killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
472    $vgpr1_vgpr2_vgpr3_vgpr4 = COPY killed $sgpr8_sgpr9_sgpr10_sgpr11, implicit $exec
473...
474
475---
476name: copy_v96_to_v96_unaligned
477tracksRegLiveness: true
478body: |
479  bb.0:
480    liveins: $vgpr8_vgpr9_vgpr10
481    ; GFX908-LABEL: name: copy_v96_to_v96_unaligned
482    ; GFX908: liveins: $vgpr8_vgpr9_vgpr10
483    ; GFX908-NEXT: {{  $}}
484    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
485    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
486    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
487    ; GFX90A-LABEL: name: copy_v96_to_v96_unaligned
488    ; GFX90A: liveins: $vgpr8_vgpr9_vgpr10
489    ; GFX90A-NEXT: {{  $}}
490    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
491    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
492    ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
493    ; GFX940-LABEL: name: copy_v96_to_v96_unaligned
494    ; GFX940: liveins: $vgpr8_vgpr9_vgpr10
495    ; GFX940-NEXT: {{  $}}
496    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
497    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
498    ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
499    ; GFX10-LABEL: name: copy_v96_to_v96_unaligned
500    ; GFX10: liveins: $vgpr8_vgpr9_vgpr10
501    ; GFX10-NEXT: {{  $}}
502    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $vgpr8_vgpr9_vgpr10
503    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit $vgpr8_vgpr9_vgpr10
504    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr10, implicit $exec, implicit killed $vgpr8_vgpr9_vgpr10, implicit $exec
505    $vgpr1_vgpr2_vgpr3 = COPY killed $vgpr8_vgpr9_vgpr10, implicit $exec
506...
507
508---
509name: copy_v96_unaligned_to_v96
510tracksRegLiveness: true
511body: |
512  bb.0:
513    liveins: $vgpr7_vgpr8_vgpr9
514    ; GFX908-LABEL: name: copy_v96_unaligned_to_v96
515    ; GFX908: liveins: $vgpr7_vgpr8_vgpr9
516    ; GFX908-NEXT: {{  $}}
517    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
518    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
519    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
520    ; GFX90A-LABEL: name: copy_v96_unaligned_to_v96
521    ; GFX90A: liveins: $vgpr7_vgpr8_vgpr9
522    ; GFX90A-NEXT: {{  $}}
523    ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
524    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
525    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
526    ; GFX940-LABEL: name: copy_v96_unaligned_to_v96
527    ; GFX940: liveins: $vgpr7_vgpr8_vgpr9
528    ; GFX940-NEXT: {{  $}}
529    ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
530    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
531    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
532    ; GFX10-LABEL: name: copy_v96_unaligned_to_v96
533    ; GFX10: liveins: $vgpr7_vgpr8_vgpr9
534    ; GFX10-NEXT: {{  $}}
535    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr7, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $vgpr7_vgpr8_vgpr9
536    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $vgpr8, implicit $exec, implicit $vgpr7_vgpr8_vgpr9
537    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr9, implicit $exec, implicit killed $vgpr7_vgpr8_vgpr9, implicit $exec
538    $vgpr0_vgpr1_vgpr2 = COPY killed $vgpr7_vgpr8_vgpr9, implicit $exec
539...
540
541---
542name: copy_s96_to_v96
543tracksRegLiveness: true
544body: |
545  bb.0:
546    liveins: $sgpr0_sgpr1_sgpr2
547    ; GFX908-LABEL: name: copy_s96_to_v96
548    ; GFX908: liveins: $sgpr0_sgpr1_sgpr2
549    ; GFX908-NEXT: {{  $}}
550    ; GFX908-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
551    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
552    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
553    ; GFX90A-LABEL: name: copy_s96_to_v96
554    ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2
555    ; GFX90A-NEXT: {{  $}}
556    ; GFX90A-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
557    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
558    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
559    ; GFX940-LABEL: name: copy_s96_to_v96
560    ; GFX940: liveins: $sgpr0_sgpr1_sgpr2
561    ; GFX940-NEXT: {{  $}}
562    ; GFX940-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
563    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
564    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
565    ; GFX10-LABEL: name: copy_s96_to_v96
566    ; GFX10: liveins: $sgpr0_sgpr1_sgpr2
567    ; GFX10-NEXT: {{  $}}
568    ; GFX10-NEXT: $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1_vgpr2, implicit $sgpr0_sgpr1_sgpr2
569    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
570    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
571    $vgpr0_vgpr1_vgpr2 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec
572...
573
574---
575name: copy_s96_to_v96_unaligned
576tracksRegLiveness: true
577body: |
578  bb.0:
579    liveins: $sgpr0_sgpr1_sgpr2
580    ; GFX908-LABEL: name: copy_s96_to_v96_unaligned
581    ; GFX908: liveins: $sgpr0_sgpr1_sgpr2
582    ; GFX908-NEXT: {{  $}}
583    ; GFX908-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
584    ; GFX908-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
585    ; GFX908-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
586    ; GFX90A-LABEL: name: copy_s96_to_v96_unaligned
587    ; GFX90A: liveins: $sgpr0_sgpr1_sgpr2
588    ; GFX90A-NEXT: {{  $}}
589    ; GFX90A-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
590    ; GFX90A-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
591    ; GFX90A-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
592    ; GFX940-LABEL: name: copy_s96_to_v96_unaligned
593    ; GFX940: liveins: $sgpr0_sgpr1_sgpr2
594    ; GFX940-NEXT: {{  $}}
595    ; GFX940-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
596    ; GFX940-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
597    ; GFX940-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
598    ; GFX10-LABEL: name: copy_s96_to_v96_unaligned
599    ; GFX10: liveins: $sgpr0_sgpr1_sgpr2
600    ; GFX10-NEXT: {{  $}}
601    ; GFX10-NEXT: $vgpr3 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr1_vgpr2_vgpr3, implicit $sgpr0_sgpr1_sgpr2
602    ; GFX10-NEXT: $vgpr2 = V_MOV_B32_e32 $sgpr1, implicit $exec, implicit $sgpr0_sgpr1_sgpr2
603    ; GFX10-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit killed $sgpr0_sgpr1_sgpr2, implicit $exec
604    $vgpr1_vgpr2_vgpr3 = COPY killed $sgpr0_sgpr1_sgpr2, implicit $exec
605...
606