280 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=aarch64-prelegalizer-combiner -mtriple aarch64-unknown-unknown %s -o - | FileCheck %s3 4---5name: add_unused6body: |7 bb.0:8 liveins: $w0, $w19 ; CHECK-LABEL: name: add_unused10 ; CHECK: liveins: $w0, $w111 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w013 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w114 ; CHECK-NEXT: %add:_(s32) = G_ADD [[COPY]], [[COPY1]]15 ; CHECK-NEXT: $w0 = COPY %add(s32)16 ; CHECK-NEXT: RET_ReallyLR implicit $w017 %0:_(s32) = COPY $w018 %1:_(s32) = COPY $w119 %add:_(s32), %o:_(s1) = G_SADDO %0, %120 $w0 = COPY %add(s32)21 RET_ReallyLR implicit $w022...23---24name: add_canon25body: |26 bb.0:27 liveins: $w0, $w128 ; CHECK-LABEL: name: add_canon29 ; CHECK: liveins: $w0, $w130 ; CHECK-NEXT: {{ $}}31 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w132 ; CHECK-NEXT: %const:_(s32) = G_CONSTANT i32 1033 ; CHECK-NEXT: %add:_(s32), %o:_(s1) = G_SADDO [[COPY]], %const34 ; CHECK-NEXT: %o_wide:_(s32) = G_ZEXT %o(s1)35 ; CHECK-NEXT: $w0 = COPY %add(s32)36 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)37 ; CHECK-NEXT: RET_ReallyLR implicit $w038 %0:_(s32) = COPY $w039 %1:_(s32) = COPY $w140 %const:_(s32) = G_CONSTANT i32 1041 %add:_(s32), %o:_(s1) = G_SADDO %const, %142 %o_wide:_(s32) = G_ZEXT %o(s1)43 $w0 = COPY %add(s32)44 $w1 = COPY %o_wide45 RET_ReallyLR implicit $w046...47---48name: add_const_fold49body: |50 bb.0:51 liveins: $w0, $w152 ; CHECK-LABEL: name: add_const_fold53 ; CHECK: liveins: $w0, $w154 ; CHECK-NEXT: {{ $}}55 ; CHECK-NEXT: %add:_(s32) = G_CONSTANT i32 2156 ; CHECK-NEXT: %o_wide:_(s32) = G_CONSTANT i32 057 ; CHECK-NEXT: $w0 = COPY %add(s32)58 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)59 ; CHECK-NEXT: RET_ReallyLR implicit $w060 %0:_(s32) = COPY $w061 %1:_(s32) = COPY $w162 %const:_(s32) = G_CONSTANT i32 1063 %const1:_(s32) = G_CONSTANT i32 1164 %add:_(s32), %o:_(s1) = G_UADDO %const, %const165 %o_wide:_(s32) = G_ZEXT %o(s1)66 $w0 = COPY %add(s32)67 $w1 = COPY %o_wide68 RET_ReallyLR implicit $w069...70---71name: add_add_zero72body: |73 bb.0:74 liveins: $w0, $w175 ; CHECK-LABEL: name: add_add_zero76 ; CHECK: liveins: $w0, $w177 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w279 ; CHECK-NEXT: %o_wide:_(s32) = G_CONSTANT i32 080 ; CHECK-NEXT: $w0 = COPY [[COPY]](s32)81 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)82 ; CHECK-NEXT: RET_ReallyLR implicit $w083 %0:_(s32) = COPY $w084 %1:_(s32) = COPY $w185 %2:_(s32) = COPY $w286 %const:_(s32) = G_CONSTANT i32 1087 %addl:_(s32) = nsw G_ADD %2, %const88 %const1:_(s32) = G_CONSTANT i32 -1089 %add:_(s32), %o:_(s1) = G_SADDO %addl, %const190 %o_wide:_(s32) = G_ZEXT %o(s1)91 $w0 = COPY %add(s32)92 $w1 = COPY %o_wide93 RET_ReallyLR implicit $w094...95---96name: add_multiuse97body: |98 bb.0:99 liveins: $w0, $w1100 ; CHECK-LABEL: name: add_multiuse101 ; CHECK: liveins: $w0, $w1102 ; CHECK-NEXT: {{ $}}103 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0104 ; CHECK-NEXT: %o_wide:_(s32) = G_CONSTANT i32 0105 ; CHECK-NEXT: $w0 = COPY [[COPY]](s32)106 ; CHECK-NEXT: $w1 = COPY [[COPY]](s32)107 ; CHECK-NEXT: $w2 = COPY %o_wide(s32)108 ; CHECK-NEXT: RET_ReallyLR implicit $w0109 %0:_(s32) = COPY $w0110 %const:_(s32) = G_CONSTANT i32 0111 %add:_(s32), %o:_(s1) = G_SADDO %0, %const112 %o_wide:_(s32) = G_ZEXT %o(s1)113 $w0 = COPY %add(s32)114 $w1 = COPY %add(s32)115 $w2 = COPY %o_wide116 RET_ReallyLR implicit $w0117...118---119name: add_vector120body: |121 bb.0:122 liveins: $w0, $w1123 ; CHECK-LABEL: name: add_vector124 ; CHECK: liveins: $w0, $w1125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0127 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1128 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2129 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3130 ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY]](s32), [[COPY1]](s32)131 ; CHECK-NEXT: %bv1:_(<4 x s32>) = G_BUILD_VECTOR [[COPY2]](s32), [[COPY3]](s32), [[COPY2]](s32), [[COPY3]](s32)132 ; CHECK-NEXT: %add:_(<4 x s32>), %o:_(<4 x s1>) = G_UADDO %bv0, %bv1133 ; CHECK-NEXT: %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s1>)134 ; CHECK-NEXT: $q0 = COPY %add(<4 x s32>)135 ; CHECK-NEXT: $q1 = COPY %o_wide(<4 x s32>)136 ; CHECK-NEXT: RET_ReallyLR implicit $w0137 %0:_(s32) = COPY $w0138 %1:_(s32) = COPY $w1139 %2:_(s32) = COPY $w2140 %3:_(s32) = COPY $w3141 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %0:_(s32), %1:_(s32)142 %bv1:_(<4 x s32>) = G_BUILD_VECTOR %2:_(s32), %3:_(s32), %2:_(s32), %3:_(s32)143 %add:_(<4 x s32>), %o:_(<4 x s1>) = G_UADDO %bv0, %bv1144 %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s1>)145 $q0 = COPY %add(<4 x s32>)146 $q1 = COPY %o_wide147 RET_ReallyLR implicit $w0148...149---150name: add_splat_vector151body: |152 bb.0:153 liveins: $w0, $w1154 ; CHECK-LABEL: name: add_splat_vector155 ; CHECK: liveins: $w0, $w1156 ; CHECK-NEXT: {{ $}}157 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0158 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1159 ; CHECK-NEXT: %bv0:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY]](s32), [[COPY1]](s32)160 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false161 ; CHECK-NEXT: %o:_(<4 x s1>) = G_BUILD_VECTOR [[C]](s1), [[C]](s1), [[C]](s1), [[C]](s1)162 ; CHECK-NEXT: %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s1>)163 ; CHECK-NEXT: $q0 = COPY %bv0(<4 x s32>)164 ; CHECK-NEXT: $q1 = COPY %o_wide(<4 x s32>)165 ; CHECK-NEXT: RET_ReallyLR implicit $w0166 %0:_(s32) = COPY $w0167 %1:_(s32) = COPY $w1168 %2:_(s32) = COPY $w2169 %3:_(s32) = COPY $w3170 %const:_(s32) = G_CONSTANT i32 0171 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %0:_(s32), %1:_(s32)172 %bv1:_(<4 x s32>) = G_BUILD_VECTOR %const:_(s32), %const:_(s32), %const:_(s32), %const:_(s32)173 %add:_(<4 x s32>), %o:_(<4 x s1>) = G_SADDO %bv0, %bv1174 %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s1>)175 $q0 = COPY %add(<4 x s32>)176 $q1 = COPY %o_wide177 RET_ReallyLR implicit $w0178...179---180name: sub_may181body: |182 bb.0:183 liveins: $w0, $w1184 ; CHECK-LABEL: name: sub_may185 ; CHECK: liveins: $w0, $w1186 ; CHECK-NEXT: {{ $}}187 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0188 ; CHECK-NEXT: %const:_(s32) = G_CONSTANT i32 512189 ; CHECK-NEXT: %sub:_(s32), %o:_(s1) = G_SSUBO [[COPY]], %const190 ; CHECK-NEXT: %o_wide:_(s32) = G_ZEXT %o(s1)191 ; CHECK-NEXT: $w0 = COPY %sub(s32)192 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)193 ; CHECK-NEXT: RET_ReallyLR implicit $w0194 %0:_(s32) = COPY $w0195 %const:_(s32) = G_CONSTANT i32 512196 %sub:_(s32), %o:_(s1) = G_SSUBO %0, %const197 %o_wide:_(s32) = G_ZEXT %o(s1)198 $w0 = COPY %sub(s32)199 $w1 = COPY %o_wide200 RET_ReallyLR implicit $w0201...202---203name: usub_may204body: |205 bb.0:206 liveins: $w0, $w1207 ; CHECK-LABEL: name: usub_may208 ; CHECK: liveins: $w0, $w1209 ; CHECK-NEXT: {{ $}}210 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0211 ; CHECK-NEXT: %const:_(s32) = G_CONSTANT i32 512212 ; CHECK-NEXT: %sub:_(s32), %o:_(s1) = G_USUBO [[COPY]], %const213 ; CHECK-NEXT: %o_wide:_(s32) = G_ZEXT %o(s1)214 ; CHECK-NEXT: $w0 = COPY %sub(s32)215 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)216 ; CHECK-NEXT: RET_ReallyLR implicit $w0217 %0:_(s32) = COPY $w0218 %const:_(s32) = G_CONSTANT i32 512219 %sub:_(s32), %o:_(s1) = G_USUBO %0, %const220 %o_wide:_(s32) = G_ZEXT %o(s1)221 $w0 = COPY %sub(s32)222 $w1 = COPY %o_wide223 RET_ReallyLR implicit $w0224...225---226name: usub_may_carry_s11227body: |228 bb.0:229 liveins: $w0, $w1230 ; CHECK-LABEL: name: usub_may_carry_s11231 ; CHECK: liveins: $w0, $w1232 ; CHECK-NEXT: {{ $}}233 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0234 ; CHECK-NEXT: %const:_(s32) = G_CONSTANT i32 512235 ; CHECK-NEXT: %sub:_(s32), %o:_(s11) = G_USUBO [[COPY]], %const236 ; CHECK-NEXT: %o_wide:_(s32) = G_ZEXT %o(s11)237 ; CHECK-NEXT: $w0 = COPY %sub(s32)238 ; CHECK-NEXT: $w1 = COPY %o_wide(s32)239 ; CHECK-NEXT: RET_ReallyLR implicit $w0240 %0:_(s32) = COPY $w0241 %const:_(s32) = G_CONSTANT i32 512242 %sub:_(s32), %o:_(s11) = G_USUBO %0, %const243 %o_wide:_(s32) = G_ZEXT %o(s11)244 $w0 = COPY %sub(s32)245 $w1 = COPY %o_wide246 RET_ReallyLR implicit $w0247...248---249name: usub_may_carry_s11_vector250body: |251 bb.0:252 liveins: $w0, $w1253 ; CHECK-LABEL: name: usub_may_carry_s11_vector254 ; CHECK: liveins: $w0, $w1255 ; CHECK-NEXT: {{ $}}256 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0257 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w0258 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w0259 ; CHECK-NEXT: %const:_(s32) = G_CONSTANT i32 512260 ; CHECK-NEXT: %bv:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)261 ; CHECK-NEXT: %bv1:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), %const(s32)262 ; CHECK-NEXT: %sub:_(<4 x s32>), %o:_(<4 x s11>) = G_USUBO %bv, %bv1263 ; CHECK-NEXT: %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s11>)264 ; CHECK-NEXT: $q0 = COPY %sub(<4 x s32>)265 ; CHECK-NEXT: $q1 = COPY %o_wide(<4 x s32>)266 ; CHECK-NEXT: RET_ReallyLR implicit $w0267 %0:_(s32) = COPY $w0268 %1:_(s32) = COPY $w0269 %2:_(s32) = COPY $w0270 %3:_(s32) = COPY $w0271 %const:_(s32) = G_CONSTANT i32 512272 %bv:_(<4 x s32>) = G_BUILD_VECTOR %const(s32), %0(s32), %1(s32), %2(s32)273 %bv1:_(<4 x s32>) = G_BUILD_VECTOR %0(s32), %1(s32), %2(s32), %const(s32)274 %sub:_(<4 x s32>), %o:_(<4 x s11>) = G_USUBO %bv, %bv1275 %o_wide:_(<4 x s32>) = G_ZEXT %o(<4 x s11>)276 $q0 = COPY %sub(<4 x s32>)277 $q1 = COPY %o_wide278 RET_ReallyLR implicit $w0279...280