brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.0 KiB · 8b39ebd Raw
273 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64 -global-isel -verify-machineinstrs -run-pass=legalizer %s -o - | FileCheck %s3# RUN: llc -mtriple=aarch64 -global-isel -verify-machineinstrs -mattr=+cssc -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=CHECK-CSSC4 5...6---7name:            s88tracksRegLiveness: true9body:             |10  bb.0:11    liveins: $w012    ; CHECK-LABEL: name: s813    ; CHECK: liveins: $w014    ; CHECK-NEXT: {{  $}}15    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF16    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25617    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[DEF]], [[C]]18    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s32) = G_BITREVERSE [[OR]]19    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s32) = G_CTLZ [[BITREVERSE]](s32)20    ; CHECK-NEXT: $w0 = COPY [[CTLZ]](s32)21    ; CHECK-NEXT: RET_ReallyLR implicit $w022    ;23    ; CHECK-CSSC-LABEL: name: s824    ; CHECK-CSSC: liveins: $w025    ; CHECK-CSSC-NEXT: {{  $}}26    ; CHECK-CSSC-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF27    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25628    ; CHECK-CSSC-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[DEF]], [[C]]29    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s32) = G_CTTZ [[OR]](s32)30    ; CHECK-CSSC-NEXT: $w0 = COPY [[CTTZ]](s32)31    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w032    %val:_(s8) = G_IMPLICIT_DEF33    %cttz:_(s8) = G_CTTZ %val(s8)34    %ext:_(s32) = G_ANYEXT %cttz(s8)35    $w0 = COPY %ext(s32)36    RET_ReallyLR implicit $w037 38...39---40name:            s1641tracksRegLiveness: true42body:             |43  bb.0:44    liveins: $w045    ; CHECK-LABEL: name: s1646    ; CHECK: liveins: $w047    ; CHECK-NEXT: {{  $}}48    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF49    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553650    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[DEF]], [[C]]51    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s32) = G_BITREVERSE [[OR]]52    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s32) = G_CTLZ [[BITREVERSE]](s32)53    ; CHECK-NEXT: $w0 = COPY [[CTLZ]](s32)54    ; CHECK-NEXT: RET_ReallyLR implicit $w055    ;56    ; CHECK-CSSC-LABEL: name: s1657    ; CHECK-CSSC: liveins: $w058    ; CHECK-CSSC-NEXT: {{  $}}59    ; CHECK-CSSC-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF60    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553661    ; CHECK-CSSC-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[DEF]], [[C]]62    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s32) = G_CTTZ [[OR]](s32)63    ; CHECK-CSSC-NEXT: $w0 = COPY [[CTTZ]](s32)64    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w065    %val:_(s16) = G_IMPLICIT_DEF66    %cttz:_(s16) = G_CTTZ %val(s16)67    %ext:_(s32) = G_ANYEXT %cttz(s16)68    $w0 = COPY %ext(s32)69    RET_ReallyLR implicit $w070 71...72---73name:            s3274alignment:       475tracksRegLiveness: true76body:             |77  bb.0:78    liveins: $w079 80    ; CHECK-LABEL: name: s3281    ; CHECK: liveins: $w082    ; CHECK-NEXT: {{  $}}83    ; CHECK-NEXT: %val:_(s32) = COPY $w084    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s32) = G_BITREVERSE %val85    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s32) = G_CTLZ [[BITREVERSE]](s32)86    ; CHECK-NEXT: $w0 = COPY [[CTLZ]](s32)87    ; CHECK-NEXT: RET_ReallyLR implicit $w088    ;89    ; CHECK-CSSC-LABEL: name: s3290    ; CHECK-CSSC: liveins: $w091    ; CHECK-CSSC-NEXT: {{  $}}92    ; CHECK-CSSC-NEXT: %val:_(s32) = COPY $w093    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s32) = G_CTTZ %val(s32)94    ; CHECK-CSSC-NEXT: $w0 = COPY [[CTTZ]](s32)95    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w096    %val:_(s32) = COPY $w097    %1:_(s32) = G_CTTZ %val(s32)98    $w0 = COPY %1(s32)99    RET_ReallyLR implicit $w0100 101...102---103name:            s64104alignment:       4105tracksRegLiveness: true106body:             |107  bb.0:108    liveins: $x0109 110    ; CHECK-LABEL: name: s64111    ; CHECK: liveins: $x0112    ; CHECK-NEXT: {{  $}}113    ; CHECK-NEXT: %val:_(s64) = COPY $x0114    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s64) = G_BITREVERSE %val115    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s64) = G_CTLZ [[BITREVERSE]](s64)116    ; CHECK-NEXT: $x0 = COPY [[CTLZ]](s64)117    ; CHECK-NEXT: RET_ReallyLR implicit $x0118    ;119    ; CHECK-CSSC-LABEL: name: s64120    ; CHECK-CSSC: liveins: $x0121    ; CHECK-CSSC-NEXT: {{  $}}122    ; CHECK-CSSC-NEXT: %val:_(s64) = COPY $x0123    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s64) = G_CTTZ %val(s64)124    ; CHECK-CSSC-NEXT: $x0 = COPY [[CTTZ]](s64)125    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $x0126    %val:_(s64) = COPY $x0127    %1:_(s64) = G_CTTZ %val(s64)128    $x0 = COPY %1(s64)129    RET_ReallyLR implicit $x0130...131---132name:            v4s32133alignment:       4134tracksRegLiveness: true135body:             |136  bb.0:137    liveins: $q0138 139    ; CHECK-LABEL: name: v4s32140    ; CHECK: liveins: $q0141    ; CHECK-NEXT: {{  $}}142    ; CHECK-NEXT: %val:_(<4 x s32>) = COPY $q0143    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1144    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)145    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<4 x s32>) = G_XOR %val, [[BUILD_VECTOR]]146    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<4 x s32>) = G_ADD %val, [[BUILD_VECTOR]]147    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(<4 x s32>) = G_AND [[XOR]], [[ADD]]148    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[AND]](<4 x s32>)149    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)150    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]151    ; CHECK-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]152    ; CHECK-NEXT: $q0 = COPY [[UADDLP1]](<4 x s32>)153    ; CHECK-NEXT: RET_ReallyLR implicit $q0154    ;155    ; CHECK-CSSC-LABEL: name: v4s32156    ; CHECK-CSSC: liveins: $q0157    ; CHECK-CSSC-NEXT: {{  $}}158    ; CHECK-CSSC-NEXT: %val:_(<4 x s32>) = COPY $q0159    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1160    ; CHECK-CSSC-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)161    ; CHECK-CSSC-NEXT: [[XOR:%[0-9]+]]:_(<4 x s32>) = G_XOR %val, [[BUILD_VECTOR]]162    ; CHECK-CSSC-NEXT: [[ADD:%[0-9]+]]:_(<4 x s32>) = G_ADD %val, [[BUILD_VECTOR]]163    ; CHECK-CSSC-NEXT: [[AND:%[0-9]+]]:_(<4 x s32>) = G_AND [[XOR]], [[ADD]]164    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[AND]](<4 x s32>)165    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)166    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]167    ; CHECK-CSSC-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]168    ; CHECK-CSSC-NEXT: $q0 = COPY [[UADDLP1]](<4 x s32>)169    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $q0170    %val:_(<4 x s32>) = COPY $q0171    %1:_(<4 x s32>) = G_CTTZ %val(<4 x s32>)172    $q0 = COPY %1(<4 x s32>)173    RET_ReallyLR implicit $q0174 175...176---177name:            s35178alignment:       4179tracksRegLiveness: true180body:             |181  bb.1:182    liveins: $x0183 184    ; CHECK-LABEL: name: s35185    ; CHECK: liveins: $x0186    ; CHECK-NEXT: {{  $}}187    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0188    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 34359738368189    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]190    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s64) = G_BITREVERSE [[OR]]191    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s64) = G_CTLZ [[BITREVERSE]](s64)192    ; CHECK-NEXT: $x0 = COPY [[CTLZ]](s64)193    ; CHECK-NEXT: RET_ReallyLR implicit $x0194    ;195    ; CHECK-CSSC-LABEL: name: s35196    ; CHECK-CSSC: liveins: $x0197    ; CHECK-CSSC-NEXT: {{  $}}198    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0199    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 34359738368200    ; CHECK-CSSC-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]201    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s64) = G_CTTZ [[OR]](s64)202    ; CHECK-CSSC-NEXT: $x0 = COPY [[CTTZ]](s64)203    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $x0204    %1:_(s64) = COPY $x0205    %0:_(s35) = G_TRUNC %1(s64)206    %2:_(s35) = G_CTTZ %0(s35)207    %3:_(s64) = G_ANYEXT %2(s35)208    $x0 = COPY %3(s64)209    RET_ReallyLR implicit $x0210...211---212name:            s65213alignment:       4214tracksRegLiveness: true215body:             |216  bb.1:217    liveins: $x0, $x1218 219    ; CHECK-LABEL: name: s65220    ; CHECK: liveins: $x0, $x1221    ; CHECK-NEXT: {{  $}}222    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0223    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1224    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0225    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2226    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]227    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[COPY1]], [[C1]]228    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C]]229    ; CHECK-NEXT: [[BITREVERSE:%[0-9]+]]:_(s64) = G_BITREVERSE [[OR1]]230    ; CHECK-NEXT: [[CTLZ:%[0-9]+]]:_(s64) = G_CTLZ [[BITREVERSE]](s64)231    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 64232    ; CHECK-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[CTLZ]], [[C2]]233    ; CHECK-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[C]], [[C]], [[UADDO1]]234    ; CHECK-NEXT: [[BITREVERSE1:%[0-9]+]]:_(s64) = G_BITREVERSE [[OR]]235    ; CHECK-NEXT: [[CTLZ1:%[0-9]+]]:_(s64) = G_CTLZ [[BITREVERSE1]](s64)236    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[UADDO]], [[CTLZ1]]237    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[UADDE]], [[C]]238    ; CHECK-NEXT: $x0 = COPY [[SELECT]](s64)239    ; CHECK-NEXT: $x1 = COPY [[SELECT1]](s64)240    ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1241    ;242    ; CHECK-CSSC-LABEL: name: s65243    ; CHECK-CSSC: liveins: $x0, $x1244    ; CHECK-CSSC-NEXT: {{  $}}245    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0246    ; CHECK-CSSC-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1247    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0248    ; CHECK-CSSC-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2249    ; CHECK-CSSC-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[COPY]], [[C]]250    ; CHECK-CSSC-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[COPY1]], [[C1]]251    ; CHECK-CSSC-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[OR]](s64), [[C]]252    ; CHECK-CSSC-NEXT: [[CTTZ:%[0-9]+]]:_(s64) = G_CTTZ [[OR1]](s64)253    ; CHECK-CSSC-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 64254    ; CHECK-CSSC-NEXT: [[UADDO:%[0-9]+]]:_(s64), [[UADDO1:%[0-9]+]]:_(s32) = G_UADDO [[CTTZ]], [[C2]]255    ; CHECK-CSSC-NEXT: [[UADDE:%[0-9]+]]:_(s64), [[UADDE1:%[0-9]+]]:_(s32) = G_UADDE [[C]], [[C]], [[UADDO1]]256    ; CHECK-CSSC-NEXT: [[CTTZ1:%[0-9]+]]:_(s64) = G_CTTZ [[OR]](s64)257    ; CHECK-CSSC-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[UADDO]], [[CTTZ1]]258    ; CHECK-CSSC-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[UADDE]], [[C]]259    ; CHECK-CSSC-NEXT: $x0 = COPY [[SELECT]](s64)260    ; CHECK-CSSC-NEXT: $x1 = COPY [[SELECT1]](s64)261    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $x0, implicit $x1262    %1:_(s64) = COPY $x0263    %2:_(s64) = COPY $x1264    %3:_(s128) = G_MERGE_VALUES %1(s64), %2(s64)265    %0:_(s65) = G_TRUNC %3(s128)266    %4:_(s65) = G_CTTZ %0(s65)267    %7:_(s128) = G_ANYEXT %4(s65)268    %5:_(s64), %6:_(s64) = G_UNMERGE_VALUES %7(s128)269    $x0 = COPY %5(s64)270    $x1 = COPY %6(s64)271    RET_ReallyLR implicit $x0, implicit $x1272...273