brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 09548f3 Raw
100 lines · plain
1 2# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-cp  -verify-machineinstrs  -o - %s | FileCheck %s3 4--- |5  define i32 @copyprop1(i32 %a, i32 %b) { ret i32 %a }6  define i32 @copyprop2(i32 %a, i32 %b) { ret i32 %a }7  define i32 @copyprop3(i32 %a, i32 %b) { ret i32 %a }8  define i32 @copyprop4(i32 %a, i32 %b) { ret i32 %a }9  define i32 @copyprop5(i32 %a, i32 %b) { ret i32 %a }10  define i32 @copyprop6(i32 %a, i32 %b) { ret i32 %a }11  declare i32 @foo(i32)12...13---14# The first copy is dead copy which is not used.15# CHECK-LABEL: name: copyprop116# CHECK: bb.0:17# CHECK-NOT: $w20 = COPY18name: copyprop119body: |20  bb.0:21    liveins: $w0,  $w122    $w20 = COPY $w123    BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w024    RET_ReallyLR implicit $w025...26---27# The first copy is not a dead copy which is used in the second copy after the28# call.29# CHECK-LABEL: name: copyprop230# CHECK: bb.0:31# CHECK: $w20 = COPY32name: copyprop233body: |34  bb.0:35    liveins: $w0,  $w136    $w20 = COPY $w137    BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w038    $w0 = COPY $w2039    RET_ReallyLR implicit $w040...41---42# Both the first and second copy are dead copies which are not used.43# CHECK-LABEL: name: copyprop344# CHECK: bb.0:45# CHECK-NOT: COPY46name: copyprop347body: |48  bb.0:49    liveins: $w0,  $w150    $w20 = COPY $w151    BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w052    $w20 = COPY $w053    RET_ReallyLR implicit $w054...55# The second copy is removed as a NOP copy, after then the first copy become56# dead which should be removed as well.57# CHECK-LABEL: name: copyprop458# CHECK: bb.0:59# CHECK-NOT: COPY60name: copyprop461body: |62  bb.0:63    liveins: $w0,  $w164    $w20 = COPY $w065    $w0 = COPY $w2066    BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w067    RET_ReallyLR implicit $w068...69 70# Don't try to erase any COPY which overlaps itself.71# CHECK-LABEL: name: copyprop572# CHECK: bb.0:73# CHECK: COPY killed $q26_q27_q28_q2974# CHECK: COPY killed $q28_q29_q30_q3175name: copyprop576body: |77  bb.0:78    liveins: $q26_q27_q28_q2979    $q28_q29_q30_q31 = COPY killed $q26_q27_q28_q2980    $q26_q27_q28_q29 = COPY killed $q28_q29_q30_q3181    BL @foo, csr_aarch64_aapcs, implicit killed $q26_q27_q28_q2982    RET_ReallyLR83...84 85# Don't try to analyze any COPY which overlaps itself.86# CHECK-LABEL: name: copyprop687# CHECK: bb.0:88# CHECK: COPY killed $q26_q27_q28_q2989# CHECK: $q30 = COPY $q2890name: copyprop691body: |92  bb.0:93    liveins: $q26_q27_q28_q2994    $q28_q29_q30_q31 = COPY killed $q26_q27_q28_q2995    $q30 = COPY $q2896    BL @foo, csr_aarch64_aapcs, implicit killed $q28_q29_q30_q3197    RET_ReallyLR98...99 100