1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s 3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s 4--- 5name: add_s16_ss 6legalized: true 7 8body: | 9 bb.0: 10 liveins: $sgpr0, $sgpr1 11 ; CHECK-LABEL: name: add_s16_ss 12 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 13 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 14 ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32) 15 ; CHECK: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32) 16 ; CHECK: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s16) 17 ; CHECK: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC1]](s16) 18 ; CHECK: [[ADD:%[0-9]+]]:sgpr(s32) = G_ADD [[ANYEXT]], [[ANYEXT1]] 19 ; CHECK: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[ADD]](s32) 20 ; CHECK: S_ENDPGM 0, implicit [[TRUNC2]](s16) 21 %0:_(s32) = COPY $sgpr0 22 %1:_(s32) = COPY $sgpr1 23 %2:_(s16) = G_TRUNC %0 24 %3:_(s16) = G_TRUNC %1 25 %4:_(s16) = G_ADD %2, %3 26 S_ENDPGM 0, implicit %4 27... 28 29--- 30name: add_s16_sv 31legalized: true 32 33body: | 34 bb.0: 35 liveins: $sgpr0, $vgpr0 36 ; CHECK-LABEL: name: add_s16_sv 37 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 38 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 39 ; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32) 40 ; CHECK: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 41 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC]](s16) 42 ; CHECK: [[ADD:%[0-9]+]]:vgpr(s16) = G_ADD [[COPY2]], [[TRUNC1]] 43 ; CHECK: S_ENDPGM 0, implicit [[ADD]](s16) 44 %0:_(s32) = COPY $sgpr0 45 %1:_(s32) = COPY $vgpr0 46 %2:_(s16) = G_TRUNC %0 47 %3:_(s16) = G_TRUNC %1 48 %4:_(s16) = G_ADD %2, %3 49 S_ENDPGM 0, implicit %4 50... 51 52--- 53name: add_s16_vs 54legalized: true 55 56body: | 57 bb.0: 58 liveins: $sgpr0, $vgpr0 59 ; CHECK-LABEL: name: add_s16_vs 60 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 61 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 62 ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 63 ; CHECK: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32) 64 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC1]](s16) 65 ; CHECK: [[ADD:%[0-9]+]]:vgpr(s16) = G_ADD [[TRUNC]], [[COPY2]] 66 ; CHECK: S_ENDPGM 0, implicit [[ADD]](s16) 67 %0:_(s32) = COPY $vgpr0 68 %1:_(s32) = COPY $sgpr0 69 %2:_(s16) = G_TRUNC %0 70 %3:_(s16) = G_TRUNC %1 71 %4:_(s16) = G_ADD %2, %3 72 S_ENDPGM 0, implicit %4 73... 74 75--- 76name: add_s16_vv 77legalized: true 78 79body: | 80 bb.0: 81 liveins: $vgpr0, $vgpr1 82 ; CHECK-LABEL: name: add_s16_vv 83 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 84 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 85 ; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 86 ; CHECK: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 87 ; CHECK: [[ADD:%[0-9]+]]:vgpr(s16) = G_ADD [[TRUNC]], [[TRUNC1]] 88 ; CHECK: S_ENDPGM 0, implicit [[ADD]](s16) 89 %0:_(s32) = COPY $vgpr0 90 %1:_(s32) = COPY $vgpr1 91 %2:_(s16) = G_TRUNC %0 92 %3:_(s16) = G_TRUNC %1 93 %4:_(s16) = G_ADD %2, %3 94 S_ENDPGM 0, implicit %4 95... 96