156 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs -mtriple aarch64-unknown-unknown %s -o - | FileCheck %s3 4---5name: mul_to_lshr6alignment: 47tracksRegLiveness: true8frameInfo:9 maxAlignment: 110machineFunctionInfo: {}11body: |12 bb.0:13 liveins: $x014 ; CHECK-LABEL: name: mul_to_lshr15 ; CHECK: liveins: $x016 ; CHECK-NEXT: {{ $}}17 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x018 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 6119 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY]], [[C]](s64)20 ; CHECK-NEXT: $x0 = COPY [[LSHR]](s64)21 %0:_(s64) = COPY $x022 %1:_(s64) = G_CONSTANT i64 823 %2:_(s64) = G_UMULH %0, %1(s64)24 $x0 = COPY %2(s64)25...26---27name: mul_to_lshr_vector28alignment: 429tracksRegLiveness: true30frameInfo:31 maxAlignment: 132machineFunctionInfo: {}33body: |34 bb.0:35 liveins: $q036 ; CHECK-LABEL: name: mul_to_lshr_vector37 ; CHECK: liveins: $q038 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q040 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2941 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)42 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<4 x s32>) = G_LSHR [[COPY]], [[BUILD_VECTOR]](<4 x s32>)43 ; CHECK-NEXT: $q0 = COPY [[LSHR]](<4 x s32>)44 %0:_(<4 x s32>) = COPY $q045 %1:_(s32) = G_CONSTANT i32 846 %bv:_(<4 x s32>) = G_BUILD_VECTOR %1, %1, %1, %147 %2:_(<4 x s32>) = G_UMULH %0, %bv(<4 x s32>)48 $q0 = COPY %2(<4 x s32>)49...50---51name: mul_to_lshr_vector_out_of_range_shift52alignment: 453tracksRegLiveness: true54frameInfo:55 maxAlignment: 156machineFunctionInfo: {}57body: |58 bb.0:59 liveins: $q060 ; CHECK-LABEL: name: mul_to_lshr_vector_out_of_range_shift61 ; CHECK: liveins: $q062 ; CHECK-NEXT: {{ $}}63 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q064 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 165 ; CHECK-NEXT: %bv:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)66 ; CHECK-NEXT: [[UMULH:%[0-9]+]]:_(<4 x s32>) = G_UMULH [[COPY]], %bv67 ; CHECK-NEXT: $q0 = COPY [[UMULH]](<4 x s32>)68 %0:_(<4 x s32>) = COPY $q069 %1:_(s32) = G_CONSTANT i32 170 %bv:_(<4 x s32>) = G_BUILD_VECTOR %1, %1, %1, %171 %2:_(<4 x s32>) = G_UMULH %0, %bv(<4 x s32>)72 $q0 = COPY %2(<4 x s32>)73...74---75name: mul_to_lshr_out_of_range_shift76alignment: 477tracksRegLiveness: true78frameInfo:79 maxAlignment: 180machineFunctionInfo: {}81body: |82 bb.0:83 liveins: $x084 ; CHECK-LABEL: name: mul_to_lshr_out_of_range_shift85 ; CHECK: liveins: $x086 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x088 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 189 ; CHECK-NEXT: [[UMULH:%[0-9]+]]:_(s64) = G_UMULH [[COPY]], [[C]]90 ; CHECK-NEXT: $x0 = COPY [[UMULH]](s64)91 %0:_(s64) = COPY $x092 %1:_(s64) = G_CONSTANT i64 193 %2:_(s64) = G_UMULH %0, %1(s64)94 $x0 = COPY %2(s64)95...96---97name: mul_to_lshr_vector_nonuniform_const98alignment: 499tracksRegLiveness: true100frameInfo:101 maxAlignment: 1102machineFunctionInfo: {}103body: |104 bb.0:105 liveins: $q0106 ; CHECK-LABEL: name: mul_to_lshr_vector_nonuniform_const107 ; CHECK: liveins: $q0108 ; CHECK-NEXT: {{ $}}109 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0110 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 28111 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 27112 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 26113 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 29114 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C3]](s32), [[C]](s32), [[C1]](s32), [[C2]](s32)115 ; CHECK-NEXT: %mulh:_(<4 x s32>) = G_LSHR [[COPY]], [[BUILD_VECTOR]](<4 x s32>)116 ; CHECK-NEXT: $q0 = COPY %mulh(<4 x s32>)117 %0:_(<4 x s32>) = COPY $q0118 %cst1:_(s32) = G_CONSTANT i32 8119 %cst2:_(s32) = G_CONSTANT i32 16120 %cst3:_(s32) = G_CONSTANT i32 32121 %cst4:_(s32) = G_CONSTANT i32 64122 %bv:_(<4 x s32>) = G_BUILD_VECTOR %cst1, %cst2, %cst3, %cst4123 %mulh:_(<4 x s32>) = G_UMULH %0, %bv(<4 x s32>)124 $q0 = COPY %mulh(<4 x s32>)125...126---127name: mul_to_lshr_vector_nonuniform_const_elt_is_one128alignment: 4129tracksRegLiveness: true130frameInfo:131 maxAlignment: 1132machineFunctionInfo: {}133body: |134 bb.0:135 liveins: $q0136 ; CHECK-LABEL: name: mul_to_lshr_vector_nonuniform_const_elt_is_one137 ; CHECK: liveins: $q0138 ; CHECK-NEXT: {{ $}}139 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0140 ; CHECK-NEXT: %cst1:_(s32) = G_CONSTANT i32 8141 ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 1142 ; CHECK-NEXT: %cst3:_(s32) = G_CONSTANT i32 32143 ; CHECK-NEXT: %cst4:_(s32) = G_CONSTANT i32 64144 ; CHECK-NEXT: %bv:_(<4 x s32>) = G_BUILD_VECTOR %cst1(s32), %cst2(s32), %cst3(s32), %cst4(s32)145 ; CHECK-NEXT: %mulh:_(<4 x s32>) = G_UMULH [[COPY]], %bv146 ; CHECK-NEXT: $q0 = COPY %mulh(<4 x s32>)147 %0:_(<4 x s32>) = COPY $q0148 %cst1:_(s32) = G_CONSTANT i32 8149 %cst2:_(s32) = G_CONSTANT i32 1150 %cst3:_(s32) = G_CONSTANT i32 32151 %cst4:_(s32) = G_CONSTANT i32 64152 %bv:_(<4 x s32>) = G_BUILD_VECTOR %cst1, %cst2, %cst3, %cst4153 %mulh:_(<4 x s32>) = G_UMULH %0, %bv(<4 x s32>)154 $q0 = COPY %mulh(<4 x s32>)155...156