571 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -O0 -mtriple=arm64-unknown-unknown -global-isel -run-pass=legalizer -global-isel-abort=1 %s -o - | FileCheck %s3 4---5name: fshl_i86alignment: 47tracksRegLiveness: true8body: |9 bb.0:10 liveins: $w0, $w1, $w211 12 ; CHECK-LABEL: name: fshl_i813 ; CHECK: liveins: $w0, $w1, $w214 ; CHECK-NEXT: {{ $}}15 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w016 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w117 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w218 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 719 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]20 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -121 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]22 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C]](s32)23 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[COPY3]]24 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)25 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 25526 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]27 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 128 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C3]](s64)29 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C2]]30 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[AND1]](s32)31 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]32 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)33 ; CHECK-NEXT: RET_ReallyLR implicit $w034 %3:_(s32) = COPY $w035 %0:_(s8) = G_TRUNC %3(s32)36 %4:_(s32) = COPY $w137 %1:_(s8) = G_TRUNC %4(s32)38 %5:_(s32) = COPY $w239 %2:_(s8) = G_TRUNC %5(s32)40 %6:_(s8) = G_FSHL %0, %1, %2(s8)41 %7:_(s32) = G_ANYEXT %6(s8)42 $w0 = COPY %7(s32)43 RET_ReallyLR implicit $w044 45...46 47---48name: fshl_i1649alignment: 450tracksRegLiveness: true51body: |52 bb.0:53 liveins: $w0, $w1, $w254 55 ; CHECK-LABEL: name: fshl_i1656 ; CHECK: liveins: $w0, $w1, $w257 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w059 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w160 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w261 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1562 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]63 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -164 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]65 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C]](s32)66 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[COPY3]]67 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)68 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553569 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]70 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 171 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C3]](s64)72 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C2]]73 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[AND1]](s32)74 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]75 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)76 ; CHECK-NEXT: RET_ReallyLR implicit $w077 %3:_(s32) = COPY $w078 %0:_(s16) = G_TRUNC %3(s32)79 %4:_(s32) = COPY $w180 %1:_(s16) = G_TRUNC %4(s32)81 %5:_(s32) = COPY $w282 %2:_(s16) = G_TRUNC %5(s32)83 %6:_(s16) = G_FSHL %0, %1, %2(s16)84 %7:_(s32) = G_ANYEXT %6(s16)85 $w0 = COPY %7(s32)86 RET_ReallyLR implicit $w087 88...89 90---91name: fshl_i3292alignment: 493tracksRegLiveness: true94body: |95 bb.0:96 liveins: $w0, $w1, $w297 98 ; CHECK-LABEL: name: fshl_i3299 ; CHECK: liveins: $w0, $w1, $w2100 ; CHECK-NEXT: {{ $}}101 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0102 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1103 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2104 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31105 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]106 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1107 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]108 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]109 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)110 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1111 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s64)112 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[AND1]](s32)113 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]114 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)115 ; CHECK-NEXT: RET_ReallyLR implicit $w0116 %0:_(s32) = COPY $w0117 %1:_(s32) = COPY $w1118 %2:_(s32) = COPY $w2119 %3:_(s32) = G_FSHL %0, %1, %2(s32)120 $w0 = COPY %3(s32)121 RET_ReallyLR implicit $w0122 123...124 125---126name: fshl_i64127alignment: 4128tracksRegLiveness: true129body: |130 bb.0:131 liveins: $x0, $x1, $x2132 133 ; CHECK-LABEL: name: fshl_i64134 ; CHECK: liveins: $x0, $x1, $x2135 ; CHECK-NEXT: {{ $}}136 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0137 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1138 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2139 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63140 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]141 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1142 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]143 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]144 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1145 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[AND]](s64)146 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s64)147 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[AND1]](s64)148 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]149 ; CHECK-NEXT: $x0 = COPY [[OR]](s64)150 ; CHECK-NEXT: RET_ReallyLR implicit $x0151 %0:_(s64) = COPY $x0152 %1:_(s64) = COPY $x1153 %2:_(s64) = COPY $x2154 %3:_(s64) = G_FSHL %0, %1, %2(s64)155 $x0 = COPY %3(s64)156 RET_ReallyLR implicit $x0157 158...159 160---161name: fshl_i8_const_shift162alignment: 4163tracksRegLiveness: true164body: |165 bb.0:166 liveins: $w0, $w1167 168 ; CHECK-LABEL: name: fshl_i8_const_shift169 ; CHECK: liveins: $w0, $w1170 ; CHECK-NEXT: {{ $}}171 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0172 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1173 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4174 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)175 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255176 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]177 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C]](s64)178 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]179 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)180 ; CHECK-NEXT: RET_ReallyLR implicit $w0181 %2:_(s32) = COPY $w0182 %0:_(s8) = G_TRUNC %2(s32)183 %3:_(s32) = COPY $w1184 %1:_(s8) = G_TRUNC %3(s32)185 %7:_(s8) = G_CONSTANT i8 4186 %5:_(s8) = G_FSHL %0, %1, %7(s8)187 %6:_(s32) = G_ANYEXT %5(s8)188 $w0 = COPY %6(s32)189 RET_ReallyLR implicit $w0190 191...192 193---194name: fshl_i8_const_overshift195alignment: 4196tracksRegLiveness: true197body: |198 bb.0:199 liveins: $w0, $w1200 201 ; CHECK-LABEL: name: fshl_i8_const_overshift202 ; CHECK: liveins: $w0, $w1203 ; CHECK-NEXT: {{ $}}204 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0205 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1206 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2207 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)208 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255209 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]210 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 6211 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)212 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]213 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)214 ; CHECK-NEXT: RET_ReallyLR implicit $w0215 %2:_(s32) = COPY $w0216 %0:_(s8) = G_TRUNC %2(s32)217 %3:_(s32) = COPY $w1218 %1:_(s8) = G_TRUNC %3(s32)219 %7:_(s8) = G_CONSTANT i8 10220 %5:_(s8) = G_FSHL %0, %1, %7(s8)221 %6:_(s32) = G_ANYEXT %5(s8)222 $w0 = COPY %6(s32)223 RET_ReallyLR implicit $w0224 225...226 227---228name: fshl_i8_shift_by_bitwidth229alignment: 4230tracksRegLiveness: true231body: |232 bb.0:233 liveins: $w0, $w1234 235 ; CHECK-LABEL: name: fshl_i8_shift_by_bitwidth236 ; CHECK: liveins: $w0, $w1237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0239 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1240 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0241 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)242 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255243 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]244 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1245 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)246 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C1]]247 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 7248 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[C3]](s64)249 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]250 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)251 ; CHECK-NEXT: RET_ReallyLR implicit $w0252 %2:_(s32) = COPY $w0253 %0:_(s8) = G_TRUNC %2(s32)254 %3:_(s32) = COPY $w1255 %1:_(s8) = G_TRUNC %3(s32)256 %7:_(s8) = G_CONSTANT i8 8257 %5:_(s8) = G_FSHL %0, %1, %7(s8)258 %6:_(s32) = G_ANYEXT %5(s8)259 $w0 = COPY %6(s32)260 RET_ReallyLR implicit $w0261 262...263 264---265name: fshl_i16_const_shift266alignment: 4267tracksRegLiveness: true268body: |269 bb.0:270 liveins: $w0, $w1271 272 ; CHECK-LABEL: name: fshl_i16_const_shift273 ; CHECK: liveins: $w0, $w1274 ; CHECK-NEXT: {{ $}}275 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0276 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1277 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12278 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)279 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535280 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]281 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4282 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)283 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]284 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)285 ; CHECK-NEXT: RET_ReallyLR implicit $w0286 %2:_(s32) = COPY $w0287 %0:_(s16) = G_TRUNC %2(s32)288 %3:_(s32) = COPY $w1289 %1:_(s16) = G_TRUNC %3(s32)290 %4:_(s16) = G_CONSTANT i16 12291 %5:_(s16) = G_FSHL %0, %1, %4(s16)292 %6:_(s32) = G_ANYEXT %5(s16)293 $w0 = COPY %6(s32)294 RET_ReallyLR implicit $w0295 296...297 298---299name: fshl_i16_const_overshift300alignment: 4301tracksRegLiveness: true302body: |303 bb.0:304 liveins: $w0, $w1305 306 ; CHECK-LABEL: name: fshl_i16_const_overshift307 ; CHECK: liveins: $w0, $w1308 ; CHECK-NEXT: {{ $}}309 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0310 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1311 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4312 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)313 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535314 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]315 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 12316 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)317 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]318 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)319 ; CHECK-NEXT: RET_ReallyLR implicit $w0320 %2:_(s32) = COPY $w0321 %0:_(s16) = G_TRUNC %2(s32)322 %3:_(s32) = COPY $w1323 %1:_(s16) = G_TRUNC %3(s32)324 %4:_(s16) = G_CONSTANT i16 20325 %5:_(s16) = G_FSHL %0, %1, %4(s16)326 %6:_(s32) = G_ANYEXT %5(s16)327 $w0 = COPY %6(s32)328 RET_ReallyLR implicit $w0329 330...331 332---333name: fshl_i16_shift_by_bitwidth334alignment: 4335tracksRegLiveness: true336body: |337 bb.0:338 liveins: $w0, $w1339 340 ; CHECK-LABEL: name: fshl_i16_shift_by_bitwidth341 ; CHECK: liveins: $w0, $w1342 ; CHECK-NEXT: {{ $}}343 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0344 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1345 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0346 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)347 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535348 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]349 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1350 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)351 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C1]]352 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 15353 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[C3]](s64)354 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]355 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)356 ; CHECK-NEXT: RET_ReallyLR implicit $w0357 %2:_(s32) = COPY $w0358 %0:_(s16) = G_TRUNC %2(s32)359 %3:_(s32) = COPY $w1360 %1:_(s16) = G_TRUNC %3(s32)361 %4:_(s16) = G_CONSTANT i16 16362 %5:_(s16) = G_FSHL %0, %1, %4(s16)363 %6:_(s32) = G_ANYEXT %5(s16)364 $w0 = COPY %6(s32)365 RET_ReallyLR implicit $w0366 367...368 369---370name: fshl_i32_const_shift371alignment: 4372tracksRegLiveness: true373body: |374 bb.0:375 liveins: $w0, $w1376 377 ; CHECK-LABEL: name: fshl_i32_const_shift378 ; CHECK: liveins: $w0, $w1379 ; CHECK-NEXT: {{ $}}380 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0381 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1382 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 23383 ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)384 ; CHECK-NEXT: $w0 = COPY [[FSHR]](s32)385 ; CHECK-NEXT: RET_ReallyLR implicit $w0386 %0:_(s32) = COPY $w0387 %1:_(s32) = COPY $w1388 %2:_(s32) = G_CONSTANT i32 9389 %3:_(s32) = G_FSHL %0, %1, %2(s32)390 $w0 = COPY %3(s32)391 RET_ReallyLR implicit $w0392 393...394 395---396name: fshl_i32_const_overshift397alignment: 4398tracksRegLiveness: true399body: |400 bb.0:401 liveins: $w0, $w1402 403 ; CHECK-LABEL: name: fshl_i32_const_overshift404 ; CHECK: liveins: $w0, $w1405 ; CHECK-NEXT: {{ $}}406 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0407 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1408 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 22409 ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)410 ; CHECK-NEXT: $w0 = COPY [[FSHR]](s32)411 ; CHECK-NEXT: RET_ReallyLR implicit $w0412 %0:_(s32) = COPY $w0413 %1:_(s32) = COPY $w1414 %4:_(s32) = G_CONSTANT i32 42415 %3:_(s32) = G_FSHL %0, %1, %4(s32)416 $w0 = COPY %3(s32)417 RET_ReallyLR implicit $w0418 419...420 421---422name: fshl_i32_shift_by_bandwidth423alignment: 4424tracksRegLiveness: true425body: |426 bb.0:427 liveins: $w0, $w1428 429 ; CHECK-LABEL: name: fshl_i32_shift_by_bandwidth430 ; CHECK: liveins: $w0, $w1431 ; CHECK-NEXT: {{ $}}432 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0433 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1434 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0435 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)436 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1437 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C1]](s64)438 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 31439 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[C2]](s64)440 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]441 ; CHECK-NEXT: $w0 = COPY [[OR]](s32)442 ; CHECK-NEXT: RET_ReallyLR implicit $w0443 %0:_(s32) = COPY $w0444 %1:_(s32) = COPY $w1445 %4:_(s32) = G_CONSTANT i32 32446 %3:_(s32) = G_FSHL %0, %1, %4(s32)447 $w0 = COPY %3(s32)448 RET_ReallyLR implicit $w0449 450...451 452---453name: fshl_i64_const_shift454alignment: 4455tracksRegLiveness: true456body: |457 bb.0:458 liveins: $x0, $x1459 460 ; CHECK-LABEL: name: fshl_i64_const_shift461 ; CHECK: liveins: $x0, $x1462 ; CHECK-NEXT: {{ $}}463 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0464 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1465 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 23466 ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)467 ; CHECK-NEXT: $x0 = COPY [[FSHR]](s64)468 ; CHECK-NEXT: RET_ReallyLR implicit $x0469 %0:_(s64) = COPY $x0470 %1:_(s64) = COPY $x1471 %4:_(s64) = G_CONSTANT i64 41472 %3:_(s64) = G_FSHL %0, %1, %4(s64)473 $x0 = COPY %3(s64)474 RET_ReallyLR implicit $x0475 476...477 478---479name: fshl_i64_const_overshift480alignment: 4481tracksRegLiveness: true482body: |483 bb.0:484 liveins: $x0, $x1485 486 ; CHECK-LABEL: name: fshl_i64_const_overshift487 ; CHECK: liveins: $x0, $x1488 ; CHECK-NEXT: {{ $}}489 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0490 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1491 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56492 ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)493 ; CHECK-NEXT: $x0 = COPY [[FSHR]](s64)494 ; CHECK-NEXT: RET_ReallyLR implicit $x0495 %0:_(s64) = COPY $x0496 %1:_(s64) = COPY $x1497 %4:_(s64) = G_CONSTANT i64 72498 %3:_(s64) = G_FSHL %0, %1, %4(s64)499 $x0 = COPY %3(s64)500 RET_ReallyLR implicit $x0501 502...503 504---505name: fshl_i64_shift_by_bandwidth506alignment: 4507tracksRegLiveness: true508body: |509 bb.0:510 liveins: $x0, $x1511 512 ; CHECK-LABEL: name: fshl_i64_shift_by_bandwidth513 ; CHECK: liveins: $x0, $x1514 ; CHECK-NEXT: {{ $}}515 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0516 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1517 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63518 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0519 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1520 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C1]](s64)521 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s64)522 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[C]](s64)523 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]524 ; CHECK-NEXT: $x0 = COPY [[OR]](s64)525 ; CHECK-NEXT: RET_ReallyLR implicit $x0526 %0:_(s64) = COPY $x0527 %1:_(s64) = COPY $x1528 %4:_(s64) = G_CONSTANT i64 64529 %3:_(s64) = G_FSHL %0, %1, %4(s64)530 $x0 = COPY %3(s64)531 RET_ReallyLR implicit $x0532 533...534 535 536 537---538name: fshl_v4i32_shift_by_bitwidth539alignment: 4540tracksRegLiveness: true541body: |542 bb.0:543 liveins: $q0, $q1544 545 ; CHECK-LABEL: name: fshl_v4i32_shift_by_bitwidth546 ; CHECK: liveins: $q0, $q1547 ; CHECK-NEXT: {{ $}}548 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0549 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1550 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31551 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0552 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32), [[C1]](s32), [[C1]](s32)553 ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)554 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1555 ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C2]](s32), [[C2]](s32), [[C2]](s32), [[C2]](s32)556 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<4 x s32>) = G_SHL [[COPY]], [[BUILD_VECTOR]](<4 x s32>)557 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<4 x s32>) = G_LSHR [[COPY1]], [[BUILD_VECTOR2]](<4 x s32>)558 ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(<4 x s32>) = G_LSHR [[LSHR]], [[BUILD_VECTOR1]](<4 x s32>)559 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<4 x s32>) = disjoint G_OR [[SHL]], [[LSHR1]]560 ; CHECK-NEXT: $q0 = COPY [[OR]](<4 x s32>)561 ; CHECK-NEXT: RET_ReallyLR implicit $q0562 %0:_(<4 x s32>) = COPY $q0563 %1:_(<4 x s32>) = COPY $q1564 %3:_(s32) = G_CONSTANT i32 32565 %2:_(<4 x s32>) = G_BUILD_VECTOR %3(s32), %3(s32), %3(s32), %3(s32)566 %4:_(<4 x s32>) = G_FSHL %0, %1, %2(<4 x s32>)567 $q0 = COPY %4(<4 x s32>)568 RET_ReallyLR implicit $q0569 570...571