@@ -183,6 +183,93 @@ body: |
183183 S_ENDPGM 0, implicit %2
184184 ...
185185
186+ ---
187+ name : add_v2s16_ss
188+ legalized : true
189+
190+ body : |
191+ bb.0:
192+ liveins: $sgpr0, $sgpr1
193+ ; CHECK-LABEL: name: add_v2s16_ss
194+ ; CHECK: liveins: $sgpr0, $sgpr1
195+ ; CHECK-NEXT: {{ $}}
196+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
197+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1
198+ ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>)
199+ ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16
200+ ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST]], [[C]](s32)
201+ ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY1]](<2 x s16>)
202+ ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST1]], [[C]](s32)
203+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:sgpr(s32) = G_ADD [[BITCAST]], [[BITCAST1]]
204+ ; CHECK-NEXT: [[ADD1:%[0-9]+]]:sgpr(s32) = G_ADD [[LSHR]], [[LSHR1]]
205+ ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ADD]](s32), [[ADD1]](s32)
206+ ; CHECK-NEXT: S_ENDPGM 0, implicit [[BUILD_VECTOR_TRUNC]](<2 x s16>)
207+ %0:_(<2 x s16>) = COPY $sgpr0
208+ %1:_(<2 x s16>) = COPY $sgpr1
209+ %2:_(<2 x s16>) = G_ADD %0, %1
210+ S_ENDPGM 0, implicit %2
211+ ...
212+
213+ ---
214+ name : add_v2s16_sv
215+ legalized : true
216+
217+ body : |
218+ bb.0:
219+ liveins: $sgpr0, $vgpr0
220+ ; CHECK-LABEL: name: add_v2s16_sv
221+ ; CHECK: liveins: $sgpr0, $vgpr0
222+ ; CHECK-NEXT: {{ $}}
223+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
224+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
225+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)
226+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY2]], [[COPY1]]
227+ ; CHECK-NEXT: S_ENDPGM 0, implicit [[ADD]](<2 x s16>)
228+ %0:_(<2 x s16>) = COPY $sgpr0
229+ %1:_(<2 x s16>) = COPY $vgpr0
230+ %2:_(<2 x s16>) = G_ADD %0, %1
231+ S_ENDPGM 0, implicit %2
232+ ...
233+
234+ ---
235+ name : add_v2s16_vs
236+ legalized : true
237+
238+ body : |
239+ bb.0:
240+ liveins: $sgpr0, $vgpr0
241+ ; CHECK-LABEL: name: add_v2s16_vs
242+ ; CHECK: liveins: $sgpr0, $vgpr0
243+ ; CHECK-NEXT: {{ $}}
244+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
245+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
246+ ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)
247+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY]], [[COPY2]]
248+ %0:_(<2 x s16>) = COPY $vgpr0
249+ %1:_(<2 x s16>) = COPY $sgpr0
250+ %2:_(<2 x s16>) = G_ADD %0, %1
251+ ...
252+
253+ ---
254+ name : add_v2s16_vv
255+ legalized : true
256+
257+ body : |
258+ bb.0:
259+ liveins: $vgpr0, $vgpr1
260+ ; CHECK-LABEL: name: add_v2s16_vv
261+ ; CHECK: liveins: $vgpr0, $vgpr1
262+ ; CHECK-NEXT: {{ $}}
263+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
264+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1
265+ ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY]], [[COPY1]]
266+ ; CHECK-NEXT: S_ENDPGM 0, implicit [[ADD]](<2 x s16>)
267+ %0:_(<2 x s16>) = COPY $vgpr0
268+ %1:_(<2 x s16>) = COPY $vgpr1
269+ %2:_(<2 x s16>) = G_ADD %0, %1
270+ S_ENDPGM 0, implicit %2
271+ ...
272+
186273---
187274name : add_s64_ss
188275legalized : true
0 commit comments