1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s 4 5--- 6name: add_v2s16_ss 7legalized: true 8 9body: | 10 bb.0: 11 liveins: $sgpr0, $sgpr1 12 ; CHECK-LABEL: name: add_v2s16_ss 13 ; CHECK: liveins: $sgpr0, $sgpr1 14 ; CHECK-NEXT: {{ $}} 15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0 16 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1 17 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>) 18 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16 19 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST]], [[C]](s32) 20 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY1]](<2 x s16>) 21 ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16 22 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST1]], [[C1]](s32) 23 ; CHECK-NEXT: [[ADD:%[0-9]+]]:sgpr(s32) = G_ADD [[BITCAST]], [[BITCAST1]] 24 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:sgpr(s32) = G_ADD [[LSHR]], [[LSHR1]] 25 ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ADD]](s32), [[ADD1]](s32) 26 ; CHECK-NEXT: S_ENDPGM 0, implicit [[BUILD_VECTOR_TRUNC]](<2 x s16>) 27 %0:_(<2 x s16>) = COPY $sgpr0 28 %1:_(<2 x s16>) = COPY $sgpr1 29 %2:_(<2 x s16>) = G_ADD %0, %1 30 S_ENDPGM 0, implicit %2 31... 32 33--- 34name: add_v2s16_sv 35legalized: true 36 37body: | 38 bb.0: 39 liveins: $sgpr0, $vgpr0 40 ; CHECK-LABEL: name: add_v2s16_sv 41 ; CHECK: liveins: $sgpr0, $vgpr0 42 ; CHECK-NEXT: {{ $}} 43 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0 44 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 45 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>) 46 ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY2]], [[COPY1]] 47 ; CHECK-NEXT: S_ENDPGM 0, implicit [[ADD]](<2 x s16>) 48 %0:_(<2 x s16>) = COPY $sgpr0 49 %1:_(<2 x s16>) = COPY $vgpr0 50 %2:_(<2 x s16>) = G_ADD %0, %1 51 S_ENDPGM 0, implicit %2 52... 53 54--- 55name: add_v2s16_vs 56legalized: true 57 58body: | 59 bb.0: 60 liveins: $sgpr0, $vgpr0 61 ; CHECK-LABEL: name: add_v2s16_vs 62 ; CHECK: liveins: $sgpr0, $vgpr0 63 ; CHECK-NEXT: {{ $}} 64 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 65 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0 66 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>) 67 ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY]], [[COPY2]] 68 %0:_(<2 x s16>) = COPY $vgpr0 69 %1:_(<2 x s16>) = COPY $sgpr0 70 %2:_(<2 x s16>) = G_ADD %0, %1 71... 72 73--- 74name: add_v2s16_vv 75legalized: true 76 77body: | 78 bb.0: 79 liveins: $vgpr0, $vgpr1 80 ; CHECK-LABEL: name: add_v2s16_vv 81 ; CHECK: liveins: $vgpr0, $vgpr1 82 ; CHECK-NEXT: {{ $}} 83 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 84 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1 85 ; CHECK-NEXT: [[ADD:%[0-9]+]]:vgpr(<2 x s16>) = G_ADD [[COPY]], [[COPY1]] 86 ; CHECK-NEXT: S_ENDPGM 0, implicit [[ADD]](<2 x s16>) 87 %0:_(<2 x s16>) = COPY $vgpr0 88 %1:_(<2 x s16>) = COPY $vgpr1 89 %2:_(<2 x s16>) = G_ADD %0, %1 90 S_ENDPGM 0, implicit %2 91... 92