[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-ashr.mir
blobc4d39352e5fff09d3f32ce4922587e95730d4afb
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX7 %s
4 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX8 %s
5 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s
6 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX10 %s
8 ---
9 name: ashr_s32_ss
10 legalized: true
11 regBankSelected: true
13 body: |
14   bb.0:
15     liveins: $sgpr0, $sgpr1
16     ; GFX6-LABEL: name: ashr_s32_ss
17     ; GFX6: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
18     ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
19     ; GFX6: [[S_ASHR_I32_:%[0-9]+]]:sreg_32 = S_ASHR_I32 [[COPY]], [[COPY1]], implicit-def $scc
20     ; GFX6: S_ENDPGM 0, implicit [[S_ASHR_I32_]]
21     ; GFX7-LABEL: name: ashr_s32_ss
22     ; GFX7: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
23     ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
24     ; GFX7: [[S_ASHR_I32_:%[0-9]+]]:sreg_32 = S_ASHR_I32 [[COPY]], [[COPY1]], implicit-def $scc
25     ; GFX7: S_ENDPGM 0, implicit [[S_ASHR_I32_]]
26     ; GFX8-LABEL: name: ashr_s32_ss
27     ; GFX8: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
28     ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
29     ; GFX8: [[S_ASHR_I32_:%[0-9]+]]:sreg_32 = S_ASHR_I32 [[COPY]], [[COPY1]], implicit-def $scc
30     ; GFX8: S_ENDPGM 0, implicit [[S_ASHR_I32_]]
31     ; GFX9-LABEL: name: ashr_s32_ss
32     ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
33     ; GFX9: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
34     ; GFX9: [[S_ASHR_I32_:%[0-9]+]]:sreg_32 = S_ASHR_I32 [[COPY]], [[COPY1]], implicit-def $scc
35     ; GFX9: S_ENDPGM 0, implicit [[S_ASHR_I32_]]
36     ; GFX10-LABEL: name: ashr_s32_ss
37     ; GFX10: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
38     ; GFX10: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1
39     ; GFX10: [[S_ASHR_I32_:%[0-9]+]]:sreg_32 = S_ASHR_I32 [[COPY]], [[COPY1]], implicit-def $scc
40     ; GFX10: S_ENDPGM 0, implicit [[S_ASHR_I32_]]
41     %0:sgpr(s32) = COPY $sgpr0
42     %1:sgpr(s32) = COPY $sgpr1
43     %2:sgpr(s32) = G_ASHR %0, %1
44     S_ENDPGM 0, implicit %2
45 ...
47 ---
48 name: ashr_s32_sv
49 legalized: true
50 regBankSelected: true
52 body: |
53   bb.0:
54     liveins: $sgpr0, $vgpr0
55     ; GFX6-LABEL: name: ashr_s32_sv
56     ; GFX6: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
57     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
58     ; GFX6: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
59     ; GFX6: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
60     ; GFX7-LABEL: name: ashr_s32_sv
61     ; GFX7: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
62     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
63     ; GFX7: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
64     ; GFX7: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
65     ; GFX8-LABEL: name: ashr_s32_sv
66     ; GFX8: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
67     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
68     ; GFX8: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
69     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
70     ; GFX9-LABEL: name: ashr_s32_sv
71     ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
72     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
73     ; GFX9: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
74     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
75     ; GFX10-LABEL: name: ashr_s32_sv
76     ; GFX10: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
77     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
78     ; GFX10: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
79     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
80     %0:sgpr(s32) = COPY $sgpr0
81     %1:vgpr(s32) = COPY $vgpr0
82     %2:vgpr(s32) = G_ASHR %0, %1
83     S_ENDPGM 0, implicit %2
84 ...
86 ---
87 name: ashr_s32_vs
88 legalized: true
89 regBankSelected: true
91 body: |
92   bb.0:
93     liveins: $sgpr0, $vgpr0
94     ; GFX6-LABEL: name: ashr_s32_vs
95     ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
96     ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
97     ; GFX6: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
98     ; GFX6: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
99     ; GFX7-LABEL: name: ashr_s32_vs
100     ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
101     ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
102     ; GFX7: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
103     ; GFX7: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
104     ; GFX8-LABEL: name: ashr_s32_vs
105     ; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
106     ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
107     ; GFX8: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
108     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
109     ; GFX9-LABEL: name: ashr_s32_vs
110     ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
111     ; GFX9: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
112     ; GFX9: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
113     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
114     ; GFX10-LABEL: name: ashr_s32_vs
115     ; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
116     ; GFX10: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
117     ; GFX10: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
118     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
119     %0:vgpr(s32) = COPY $vgpr0
120     %1:sgpr(s32) = COPY $sgpr0
121     %2:vgpr(s32) = G_ASHR %0, %1
122     S_ENDPGM 0, implicit %2
126 name: ashr_s32_vv
127 legalized: true
128 regBankSelected: true
130 body: |
131   bb.0:
132     liveins: $vgpr0, $vgpr1
133     ; GFX6-LABEL: name: ashr_s32_vv
134     ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
135     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
136     ; GFX6: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
137     ; GFX6: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
138     ; GFX7-LABEL: name: ashr_s32_vv
139     ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
140     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
141     ; GFX7: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
142     ; GFX7: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
143     ; GFX8-LABEL: name: ashr_s32_vv
144     ; GFX8: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
145     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
146     ; GFX8: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
147     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
148     ; GFX9-LABEL: name: ashr_s32_vv
149     ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
150     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
151     ; GFX9: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
152     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
153     ; GFX10-LABEL: name: ashr_s32_vv
154     ; GFX10: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
155     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
156     ; GFX10: [[V_ASHRREV_I32_e64_:%[0-9]+]]:vgpr_32 = V_ASHRREV_I32_e64 [[COPY1]], [[COPY]], implicit $exec
157     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I32_e64_]]
158     %0:vgpr(s32) = COPY $vgpr0
159     %1:vgpr(s32) = COPY $vgpr1
160     %2:vgpr(s32) = G_ASHR %0, %1
161     S_ENDPGM 0, implicit %2
165 name: ashr_s64_ss
166 legalized: true
167 regBankSelected: true
169 body: |
170   bb.0:
171     liveins: $sgpr0_sgpr1, $sgpr2
172     ; GFX6-LABEL: name: ashr_s64_ss
173     ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
174     ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
175     ; GFX6: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[COPY]], [[COPY1]], implicit-def $scc
176     ; GFX6: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
177     ; GFX7-LABEL: name: ashr_s64_ss
178     ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
179     ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
180     ; GFX7: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[COPY]], [[COPY1]], implicit-def $scc
181     ; GFX7: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
182     ; GFX8-LABEL: name: ashr_s64_ss
183     ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
184     ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
185     ; GFX8: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[COPY]], [[COPY1]], implicit-def $scc
186     ; GFX8: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
187     ; GFX9-LABEL: name: ashr_s64_ss
188     ; GFX9: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
189     ; GFX9: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
190     ; GFX9: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[COPY]], [[COPY1]], implicit-def $scc
191     ; GFX9: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
192     ; GFX10-LABEL: name: ashr_s64_ss
193     ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
194     ; GFX10: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
195     ; GFX10: [[S_ASHR_I64_:%[0-9]+]]:sreg_64 = S_ASHR_I64 [[COPY]], [[COPY1]], implicit-def $scc
196     ; GFX10: S_ENDPGM 0, implicit [[S_ASHR_I64_]]
197     %0:sgpr(s64) = COPY $sgpr0_sgpr1
198     %1:sgpr(s32) = COPY $sgpr2
199     %2:sgpr(s64) = G_ASHR %0, %1
200     S_ENDPGM 0, implicit %2
204 name: ashr_s64_sv
205 legalized: true
206 regBankSelected: true
208 body: |
209   bb.0:
210     liveins: $sgpr0_sgpr1, $vgpr0
211     ; GFX6-LABEL: name: ashr_s64_sv
212     ; GFX6: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
213     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
214     ; GFX6: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
215     ; GFX6: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
216     ; GFX7-LABEL: name: ashr_s64_sv
217     ; GFX7: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
218     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
219     ; GFX7: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
220     ; GFX7: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
221     ; GFX8-LABEL: name: ashr_s64_sv
222     ; GFX8: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
223     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
224     ; GFX8: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
225     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
226     ; GFX9-LABEL: name: ashr_s64_sv
227     ; GFX9: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
228     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
229     ; GFX9: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
230     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
231     ; GFX10-LABEL: name: ashr_s64_sv
232     ; GFX10: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1
233     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0
234     ; GFX10: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
235     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
236     %0:sgpr(s64) = COPY $sgpr0_sgpr1
237     %1:vgpr(s32) = COPY $vgpr0
238     %2:vgpr(s64) = G_ASHR %0, %1
239     S_ENDPGM 0, implicit %2
243 name: ashr_s64_vs
244 legalized: true
245 regBankSelected: true
247 body: |
248   bb.0:
249     liveins: $sgpr0, $vgpr0_vgpr1
250     ; GFX6-LABEL: name: ashr_s64_vs
251     ; GFX6: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
252     ; GFX6: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
253     ; GFX6: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
254     ; GFX6: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
255     ; GFX7-LABEL: name: ashr_s64_vs
256     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
257     ; GFX7: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
258     ; GFX7: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
259     ; GFX7: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
260     ; GFX8-LABEL: name: ashr_s64_vs
261     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
262     ; GFX8: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
263     ; GFX8: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
264     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
265     ; GFX9-LABEL: name: ashr_s64_vs
266     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
267     ; GFX9: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
268     ; GFX9: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
269     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
270     ; GFX10-LABEL: name: ashr_s64_vs
271     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
272     ; GFX10: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0
273     ; GFX10: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
274     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
275     %0:vgpr(s64) = COPY $vgpr0_vgpr1
276     %1:sgpr(s32) = COPY $sgpr0
277     %2:vgpr(s64) = G_ASHR %0, %1
278     S_ENDPGM 0, implicit %2
282 name: ashr_s64_vv
283 legalized: true
284 regBankSelected: true
286 body: |
287   bb.0:
288     liveins: $vgpr0_vgpr1, $vgpr2
289     ; GFX6-LABEL: name: ashr_s64_vv
290     ; GFX6: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
291     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
292     ; GFX6: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
293     ; GFX6: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
294     ; GFX7-LABEL: name: ashr_s64_vv
295     ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
296     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
297     ; GFX7: [[V_ASHR_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHR_I64_e64 [[COPY]], [[COPY1]], implicit $exec
298     ; GFX7: S_ENDPGM 0, implicit [[V_ASHR_I64_e64_]]
299     ; GFX8-LABEL: name: ashr_s64_vv
300     ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
301     ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
302     ; GFX8: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
303     ; GFX8: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
304     ; GFX9-LABEL: name: ashr_s64_vv
305     ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
306     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
307     ; GFX9: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
308     ; GFX9: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
309     ; GFX10-LABEL: name: ashr_s64_vv
310     ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
311     ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
312     ; GFX10: [[V_ASHRREV_I64_e64_:%[0-9]+]]:vreg_64 = V_ASHRREV_I64_e64 [[COPY1]], [[COPY]], implicit $exec
313     ; GFX10: S_ENDPGM 0, implicit [[V_ASHRREV_I64_e64_]]
314     %0:vgpr(s64) = COPY $vgpr0_vgpr1
315     %1:vgpr(s32) = COPY $vgpr2
316     %2:vgpr(s64) = G_ASHR %0, %1
317     S_ENDPGM 0, implicit %2