brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.9 KiB · ef09ce3 Raw
379 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-- -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s3# RUN: llc -debugify-and-strip-all-safe -mtriple=aarch64-- -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s4---5name:            test_memcpy6tracksRegLiveness: true7body:             |8  bb.1:9    liveins: $w2, $x0, $x110 11    ; CHECK-LABEL: name: test_memcpy12    ; CHECK: liveins: $w2, $x0, $x113    ; CHECK-NEXT: {{  $}}14    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x015    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x116    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w217    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)18    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp19    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)20    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)21    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)22    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x223    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp24    ; CHECK-NEXT: RET_ReallyLR25    %0:_(p0) = COPY $x026    %1:_(p0) = COPY $x127    %2:_(s32) = COPY $w228    %3:_(s64) = G_ZEXT %2(s32)29    G_MEMCPY %0(p0), %1(p0), %3(s64), 0 :: (store unknown-size), (load unknown-size)30    RET_ReallyLR31 32...33---34name:            test_memcpy_tail35tracksRegLiveness: true36body:             |37  bb.1:38    liveins: $w2, $x0, $x139 40    ; CHECK-LABEL: name: test_memcpy_tail41    ; CHECK: liveins: $w2, $x0, $x142    ; CHECK-NEXT: {{  $}}43    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x044    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x145    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w246    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)47    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)48    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)49    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)50    ; CHECK-NEXT: TCRETURNdi &memcpy, 0, csr_aarch64_aapcs, implicit $sp, implicit $x0, implicit $x1, implicit $x251    %0:_(p0) = COPY $x052    %1:_(p0) = COPY $x153    %2:_(s32) = COPY $w254    %3:_(s64) = G_ZEXT %2(s32)55    G_MEMCPY %0(p0), %1(p0), %3(s64), 1 :: (store unknown-size), (load unknown-size)56    RET_ReallyLR57 58...59---60name:            test_memmove61tracksRegLiveness: true62body:             |63  bb.1:64    liveins: $w2, $x0, $x165 66    ; CHECK-LABEL: name: test_memmove67    ; CHECK: liveins: $w2, $x0, $x168    ; CHECK-NEXT: {{  $}}69    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x070    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x171    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w272    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)73    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp74    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)75    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)76    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)77    ; CHECK-NEXT: BL &memmove, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x278    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp79    ; CHECK-NEXT: RET_ReallyLR80    %0:_(p0) = COPY $x081    %1:_(p0) = COPY $x182    %2:_(s32) = COPY $w283    %3:_(s64) = G_ZEXT %2(s32)84    G_MEMMOVE %0(p0), %1(p0), %3(s64), 0 :: (store unknown-size), (load unknown-size)85    RET_ReallyLR86 87...88---89name:            test_memset90tracksRegLiveness: true91body:             |92  bb.1:93    liveins: $w1, $w2, $x094 95    ; CHECK-LABEL: name: test_memset96    ; CHECK: liveins: $w1, $w2, $x097    ; CHECK-NEXT: {{  $}}98    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x099    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1100    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2101    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)102    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp103    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)104    ; CHECK-NEXT: $w1 = COPY [[COPY1]](s32)105    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)106    ; CHECK-NEXT: BL &memset, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $w1, implicit $x2107    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp108    ; CHECK-NEXT: RET_ReallyLR109    %0:_(p0) = COPY $x0110    %1:_(s32) = COPY $w1111    %2:_(s32) = COPY $w2112    %3:_(s8) = G_TRUNC %1(s32)113    %4:_(s64) = G_ZEXT %2(s32)114    G_MEMSET %0(p0), %3(s8), %4(s64), 0 :: (store unknown-size)115    RET_ReallyLR116 117...118---119name:            no_tail_call120tracksRegLiveness: true121body:             |122  bb.1:123    liveins: $w2, $x0, $x1124 125    ; CHECK-LABEL: name: no_tail_call126    ; CHECK: liveins: $w2, $x0, $x1127    ; CHECK-NEXT: {{  $}}128    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1129    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0130    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2131    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)132    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp133    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)134    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)135    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)136    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2137    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp138    ; CHECK-NEXT: $x0 = COPY [[ZEXT]](s64)139    ; CHECK-NEXT: RET_ReallyLR implicit $x0140    %0:_(p0) = COPY $x1141    %1:_(p0) = COPY $x0142    %2:_(s32) = COPY $w2143    %3:_(s64) = G_ZEXT %2(s32)144    G_MEMCPY %0(p0), %1(p0), %3(s64), 1 :: (store unknown-size), (load unknown-size)145    $x0 = COPY %3146    RET_ReallyLR implicit $x0147 148...149---150name:            dont_tc_twice151tracksRegLiveness: true152body:             |153  bb.1:154    liveins: $w2, $x0, $x1155    ; CHECK-LABEL: name: dont_tc_twice156    ; CHECK: liveins: $w2, $x0, $x1157    ; CHECK-NEXT: {{  $}}158    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0159    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1160    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2161    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY2]](s32)162    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp163    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)164    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)165    ; CHECK-NEXT: $x2 = COPY [[ZEXT]](s64)166    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2167    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp168    ; CHECK-NEXT: TCRETURNdi &memset, 0, csr_aarch64_aapcs, implicit $sp169    %0:_(p0) = COPY $x0170    %1:_(p0) = COPY $x1171    %2:_(s32) = COPY $w2172    %4:_(s1) = G_CONSTANT i1 false173    %3:_(s64) = G_ZEXT %2(s32)174    G_MEMCPY %0(p0), %1(p0), %3(s64), 1 :: (store unknown-size), (load unknown-size)175    TCRETURNdi &memset, 0, csr_aarch64_aapcs, implicit $sp176 177...178---179name:            tail_with_copy_ret180alignment:       4181tracksRegLiveness: true182registers:183  - { id: 0, class: _ }184  - { id: 1, class: _ }185  - { id: 2, class: _ }186liveins:187  - { reg: '$x0' }188  - { reg: '$x1' }189  - { reg: '$x2' }190frameInfo:191  maxAlignment:    1192machineFunctionInfo: {}193body:             |194  bb.1.entry:195    liveins: $x0, $x1, $x2196 197    ; CHECK-LABEL: name: tail_with_copy_ret198    ; CHECK: liveins: $x0, $x1, $x2199    ; CHECK-NEXT: {{  $}}200    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0201    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1202    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2203    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)204    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)205    ; CHECK-NEXT: $x2 = COPY [[COPY2]](s64)206    ; CHECK-NEXT: TCRETURNdi &memcpy, 0, csr_aarch64_aapcs, implicit $sp, implicit $x0, implicit $x1, implicit $x2207    %0:_(p0) = COPY $x0208    %1:_(p0) = COPY $x1209    %2:_(s64) = COPY $x2210    G_MEMCPY %0(p0), %1(p0), %2(s64), 1 :: (store (s8)), (load (s8))211    $x0 = COPY %0(p0)212    RET_ReallyLR implicit $x0213 214...215---216name:            dont_tc_mismatched_copies217alignment:       4218tracksRegLiveness: true219registers:220  - { id: 0, class: _ }221  - { id: 1, class: _ }222  - { id: 2, class: _ }223liveins:224  - { reg: '$x0' }225  - { reg: '$x1' }226  - { reg: '$x2' }227frameInfo:228  maxAlignment:    1229machineFunctionInfo: {}230body:             |231  bb.1.entry:232    liveins: $x0, $x1, $x2233 234    ; CHECK-LABEL: name: dont_tc_mismatched_copies235    ; CHECK: liveins: $x0, $x1, $x2236    ; CHECK-NEXT: {{  $}}237    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0238    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1239    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2240    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp241    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)242    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)243    ; CHECK-NEXT: $x2 = COPY [[COPY2]](s64)244    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2245    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp246    ; CHECK-NEXT: $x1 = COPY [[COPY]](p0)247    ; CHECK-NEXT: RET_ReallyLR implicit $x0248    %0:_(p0) = COPY $x0249    %1:_(p0) = COPY $x1250    %2:_(s64) = COPY $x2251    G_MEMCPY %0(p0), %1(p0), %2(s64), 1 :: (store (s8)), (load (s8))252    $x1 = COPY %0(p0)253    RET_ReallyLR implicit $x0254 255...256---257name:            dont_tc_extra_copy258alignment:       4259tracksRegLiveness: true260registers:261  - { id: 0, class: _ }262  - { id: 1, class: _ }263  - { id: 2, class: _ }264liveins:265  - { reg: '$x0' }266  - { reg: '$x1' }267  - { reg: '$x2' }268frameInfo:269  maxAlignment:    1270machineFunctionInfo: {}271body:             |272  bb.1.entry:273    liveins: $x0, $x1, $x2274 275    ; CHECK-LABEL: name: dont_tc_extra_copy276    ; CHECK: liveins: $x0, $x1, $x2277    ; CHECK-NEXT: {{  $}}278    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0279    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1280    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2281    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp282    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)283    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)284    ; CHECK-NEXT: $x2 = COPY [[COPY2]](s64)285    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2286    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp287    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)288    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)289    ; CHECK-NEXT: RET_ReallyLR implicit $x0290    %0:_(p0) = COPY $x0291    %1:_(p0) = COPY $x1292    %2:_(s64) = COPY $x2293    G_MEMCPY %0(p0), %1(p0), %2(s64), 1 :: (store (s8)), (load (s8))294    $x0 = COPY %0(p0)295    $x0 = COPY %0(p0)296    RET_ReallyLR implicit $x0297 298...299---300name:            dont_tc_mismatched_ret301alignment:       4302tracksRegLiveness: true303registers:304  - { id: 0, class: _ }305  - { id: 1, class: _ }306  - { id: 2, class: _ }307liveins:308  - { reg: '$x0' }309  - { reg: '$x1' }310  - { reg: '$x2' }311frameInfo:312  maxAlignment:    1313machineFunctionInfo: {}314body:             |315  bb.1.entry:316    liveins: $x0, $x1, $x2317 318    ; CHECK-LABEL: name: dont_tc_mismatched_ret319    ; CHECK: liveins: $x0, $x1, $x2320    ; CHECK-NEXT: {{  $}}321    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1322    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x0323    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2324    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp325    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)326    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)327    ; CHECK-NEXT: $x2 = COPY [[COPY2]](s64)328    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2329    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp330    ; CHECK-NEXT: $x1 = COPY [[COPY]](p0)331    ; CHECK-NEXT: RET_ReallyLR implicit $x0332    %0:_(p0) = COPY $x1333    %1:_(p0) = COPY $x0334    %2:_(s64) = COPY $x2335    G_MEMCPY %0(p0), %1(p0), %2(s64), 1 :: (store (s8)), (load (s8))336    $x1 = COPY %0(p0)337    RET_ReallyLR implicit $x0338 339...340---341name:            dont_tc_ret_void_copy342alignment:       4343tracksRegLiveness: true344registers:345  - { id: 0, class: _ }346  - { id: 1, class: _ }347  - { id: 2, class: _ }348liveins:349  - { reg: '$x0' }350  - { reg: '$x1' }351  - { reg: '$x2' }352frameInfo:353  maxAlignment:    1354machineFunctionInfo: {}355body:             |356  bb.1.entry:357    liveins: $x0, $x1, $x2358 359    ; CHECK-LABEL: name: dont_tc_ret_void_copy360    ; CHECK: liveins: $x0, $x1, $x2361    ; CHECK-NEXT: {{  $}}362    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0363    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1364    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2365    ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp366    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)367    ; CHECK-NEXT: $x1 = COPY [[COPY1]](p0)368    ; CHECK-NEXT: $x2 = COPY [[COPY2]](s64)369    ; CHECK-NEXT: BL &memcpy, csr_aarch64_aapcs_thisreturn, implicit-def $lr, implicit $sp, implicit $x0, implicit $x1, implicit $x2370    ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp371    ; CHECK-NEXT: $x0 = COPY [[COPY]](p0)372    ; CHECK-NEXT: RET_ReallyLR373    %0:_(p0) = COPY $x0374    %1:_(p0) = COPY $x1375    %2:_(s64) = COPY $x2376    G_MEMCPY %0(p0), %1(p0), %2(s64), 1 :: (store (s8)), (load (s8))377    $x0 = COPY %0(p0)378    RET_ReallyLR379