brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.7 KiB · 6bd1d99 Raw
362 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3 4...5---6# (x + y) - y -> x7name:            simplify_to_x8tracksRegLiveness: true9body:             |10  bb.0:11    liveins: $w0, $w112    ; CHECK-LABEL: name: simplify_to_x13    ; CHECK: liveins: $w0, $w114    ; CHECK-NEXT: {{  $}}15    ; CHECK-NEXT: %x:_(s32) = COPY $w016    ; CHECK-NEXT: $w0 = COPY %x(s32)17    ; CHECK-NEXT: RET_ReallyLR implicit $w018    %x:_(s32) = COPY $w019    %y:_(s32) = COPY $w120    %add:_(s32) = G_ADD %x, %y21    %sub:_(s32) = G_SUB %add, %y22    $w0 = COPY %sub(s32)23    RET_ReallyLR implicit $w024...25---26#  (x + y) - x -> y27name:            simplify_to_y28tracksRegLiveness: true29body:             |30  bb.0:31    liveins: $w0, $w132    ; CHECK-LABEL: name: simplify_to_y33    ; CHECK: liveins: $w0, $w134    ; CHECK-NEXT: {{  $}}35    ; CHECK-NEXT: %y:_(s32) = COPY $w136    ; CHECK-NEXT: $w0 = COPY %y(s32)37    ; CHECK-NEXT: RET_ReallyLR implicit $w038    %x:_(s32) = COPY $w039    %y:_(s32) = COPY $w140    %add:_(s32) = G_ADD %x, %y41    %sub:_(s32) = G_SUB %add, %x42    $w0 = COPY %sub(s32)43    RET_ReallyLR implicit $w044...45---46# (x + 1) - 1 -> x47name:            simplify_to_constant_x48tracksRegLiveness: true49body:             |50  bb.0:51    liveins: $w0, $w152    ; CHECK-LABEL: name: simplify_to_constant_x53    ; CHECK: liveins: $w0, $w154    ; CHECK-NEXT: {{  $}}55    ; CHECK-NEXT: %x:_(s32) = COPY $w056    ; CHECK-NEXT: $w0 = COPY %x(s32)57    ; CHECK-NEXT: RET_ReallyLR implicit $w058    %x:_(s32) = COPY $w059    %y1:_(s32) = G_CONSTANT i32 160    %y2:_(s32) = G_CONSTANT i32 161    %add:_(s32) = G_ADD %x, %y162    %sub:_(s32) = G_SUB %add, %y263    $w0 = COPY %sub(s32)64    RET_ReallyLR implicit $w065...66---67# (x + y) - x -> y68name:            simplify_to_constant_y69tracksRegLiveness: true70body:             |71  bb.0:72    liveins: $w0, $w173    ; CHECK-LABEL: name: simplify_to_constant_y74    ; CHECK: liveins: $w0, $w175    ; CHECK-NEXT: {{  $}}76    ; CHECK-NEXT: %y:_(s32) = COPY $w177    ; CHECK-NEXT: $w0 = COPY %y(s32)78    ; CHECK-NEXT: RET_ReallyLR implicit $w079    %x1:_(s32) = G_CONSTANT i32 180    %x2:_(s32) = G_CONSTANT i32 181    %y:_(s32) = COPY $w182    %add:_(s32) = G_ADD %x1, %y83    %sub:_(s32) = G_SUB %add, %x284    $w0 = COPY %sub(s32)85    RET_ReallyLR implicit $w086...87---88# (x + y) - y -> x89name:            vector_simplify_to_x90tracksRegLiveness: true91body:             |92  bb.0:93    liveins: $d0, $d194    ; CHECK-LABEL: name: vector_simplify_to_x95    ; CHECK: liveins: $d0, $d196    ; CHECK-NEXT: {{  $}}97    ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $d098    ; CHECK-NEXT: $d0 = COPY %x(<2 x s32>)99    ; CHECK-NEXT: RET_ReallyLR implicit $d0100    %x:_(<2 x s32>) = COPY $d0101    %y:_(<2 x s32>) = COPY $d1102    %add:_(<2 x s32>) = G_ADD %x, %y103    %sub:_(<2 x s32>) = G_SUB %add, %y104    $d0 = COPY %sub(<2 x s32>)105    RET_ReallyLR implicit $d0106...107---108# (x + 1) - 1 -> x109name:            splat_simplify_to_x110tracksRegLiveness: true111body:             |112  bb.0:113    liveins: $d0, $d1114    ; CHECK-LABEL: name: splat_simplify_to_x115    ; CHECK: liveins: $d0, $d1116    ; CHECK-NEXT: {{  $}}117    ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $d0118    ; CHECK-NEXT: $d0 = COPY %x(<2 x s32>)119    ; CHECK-NEXT: RET_ReallyLR implicit $d0120    %x:_(<2 x s32>) = COPY $d0121    %cst:_(s32) = G_CONSTANT i32 1122    %y1:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst123    %y2:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst124    %add:_(<2 x s32>) = G_ADD %x, %y1125    %sub:_(<2 x s32>) = G_SUB %add, %y2126    $d0 = COPY %sub(<2 x s32>)127    RET_ReallyLR implicit $d0128...129---130#  (x + y) - x -> y131name:            unique_registers_no_fold132tracksRegLiveness: true133body:             |134  bb.0:135    liveins: $w0, $w1, $w2136    ; CHECK-LABEL: name: unique_registers_no_fold137    ; CHECK: liveins: $w0, $w1, $w2138    ; CHECK-NEXT: {{  $}}139    ; CHECK-NEXT: %x:_(s32) = COPY $w0140    ; CHECK-NEXT: %y:_(s32) = COPY $w1141    ; CHECK-NEXT: %z:_(s32) = COPY $w2142    ; CHECK-NEXT: %add:_(s32) = G_ADD %y, %x143    ; CHECK-NEXT: %sub:_(s32) = G_SUB %add, %z144    ; CHECK-NEXT: $w0 = COPY %sub(s32)145    ; CHECK-NEXT: RET_ReallyLR implicit $w0146    %x:_(s32) = COPY $w0147    %y:_(s32) = COPY $w1148    %z:_(s32) = COPY $w2149    %add:_(s32) = G_ADD %y, %x150    %sub:_(s32) = G_SUB %add, %z151    $w0 = COPY %sub(s32)152    RET_ReallyLR implicit $w0153...154---155# (x + y) - x -> y156name:            unique_constants_no_fold157tracksRegLiveness: true158body:             |159  bb.0:160    liveins: $w0, $w1161    ; CHECK-LABEL: name: unique_constants_no_fold162    ; CHECK: liveins: $w0, $w1163    ; CHECK-NEXT: {{  $}}164    ; CHECK-NEXT: %y:_(s32) = COPY $w1165    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1166    ; CHECK-NEXT: %sub:_(s32) = G_ADD %y, [[C]]167    ; CHECK-NEXT: $w0 = COPY %sub(s32)168    ; CHECK-NEXT: RET_ReallyLR implicit $w0169    %x1:_(s32) = G_CONSTANT i32 1170    %x2:_(s32) = G_CONSTANT i32 2171    %y:_(s32) = COPY $w1172    %add:_(s32) = G_ADD %x1, %y173    %sub:_(s32) = G_SUB %add, %x2174    $w0 = COPY %sub(s32)175    RET_ReallyLR implicit $w0176...177---178#  x - (y + x) -> 0 - y179name:            simplify_to_neg_y180tracksRegLiveness: true181body:             |182  bb.0:183    liveins: $w0, $w1184    ; CHECK-LABEL: name: simplify_to_neg_y185    ; CHECK: liveins: $w0, $w1186    ; CHECK-NEXT: {{  $}}187    ; CHECK-NEXT: %y:_(s32) = COPY $w1188    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0189    ; CHECK-NEXT: %sub:_(s32) = G_SUB [[C]], %y190    ; CHECK-NEXT: $w0 = COPY %sub(s32)191    ; CHECK-NEXT: RET_ReallyLR implicit $w0192    %x:_(s32) = COPY $w0193    %y:_(s32) = COPY $w1194    %add:_(s32) = G_ADD %x, %y195    %sub:_(s32) = G_SUB %x, %add196    $w0 = COPY %sub(s32)197    RET_ReallyLR implicit $w0198...199---200#  y - (y + x) -> 0 - x201name:            simplify_to_neg_x202tracksRegLiveness: true203body:             |204  bb.0:205    liveins: $w0, $w1206    ; CHECK-LABEL: name: simplify_to_neg_x207    ; CHECK: liveins: $w0, $w1208    ; CHECK-NEXT: {{  $}}209    ; CHECK-NEXT: %x:_(s32) = COPY $w0210    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0211    ; CHECK-NEXT: %sub:_(s32) = G_SUB [[C]], %x212    ; CHECK-NEXT: $w0 = COPY %sub(s32)213    ; CHECK-NEXT: RET_ReallyLR implicit $w0214    %x:_(s32) = COPY $w0215    %y:_(s32) = COPY $w1216    %add:_(s32) = G_ADD %x, %y217    %sub:_(s32) = G_SUB %y, %add218    $w0 = COPY %sub(s32)219    RET_ReallyLR implicit $w0220...221---222#  x - (y + x) -> 0 - y223name:            simplify_to_neg_y_constant224tracksRegLiveness: true225body:             |226  bb.0:227    liveins: $w0, $w1228    ; CHECK-LABEL: name: simplify_to_neg_y_constant229    ; CHECK: liveins: $w0, $w1230    ; CHECK-NEXT: {{  $}}231    ; CHECK-NEXT: %y:_(s32) = COPY $w1232    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0233    ; CHECK-NEXT: %sub:_(s32) = G_SUB [[C]], %y234    ; CHECK-NEXT: $w0 = COPY %sub(s32)235    ; CHECK-NEXT: RET_ReallyLR implicit $w0236    %x1:_(s32) = G_CONSTANT i32 1237    %x2:_(s32) = G_CONSTANT i32 1238    %y:_(s32) = COPY $w1239    %add:_(s32) = G_ADD %x1, %y240    %sub:_(s32) = G_SUB %x2, %add241    $w0 = COPY %sub(s32)242    RET_ReallyLR implicit $w0243...244---245#  y - (y + x) -> 0 - x246name:            simplify_to_neg_x_constant247tracksRegLiveness: true248body:             |249  bb.0:250    liveins: $w0, $w1251    ; CHECK-LABEL: name: simplify_to_neg_x_constant252    ; CHECK: liveins: $w0, $w1253    ; CHECK-NEXT: {{  $}}254    ; CHECK-NEXT: %x:_(s32) = COPY $w0255    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0256    ; CHECK-NEXT: %sub:_(s32) = G_SUB [[C]], %x257    ; CHECK-NEXT: $w0 = COPY %sub(s32)258    ; CHECK-NEXT: RET_ReallyLR implicit $w0259    %x:_(s32) = COPY $w0260    %y1:_(s32) = G_CONSTANT i32 1261    %y2:_(s32) = G_CONSTANT i32 1262    %add:_(s32) = G_ADD %x, %y1263    %sub:_(s32) = G_SUB %y2, %add264    $w0 = COPY %sub(s32)265    RET_ReallyLR implicit $w0266...267---268#  y - (y + x) -> 0 - x269name:            vector_simplify_to_neg_x270tracksRegLiveness: true271body:             |272  bb.0:273    liveins: $d0, $d1274    ; CHECK-LABEL: name: vector_simplify_to_neg_x275    ; CHECK: liveins: $d0, $d1276    ; CHECK-NEXT: {{  $}}277    ; CHECK-NEXT: %x:_(<2 x s32>) = COPY $d0278    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0279    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)280    ; CHECK-NEXT: %sub:_(<2 x s32>) = G_SUB [[BUILD_VECTOR]], %x281    ; CHECK-NEXT: $d0 = COPY %sub(<2 x s32>)282    ; CHECK-NEXT: RET_ReallyLR implicit $d0283    %x:_(<2 x s32>) = COPY $d0284    %y:_(<2 x s32>) = COPY $d1285    %add:_(<2 x s32>) = G_ADD %x, %y286    %sub:_(<2 x s32>) = G_SUB %y, %add287    $d0 = COPY %sub(<2 x s32>)288    RET_ReallyLR implicit $d0289...290---291# x - (y + x) -> 0 - y292name:            vector_simplify_to_neg_y_constant293tracksRegLiveness: true294body:             |295  bb.0:296    liveins: $d0, $d1297    ; CHECK-LABEL: name: vector_simplify_to_neg_y_constant298    ; CHECK: liveins: $d0, $d1299    ; CHECK-NEXT: {{  $}}300    ; CHECK-NEXT: %y:_(<2 x s32>) = COPY $d1301    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0302    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)303    ; CHECK-NEXT: %sub:_(<2 x s32>) = G_SUB [[BUILD_VECTOR]], %y304    ; CHECK-NEXT: $d0 = COPY %sub(<2 x s32>)305    ; CHECK-NEXT: RET_ReallyLR implicit $d0306    %cst:_(s32) = G_CONSTANT i32 1307    %x1:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst308    %x2:_(<2 x s32>) = G_BUILD_VECTOR %cst, %cst309    %y:_(<2 x s32>) = COPY $d1310    %add:_(<2 x s32>) = G_ADD %x1, %y311    %sub:_(<2 x s32>) = G_SUB %x2, %add312    $d0 = COPY %sub(<2 x s32>)313    RET_ReallyLR implicit $d0314...315---316# y - (y + x) -> 0 - x317name:            unique_registers_neg_no_fold318tracksRegLiveness: true319body:             |320  bb.0:321    liveins: $w0, $w1, $w2322    ; CHECK-LABEL: name: unique_registers_neg_no_fold323    ; CHECK: liveins: $w0, $w1, $w2324    ; CHECK-NEXT: {{  $}}325    ; CHECK-NEXT: %x:_(s32) = COPY $w0326    ; CHECK-NEXT: %y:_(s32) = COPY $w1327    ; CHECK-NEXT: %z:_(s32) = COPY $w2328    ; CHECK-NEXT: %add:_(s32) = G_ADD %x, %y329    ; CHECK-NEXT: %sub:_(s32) = G_SUB %z, %add330    ; CHECK-NEXT: $w0 = COPY %sub(s32)331    ; CHECK-NEXT: RET_ReallyLR implicit $w0332    %x:_(s32) = COPY $w0333    %y:_(s32) = COPY $w1334    %z:_(s32) = COPY $w2335    %add:_(s32) = G_ADD %x, %y336    %sub:_(s32) = G_SUB %z, %add337    $w0 = COPY %sub(s32)338    RET_ReallyLR implicit $w0339...340---341#  x - (y + x) -> 0 - y342name:            wrong_constant_neg_no_fold343tracksRegLiveness: true344body:             |345  bb.0:346    liveins: $w0, $w1347    ; CHECK-LABEL: name: wrong_constant_neg_no_fold348    ; CHECK: liveins: $w0, $w1349    ; CHECK-NEXT: {{  $}}350    ; CHECK-NEXT: %x1:_(s32) = G_CONSTANT i32 1351    ; CHECK-NEXT: %y:_(s32) = COPY $w1352    ; CHECK-NEXT: %sub:_(s32) = G_SUB %x1, %y353    ; CHECK-NEXT: $w0 = COPY %sub(s32)354    ; CHECK-NEXT: RET_ReallyLR implicit $w0355    %x1:_(s32) = G_CONSTANT i32 1356    %x2:_(s32) = G_CONSTANT i32 2357    %y:_(s32) = COPY $w1358    %add:_(s32) = G_ADD %x1, %y359    %sub:_(s32) = G_SUB %x2, %add360    $w0 = COPY %sub(s32)361    RET_ReallyLR implicit $w0362