284 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" -o - %s | FileCheck %s3 4---5name: lshr_s32_ss6legalized: true7 8body: |9 bb.0:10 liveins: $sgpr0, $sgpr111 ; CHECK-LABEL: name: lshr_s32_ss12 ; CHECK: liveins: $sgpr0, $sgpr113 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr015 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr116 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[COPY]], [[COPY1]](s32)17 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s32)18 %0:_(s32) = COPY $sgpr019 %1:_(s32) = COPY $sgpr120 %2:_(s32) = G_LSHR %0, %121 S_ENDPGM 0, implicit %222...23 24---25name: lshr_s32_sv26legalized: true27 28body: |29 bb.0:30 liveins: $sgpr0, $vgpr031 ; CHECK-LABEL: name: lshr_s32_sv32 ; CHECK: liveins: $sgpr0, $vgpr033 ; CHECK-NEXT: {{ $}}34 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr035 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr036 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)37 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s32) = G_LSHR [[COPY2]], [[COPY1]](s32)38 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s32)39 %0:_(s32) = COPY $sgpr040 %1:_(s32) = COPY $vgpr041 %2:_(s32) = G_LSHR %0, %142 S_ENDPGM 0, implicit %243...44 45---46name: lshr_s32_vs47legalized: true48 49body: |50 bb.0:51 liveins: $sgpr0, $vgpr052 ; CHECK-LABEL: name: lshr_s32_vs53 ; CHECK: liveins: $sgpr0, $vgpr054 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr056 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr057 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)58 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s32) = G_LSHR [[COPY]], [[COPY2]](s32)59 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s32)60 %0:_(s32) = COPY $vgpr061 %1:_(s32) = COPY $sgpr062 %2:_(s32) = G_LSHR %0, %163 S_ENDPGM 0, implicit %264...65 66---67name: lshr_s32_vv68legalized: true69 70body: |71 bb.0:72 liveins: $vgpr0, $vgpr173 ; CHECK-LABEL: name: lshr_s32_vv74 ; CHECK: liveins: $vgpr0, $vgpr175 ; CHECK-NEXT: {{ $}}76 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr077 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr178 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s32) = G_LSHR [[COPY]], [[COPY1]](s32)79 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s32)80 %0:_(s32) = COPY $vgpr081 %1:_(s32) = COPY $vgpr182 %2:_(s32) = G_LSHR %0, %183 S_ENDPGM 0, implicit %284...85 86---87name: lshr_s16_ss88legalized: true89 90body: |91 bb.0:92 liveins: $sgpr0, $sgpr193 ; CHECK-LABEL: name: lshr_s16_ss94 ; CHECK: liveins: $sgpr0, $sgpr195 ; CHECK-NEXT: {{ $}}96 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr097 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr198 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)99 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)100 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s16)101 ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s16)102 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[ZEXT]], [[ZEXT1]](s32)103 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s16) = G_TRUNC [[LSHR]](s32)104 ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC2]](s16)105 %0:_(s32) = COPY $sgpr0106 %1:_(s32) = COPY $sgpr1107 %2:_(s16) = G_TRUNC %0108 %3:_(s16) = G_TRUNC %1109 %4:_(s16) = G_LSHR %2, %3110 S_ENDPGM 0, implicit %4111...112 113---114name: lshr_s16_sv115legalized: true116 117body: |118 bb.0:119 liveins: $sgpr0, $vgpr0120 121 ; CHECK-LABEL: name: lshr_s16_sv122 ; CHECK: liveins: $sgpr0, $vgpr0123 ; CHECK-NEXT: {{ $}}124 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0125 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0126 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)127 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)128 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC]](s16)129 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[COPY2]], [[TRUNC1]](s16)130 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)131 %0:_(s32) = COPY $sgpr0132 %1:_(s32) = COPY $vgpr0133 %2:_(s16) = G_TRUNC %0134 %3:_(s16) = G_TRUNC %1135 %4:_(s16) = G_LSHR %2, %3136 S_ENDPGM 0, implicit %4137...138 139---140name: lshr_s16_vs141legalized: true142 143body: |144 bb.0:145 liveins: $sgpr0, $vgpr0146 ; CHECK-LABEL: name: lshr_s16_vs147 ; CHECK: liveins: $sgpr0, $vgpr0148 ; CHECK-NEXT: {{ $}}149 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0150 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0151 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)152 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY1]](s32)153 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(s16) = COPY [[TRUNC1]](s16)154 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[COPY2]](s16)155 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)156 %0:_(s32) = COPY $vgpr0157 %1:_(s32) = COPY $sgpr0158 %2:_(s16) = G_TRUNC %0159 %3:_(s16) = G_TRUNC %1160 %4:_(s16) = G_LSHR %2, %3161 S_ENDPGM 0, implicit %4162 163...164 165---166name: lshr_s16_vv167legalized: true168 169body: |170 bb.0:171 liveins: $vgpr0, $vgpr1172 ; CHECK-LABEL: name: lshr_s16_vv173 ; CHECK: liveins: $vgpr0, $vgpr1174 ; CHECK-NEXT: {{ $}}175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0176 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1177 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)178 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32)179 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(s16) = G_LSHR [[TRUNC]], [[TRUNC1]](s16)180 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](s16)181 %0:_(s32) = COPY $vgpr0182 %1:_(s32) = COPY $vgpr1183 %2:_(s16) = G_TRUNC %0184 %3:_(s16) = G_TRUNC %1185 %4:_(s16) = G_LSHR %2, %3186 S_ENDPGM 0, implicit %4187 188...189 190---191name: lshr_v2s16_ss192legalized: true193 194body: |195 bb.0:196 liveins: $sgpr0, $sgpr1197 ; CHECK-LABEL: name: lshr_v2s16_ss198 ; CHECK: liveins: $sgpr0, $sgpr1199 ; CHECK-NEXT: {{ $}}200 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0201 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr1202 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>)203 ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 65535204 ; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[BITCAST]], [[C]]205 ; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16206 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST]], [[C1]](s32)207 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY1]](<2 x s16>)208 ; CHECK-NEXT: [[AND1:%[0-9]+]]:sgpr(s32) = G_AND [[BITCAST1]], [[C]]209 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:sgpr(s32) = G_LSHR [[BITCAST1]], [[C1]](s32)210 ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:sgpr(s32) = G_LSHR [[AND]], [[AND1]](s32)211 ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:sgpr(s32) = G_LSHR [[LSHR]], [[LSHR1]](s32)212 ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[LSHR2]](s32), [[LSHR3]](s32)213 ; CHECK-NEXT: S_ENDPGM 0, implicit [[BUILD_VECTOR_TRUNC]](<2 x s16>)214 %0:_(<2 x s16>) = COPY $sgpr0215 %1:_(<2 x s16>) = COPY $sgpr1216 %2:_(<2 x s16>) = G_LSHR %0, %1217 S_ENDPGM 0, implicit %2218 219...220 221---222name: lshr_v2s16_sv223legalized: true224 225body: |226 bb.0:227 liveins: $sgpr0, $vgpr0228 ; CHECK-LABEL: name: lshr_v2s16_sv229 ; CHECK: liveins: $sgpr0, $vgpr0230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0232 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0233 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY]](<2 x s16>)234 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(<2 x s16>) = G_LSHR [[COPY2]], [[COPY1]](<2 x s16>)235 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](<2 x s16>)236 %0:_(<2 x s16>) = COPY $sgpr0237 %1:_(<2 x s16>) = COPY $vgpr0238 %2:_(<2 x s16>) = G_LSHR %0, %1239 S_ENDPGM 0, implicit %2240...241 242---243name: lshr_v2s16_vs244legalized: true245 246body: |247 bb.0:248 liveins: $sgpr0, $vgpr0249 ; CHECK-LABEL: name: lshr_v2s16_vs250 ; CHECK: liveins: $sgpr0, $vgpr0251 ; CHECK-NEXT: {{ $}}252 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0253 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0254 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr(<2 x s16>) = COPY [[COPY1]](<2 x s16>)255 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(<2 x s16>) = G_LSHR [[COPY]], [[COPY2]](<2 x s16>)256 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](<2 x s16>)257 %0:_(<2 x s16>) = COPY $vgpr0258 %1:_(<2 x s16>) = COPY $sgpr0259 %2:_(<2 x s16>) = G_LSHR %0, %1260 S_ENDPGM 0, implicit %2261 262...263 264---265name: lshr_v2s16_vv266legalized: true267 268body: |269 bb.0:270 liveins: $vgpr0, $vgpr1271 ; CHECK-LABEL: name: lshr_v2s16_vv272 ; CHECK: liveins: $vgpr0, $vgpr1273 ; CHECK-NEXT: {{ $}}274 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0275 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr1276 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:vgpr(<2 x s16>) = G_LSHR [[COPY]], [[COPY1]](<2 x s16>)277 ; CHECK-NEXT: S_ENDPGM 0, implicit [[LSHR]](<2 x s16>)278 %0:_(<2 x s16>) = COPY $vgpr0279 %1:_(<2 x s16>) = COPY $vgpr1280 %2:_(<2 x s16>) = G_LSHR %0, %1281 S_ENDPGM 0, implicit %2282 283...284