• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -O0 -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck -check-prefix=SI %s
3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -O0 -run-pass=legalizer  -global-isel-abort=0 %s -o - | FileCheck -check-prefix=VI %s
4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -O0 -run-pass=legalizer  -global-isel-abort=0 %s -o - | FileCheck -check-prefix=GFX9  %s
5
6---
7name: test_fshr_s32_s32
8body: |
9  bb.0:
10    liveins: $vgpr0, $vgpr1, $vgpr2
11
12    ; SI-LABEL: name: test_fshr_s32_s32
13    ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
14    ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
15    ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
16    ; SI: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s32)
17    ; SI: $vgpr0 = COPY [[FSHR]](s32)
18    ; VI-LABEL: name: test_fshr_s32_s32
19    ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
20    ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
21    ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
22    ; VI: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s32)
23    ; VI: $vgpr0 = COPY [[FSHR]](s32)
24    ; GFX9-LABEL: name: test_fshr_s32_s32
25    ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
26    ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
27    ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
28    ; GFX9: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s32)
29    ; GFX9: $vgpr0 = COPY [[FSHR]](s32)
30    %0:_(s32) = COPY $vgpr0
31    %1:_(s32) = COPY $vgpr1
32    %2:_(s32) = COPY $vgpr2
33    %3:_(s32) = G_FSHR %0, %1, %2
34    $vgpr0 = COPY %3
35...
36
37---
38name: test_fshr_v2s32_v2s32
39body: |
40  bb.0:
41    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
42
43    ; SI-LABEL: name: test_fshr_v2s32_v2s32
44    ; SI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
45    ; SI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3
46    ; SI: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
47    ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
48    ; SI: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)
49    ; SI: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
50    ; SI: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[UV]], [[UV2]], [[UV4]](s32)
51    ; SI: [[FSHR1:%[0-9]+]]:_(s32) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s32)
52    ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FSHR]](s32), [[FSHR1]](s32)
53    ; SI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
54    ; VI-LABEL: name: test_fshr_v2s32_v2s32
55    ; VI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
56    ; VI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3
57    ; VI: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
58    ; VI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
59    ; VI: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)
60    ; VI: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
61    ; VI: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[UV]], [[UV2]], [[UV4]](s32)
62    ; VI: [[FSHR1:%[0-9]+]]:_(s32) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s32)
63    ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FSHR]](s32), [[FSHR1]](s32)
64    ; VI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
65    ; GFX9-LABEL: name: test_fshr_v2s32_v2s32
66    ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1
67    ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3
68    ; GFX9: [[COPY2:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5
69    ; GFX9: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)
70    ; GFX9: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)
71    ; GFX9: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>)
72    ; GFX9: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[UV]], [[UV2]], [[UV4]](s32)
73    ; GFX9: [[FSHR1:%[0-9]+]]:_(s32) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s32)
74    ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FSHR]](s32), [[FSHR1]](s32)
75    ; GFX9: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)
76    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1
77    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3
78    %2:_(<2 x s32>) = COPY $vgpr4_vgpr5
79    %3:_(<2 x s32>) = G_FSHR %0, %1, %2
80    $vgpr0_vgpr1 = COPY %3
81...
82
83---
84name: test_fshr_s16_s16
85body: |
86  bb.0:
87    liveins: $vgpr0, $vgpr1, $vgpr2
88
89    ; SI-LABEL: name: test_fshr_s16_s16
90    ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
91    ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
92    ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
93    ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
94    ; SI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
95    ; SI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
96    ; SI: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s16)
97    ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s16)
98    ; SI: $vgpr0 = COPY [[ANYEXT]](s32)
99    ; VI-LABEL: name: test_fshr_s16_s16
100    ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
101    ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
102    ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
103    ; VI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
104    ; VI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
105    ; VI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
106    ; VI: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s16)
107    ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s16)
108    ; VI: $vgpr0 = COPY [[ANYEXT]](s32)
109    ; GFX9-LABEL: name: test_fshr_s16_s16
110    ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
111    ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
112    ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
113    ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
114    ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
115    ; GFX9: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)
116    ; GFX9: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s16)
117    ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s16)
118    ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32)
119    %0:_(s32) = COPY $vgpr0
120    %1:_(s32) = COPY $vgpr1
121    %2:_(s32) = COPY $vgpr2
122    %3:_(s16) = G_TRUNC %0
123    %4:_(s16) = G_TRUNC %1
124    %5:_(s16) = G_TRUNC %2
125    %6:_(s16) = G_FSHR %3, %4, %5
126    %7:_(s32) = G_ANYEXT %6
127    $vgpr0 = COPY %7
128...
129
130---
131name: test_fshr_v2s16_v2s16
132body: |
133  bb.0:
134    liveins: $vgpr0, $vgpr1, $vgpr2
135
136    ; SI-LABEL: name: test_fshr_v2s16_v2s16
137    ; SI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
138    ; SI: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1
139    ; SI: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
140    ; SI: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<2 x s16>)
141    ; SI: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<2 x s16>)
142    ; SI: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](<2 x s16>)
143    ; SI: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[UV]], [[UV2]], [[UV4]](s16)
144    ; SI: [[FSHR1:%[0-9]+]]:_(s16) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s16)
145    ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[FSHR]](s16), [[FSHR1]](s16)
146    ; SI: $vgpr0 = COPY [[BUILD_VECTOR]](<2 x s16>)
147    ; VI-LABEL: name: test_fshr_v2s16_v2s16
148    ; VI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
149    ; VI: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1
150    ; VI: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
151    ; VI: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<2 x s16>)
152    ; VI: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<2 x s16>)
153    ; VI: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](<2 x s16>)
154    ; VI: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[UV]], [[UV2]], [[UV4]](s16)
155    ; VI: [[FSHR1:%[0-9]+]]:_(s16) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s16)
156    ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[FSHR]](s16), [[FSHR1]](s16)
157    ; VI: $vgpr0 = COPY [[BUILD_VECTOR]](<2 x s16>)
158    ; GFX9-LABEL: name: test_fshr_v2s16_v2s16
159    ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0
160    ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1
161    ; GFX9: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr2
162    ; GFX9: [[UV:%[0-9]+]]:_(s16), [[UV1:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY]](<2 x s16>)
163    ; GFX9: [[UV2:%[0-9]+]]:_(s16), [[UV3:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY1]](<2 x s16>)
164    ; GFX9: [[UV4:%[0-9]+]]:_(s16), [[UV5:%[0-9]+]]:_(s16) = G_UNMERGE_VALUES [[COPY2]](<2 x s16>)
165    ; GFX9: [[FSHR:%[0-9]+]]:_(s16) = G_FSHR [[UV]], [[UV2]], [[UV4]](s16)
166    ; GFX9: [[FSHR1:%[0-9]+]]:_(s16) = G_FSHR [[UV1]], [[UV3]], [[UV5]](s16)
167    ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[FSHR]](s16), [[FSHR1]](s16)
168    ; GFX9: $vgpr0 = COPY [[BUILD_VECTOR]](<2 x s16>)
169    %0:_(<2 x s16>) = COPY $vgpr0
170    %1:_(<2 x s16>) = COPY $vgpr1
171    %2:_(<2 x s16>) = COPY $vgpr2
172    %3:_(<2 x s16>) = G_FSHR %0, %1, %2
173    $vgpr0 = COPY %3
174...
175
176---
177name: test_fshr_s64_s64
178body: |
179  bb.0:
180    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5
181
182    ; SI-LABEL: name: test_fshr_s64_s64
183    ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
184    ; SI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
185    ; SI: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
186    ; SI: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s64)
187    ; SI: $vgpr0_vgpr1 = COPY [[FSHR]](s64)
188    ; VI-LABEL: name: test_fshr_s64_s64
189    ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
190    ; VI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
191    ; VI: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
192    ; VI: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s64)
193    ; VI: $vgpr0_vgpr1 = COPY [[FSHR]](s64)
194    ; GFX9-LABEL: name: test_fshr_s64_s64
195    ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1
196    ; GFX9: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3
197    ; GFX9: [[COPY2:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5
198    ; GFX9: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[COPY2]](s64)
199    ; GFX9: $vgpr0_vgpr1 = COPY [[FSHR]](s64)
200    %0:_(s64) = COPY $vgpr0_vgpr1
201    %1:_(s64) = COPY $vgpr2_vgpr3
202    %2:_(s64) = COPY $vgpr4_vgpr5
203    %3:_(s64) = G_FSHR %0, %1, %2
204    $vgpr0_vgpr1 = COPY %3
205...
206
207---
208name: test_fshr_s8_s8
209body: |
210  bb.0:
211    liveins: $vgpr0, $vgpr1, $vgpr2
212
213    ; SI-LABEL: name: test_fshr_s8_s8
214    ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
215    ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
216    ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
217    ; SI: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
218    ; SI: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY1]](s32)
219    ; SI: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[COPY2]](s32)
220    ; SI: [[FSHR:%[0-9]+]]:_(s8) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s8)
221    ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s8)
222    ; SI: $vgpr0 = COPY [[ANYEXT]](s32)
223    ; VI-LABEL: name: test_fshr_s8_s8
224    ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
225    ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
226    ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
227    ; VI: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
228    ; VI: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY1]](s32)
229    ; VI: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[COPY2]](s32)
230    ; VI: [[FSHR:%[0-9]+]]:_(s8) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s8)
231    ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s8)
232    ; VI: $vgpr0 = COPY [[ANYEXT]](s32)
233    ; GFX9-LABEL: name: test_fshr_s8_s8
234    ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
235    ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
236    ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
237    ; GFX9: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
238    ; GFX9: [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[COPY1]](s32)
239    ; GFX9: [[TRUNC2:%[0-9]+]]:_(s8) = G_TRUNC [[COPY2]](s32)
240    ; GFX9: [[FSHR:%[0-9]+]]:_(s8) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s8)
241    ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s8)
242    ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32)
243    %0:_(s32) = COPY $vgpr0
244    %1:_(s32) = COPY $vgpr1
245    %2:_(s32) = COPY $vgpr2
246    %3:_(s8) = G_TRUNC %0
247    %4:_(s8) = G_TRUNC %1
248    %5:_(s8) = G_TRUNC %2
249    %6:_(s8) = G_FSHR %3, %4, %5
250    %7:_(s32) = G_ANYEXT %6
251    $vgpr0 = COPY %7
252...
253
254---
255name: test_fshr_s24_s24
256body: |
257  bb.0:
258    liveins: $vgpr0, $vgpr1, $vgpr2
259
260    ; SI-LABEL: name: test_fshr_s24_s24
261    ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
262    ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
263    ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
264    ; SI: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)
265    ; SI: [[TRUNC1:%[0-9]+]]:_(s24) = G_TRUNC [[COPY1]](s32)
266    ; SI: [[TRUNC2:%[0-9]+]]:_(s24) = G_TRUNC [[COPY2]](s32)
267    ; SI: [[FSHR:%[0-9]+]]:_(s24) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s24)
268    ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s24)
269    ; SI: $vgpr0 = COPY [[ANYEXT]](s32)
270    ; VI-LABEL: name: test_fshr_s24_s24
271    ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
272    ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
273    ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
274    ; VI: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)
275    ; VI: [[TRUNC1:%[0-9]+]]:_(s24) = G_TRUNC [[COPY1]](s32)
276    ; VI: [[TRUNC2:%[0-9]+]]:_(s24) = G_TRUNC [[COPY2]](s32)
277    ; VI: [[FSHR:%[0-9]+]]:_(s24) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s24)
278    ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s24)
279    ; VI: $vgpr0 = COPY [[ANYEXT]](s32)
280    ; GFX9-LABEL: name: test_fshr_s24_s24
281    ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
282    ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
283    ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
284    ; GFX9: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)
285    ; GFX9: [[TRUNC1:%[0-9]+]]:_(s24) = G_TRUNC [[COPY1]](s32)
286    ; GFX9: [[TRUNC2:%[0-9]+]]:_(s24) = G_TRUNC [[COPY2]](s32)
287    ; GFX9: [[FSHR:%[0-9]+]]:_(s24) = G_FSHR [[TRUNC]], [[TRUNC1]], [[TRUNC2]](s24)
288    ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FSHR]](s24)
289    ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32)
290    %0:_(s32) = COPY $vgpr0
291    %1:_(s32) = COPY $vgpr1
292    %2:_(s32) = COPY $vgpr2
293    %3:_(s24) = G_TRUNC %0
294    %4:_(s24) = G_TRUNC %1
295    %5:_(s24) = G_TRUNC %2
296    %6:_(s24) = G_FSHR %3, %4, %5
297    %7:_(s32) = G_ANYEXT %6
298    $vgpr0 = COPY %7
299...
300