1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple aarch64-unknown-unknown -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s 3--- 4name: shl_cimm_32 5legalized: true 6tracksRegLiveness: true 7body: | 8 bb.1: 9 liveins: $w0 10 11 ; CHECK-LABEL: name: shl_cimm_32 12 ; CHECK: liveins: $w0 13 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0 14 ; CHECK: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 8 15 ; CHECK: [[SHL:%[0-9]+]]:gpr(s32) = G_SHL [[COPY]], [[C]](s32) 16 ; CHECK: $w0 = COPY [[SHL]](s32) 17 ; CHECK: RET_ReallyLR implicit $w0 18 %0:_(s32) = COPY $w0 19 %1:_(s32) = G_CONSTANT i32 8 20 %2:_(s32) = G_SHL %0, %1(s32) 21 $w0 = COPY %2(s32) 22 RET_ReallyLR implicit $w0 23 24... 25--- 26name: shl_cimm_64 27legalized: true 28tracksRegLiveness: true 29body: | 30 bb.1: 31 liveins: $x0 32 33 ; CHECK-LABEL: name: shl_cimm_64 34 ; CHECK: liveins: $x0 35 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0 36 ; CHECK: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 8 37 ; CHECK: [[SHL:%[0-9]+]]:gpr(s64) = G_SHL [[COPY]], [[C]](s64) 38 ; CHECK: $x0 = COPY [[SHL]](s64) 39 ; CHECK: RET_ReallyLR implicit $x0 40 %0:_(s64) = COPY $x0 41 %1:_(s64) = G_CONSTANT i64 8 42 %2:_(s64) = G_SHL %0, %1(s64) 43 $x0 = COPY %2(s64) 44 RET_ReallyLR implicit $x0 45 46... 47--- 48name: lshr_cimm_32 49legalized: true 50tracksRegLiveness: true 51body: | 52 bb.1: 53 liveins: $w0 54 55 ; CHECK-LABEL: name: lshr_cimm_32 56 ; CHECK: liveins: $w0 57 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0 58 ; CHECK: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 8 59 ; CHECK: [[LSHR:%[0-9]+]]:gpr(s32) = G_LSHR [[COPY]], [[C]](s64) 60 ; CHECK: $w0 = COPY [[LSHR]](s32) 61 ; CHECK: RET_ReallyLR implicit $w0 62 %0:_(s32) = COPY $w0 63 %3:_(s64) = G_CONSTANT i64 8 64 %2:_(s32) = G_LSHR %0, %3(s64) 65 $w0 = COPY %2(s32) 66 RET_ReallyLR implicit $w0 67 68... 69--- 70name: lshr_cimm_64 71legalized: true 72tracksRegLiveness: true 73body: | 74 bb.1: 75 liveins: $x0 76 77 ; CHECK-LABEL: name: lshr_cimm_64 78 ; CHECK: liveins: $x0 79 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0 80 ; CHECK: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 8 81 ; CHECK: [[LSHR:%[0-9]+]]:gpr(s64) = G_LSHR [[COPY]], [[C]](s64) 82 ; CHECK: $x0 = COPY [[LSHR]](s64) 83 ; CHECK: RET_ReallyLR implicit $x0 84 %0:_(s64) = COPY $x0 85 %1:_(s64) = G_CONSTANT i64 8 86 %2:_(s64) = G_LSHR %0, %1(s64) 87 $x0 = COPY %2(s64) 88 RET_ReallyLR implicit $x0 89 90... 91--- 92name: ashr_cimm_32 93legalized: true 94tracksRegLiveness: true 95body: | 96 bb.1: 97 liveins: $w0 98 99 ; CHECK-LABEL: name: ashr_cimm_32 100 ; CHECK: liveins: $w0 101 ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0 102 ; CHECK: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 8 103 ; CHECK: [[ASHR:%[0-9]+]]:gpr(s32) = G_ASHR [[COPY]], [[C]](s64) 104 ; CHECK: $w0 = COPY [[ASHR]](s32) 105 ; CHECK: RET_ReallyLR implicit $w0 106 %0:_(s32) = COPY $w0 107 %3:_(s64) = G_CONSTANT i64 8 108 %2:_(s32) = G_ASHR %0, %3(s64) 109 $w0 = COPY %2(s32) 110 RET_ReallyLR implicit $w0 111 112... 113--- 114name: ashr_cimm_64 115legalized: true 116tracksRegLiveness: true 117body: | 118 bb.1: 119 liveins: $x0 120 121 ; CHECK-LABEL: name: ashr_cimm_64 122 ; CHECK: liveins: $x0 123 ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0 124 ; CHECK: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 8 125 ; CHECK: [[ASHR:%[0-9]+]]:gpr(s64) = G_ASHR [[COPY]], [[C]](s64) 126 ; CHECK: $x0 = COPY [[ASHR]](s64) 127 ; CHECK: RET_ReallyLR implicit $x0 128 %0:_(s64) = COPY $x0 129 %1:_(s64) = G_CONSTANT i64 8 130 %2:_(s64) = G_ASHR %0, %1(s64) 131 $x0 = COPY %2(s64) 132 RET_ReallyLR implicit $x0 133 134... 135