1# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs -o /dev/null %s 2>&1 | FileCheck -check-prefix=ERR %s 2 3# Make sure v2s16 SALU operations fail to select 4 5# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_ADD %0:sgpr, %1:sgpr (in function: s_add_v2s16) 6# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_SUB %0:sgpr, %1:sgpr (in function: s_sub_v2s16) 7# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_MUL %0:sgpr, %1:sgpr (in function: s_mul_v2s16) 8# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_SHL %0:sgpr, %1:sgpr(<2 x s16>) (in function: s_shl_v2s16) 9# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_LSHR %0:sgpr, %1:sgpr(<2 x s16>) (in function: s_lshr_v2s16) 10# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_ASHR %0:sgpr, %1:sgpr(<2 x s16>) (in function: s_ashr_v2s16) 11# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_SMIN %0:sgpr, %1:sgpr (in function: s_smin_v2s16) 12# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_SMAX %0:sgpr, %1:sgpr (in function: s_smax_v2s16) 13# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_UMIN %0:sgpr, %1:sgpr (in function: s_umin_v2s16) 14# ERR: remark: <unknown>:0:0: cannot select: %2:sgpr(<2 x s16>) = G_UMAX %0:sgpr, %1:sgpr (in function: s_umax_v2s16) 15 16--- 17name: s_add_v2s16 18legalized: true 19regBankSelected: true 20tracksRegLiveness: true 21 22body: | 23 bb.0: 24 liveins: $sgpr0, $sgpr1 25 26 %0:sgpr(<2 x s16>) = COPY $sgpr0 27 %1:sgpr(<2 x s16>) = COPY $sgpr1 28 %2:sgpr(<2 x s16>) = G_ADD %0, %1 29 S_ENDPGM 0, implicit %2 30 31... 32 33--- 34name: s_sub_v2s16 35legalized: true 36regBankSelected: true 37tracksRegLiveness: true 38 39body: | 40 bb.0: 41 liveins: $sgpr0, $sgpr1 42 43 %0:sgpr(<2 x s16>) = COPY $sgpr0 44 %1:sgpr(<2 x s16>) = COPY $sgpr1 45 %2:sgpr(<2 x s16>) = G_SUB %0, %1 46 S_ENDPGM 0, implicit %2 47 48... 49 50--- 51name: s_mul_v2s16 52legalized: true 53regBankSelected: true 54tracksRegLiveness: true 55 56body: | 57 bb.0: 58 liveins: $sgpr0, $sgpr1 59 60 %0:sgpr(<2 x s16>) = COPY $sgpr0 61 %1:sgpr(<2 x s16>) = COPY $sgpr1 62 %2:sgpr(<2 x s16>) = G_MUL %0, %1 63 S_ENDPGM 0, implicit %2 64 65... 66 67--- 68name: s_shl_v2s16 69legalized: true 70regBankSelected: true 71tracksRegLiveness: true 72 73body: | 74 bb.0: 75 liveins: $sgpr0, $sgpr1 76 77 %0:sgpr(<2 x s16>) = COPY $sgpr0 78 %1:sgpr(<2 x s16>) = COPY $sgpr1 79 %2:sgpr(<2 x s16>) = G_SHL %0, %1 80 S_ENDPGM 0, implicit %2 81 82... 83 84--- 85name: s_lshr_v2s16 86legalized: true 87regBankSelected: true 88tracksRegLiveness: true 89 90body: | 91 bb.0: 92 liveins: $sgpr0, $sgpr1 93 94 %0:sgpr(<2 x s16>) = COPY $sgpr0 95 %1:sgpr(<2 x s16>) = COPY $sgpr1 96 %2:sgpr(<2 x s16>) = G_LSHR %0, %1 97 S_ENDPGM 0, implicit %2 98 99... 100 101--- 102name: s_ashr_v2s16 103legalized: true 104regBankSelected: true 105tracksRegLiveness: true 106 107body: | 108 bb.0: 109 liveins: $sgpr0, $sgpr1 110 111 %0:sgpr(<2 x s16>) = COPY $sgpr0 112 %1:sgpr(<2 x s16>) = COPY $sgpr1 113 %2:sgpr(<2 x s16>) = G_ASHR %0, %1 114 S_ENDPGM 0, implicit %2 115 116... 117 118--- 119name: s_smin_v2s16 120legalized: true 121regBankSelected: true 122tracksRegLiveness: true 123 124body: | 125 bb.0: 126 liveins: $sgpr0, $sgpr1 127 128 %0:sgpr(<2 x s16>) = COPY $sgpr0 129 %1:sgpr(<2 x s16>) = COPY $sgpr1 130 %2:sgpr(<2 x s16>) = G_SMIN %0, %1 131 S_ENDPGM 0, implicit %2 132 133... 134 135--- 136name: s_smax_v2s16 137legalized: true 138regBankSelected: true 139tracksRegLiveness: true 140 141body: | 142 bb.0: 143 liveins: $sgpr0, $sgpr1 144 145 %0:sgpr(<2 x s16>) = COPY $sgpr0 146 %1:sgpr(<2 x s16>) = COPY $sgpr1 147 %2:sgpr(<2 x s16>) = G_SMAX %0, %1 148 S_ENDPGM 0, implicit %2 149 150... 151 152--- 153name: s_umin_v2s16 154legalized: true 155regBankSelected: true 156tracksRegLiveness: true 157 158body: | 159 bb.0: 160 liveins: $sgpr0, $sgpr1 161 162 %0:sgpr(<2 x s16>) = COPY $sgpr0 163 %1:sgpr(<2 x s16>) = COPY $sgpr1 164 %2:sgpr(<2 x s16>) = G_UMIN %0, %1 165 S_ENDPGM 0, implicit %2 166 167... 168 169--- 170name: s_umax_v2s16 171legalized: true 172regBankSelected: true 173tracksRegLiveness: true 174 175body: | 176 bb.0: 177 liveins: $sgpr0, $sgpr1 178 179 %0:sgpr(<2 x s16>) = COPY $sgpr0 180 %1:sgpr(<2 x s16>) = COPY $sgpr1 181 %2:sgpr(<2 x s16>) = G_UMAX %0, %1 182 S_ENDPGM 0, implicit %2 183 184... 185