brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.7 KiB · a0764ae Raw
167 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-linux-gnu -run-pass=none -o - %s | FileCheck %s3--- |4  ; ModuleID = 'test/CodeGen/AArch64/memcpy-scoped-aa.ll'5  source_filename = "test/CodeGen/AArch64/memcpy-scoped-aa.ll"6  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"7  target triple = "aarch64-unknown-linux-gnu"8 9  define i32 @test_memcpy(ptr nocapture %p, ptr nocapture readonly %q) {10    %p0 = bitcast ptr %p to ptr11    %add.ptr = getelementptr inbounds i32, ptr %p, i64 412    %p1 = bitcast ptr %add.ptr to ptr13    tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %p0, ptr noundef nonnull align 4 dereferenceable(16) %p1, i64 16, i1 false), !alias.scope !0, !noalias !314    %v0 = load i32, ptr %q, align 4, !alias.scope !3, !noalias !015    %q1 = getelementptr inbounds i32, ptr %q, i64 116    %v1 = load i32, ptr %q1, align 4, !alias.scope !3, !noalias !017    %add = add i32 %v0, %v118    ret i32 %add19  }20 21  define i32 @test_memcpy_inline(ptr nocapture %p, ptr nocapture readonly %q) {22    %p0 = bitcast ptr %p to ptr23    %add.ptr = getelementptr inbounds i32, ptr %p, i64 424    %p1 = bitcast ptr %add.ptr to ptr25    tail call void @llvm.memcpy.inline.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %p0, ptr noundef nonnull align 4 dereferenceable(16) %p1, i64 16, i1 false), !alias.scope !0, !noalias !326    %v0 = load i32, ptr %q, align 4, !alias.scope !3, !noalias !027    %q1 = getelementptr inbounds i32, ptr %q, i64 128    %v1 = load i32, ptr %q1, align 4, !alias.scope !3, !noalias !029    %add = add i32 %v0, %v130    ret i32 %add31  }32 33  define i32 @test_mempcpy(ptr nocapture %p, ptr nocapture readonly %q) {34    %p0 = bitcast ptr %p to ptr35    %add.ptr = getelementptr inbounds i32, ptr %p, i64 436    %p1 = bitcast ptr %add.ptr to ptr37    %call = tail call ptr @mempcpy(ptr noundef nonnull align 4 dereferenceable(16) %p0, ptr noundef nonnull align 4 dereferenceable(16) %p1, i64 16), !alias.scope !0, !noalias !338    %v0 = load i32, ptr %q, align 4, !alias.scope !3, !noalias !039    %q1 = getelementptr inbounds i32, ptr %q, i64 140    %v1 = load i32, ptr %q1, align 4, !alias.scope !3, !noalias !041    %add = add i32 %v0, %v142    ret i32 %add43  }44 45  ; Function Attrs: argmemonly nofree nounwind willreturn46  declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #047 48  ; Function Attrs: argmemonly nofree nounwind willreturn49  declare void @llvm.memcpy.inline.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64 immarg, i1 immarg) #050 51  declare ptr @mempcpy(ptr, ptr, i64)52 53  attributes #0 = { argmemonly nofree nounwind willreturn }54 55  !0 = !{!1}56  !1 = distinct !{!1, !2, !"bax: %p"}57  !2 = distinct !{!2, !"bax"}58  !3 = !{!4}59  !4 = distinct !{!4, !2, !"bax: %q"}60 61...62---63name:            test_memcpy64machineMetadataNodes:65  - '!9 = distinct !{!9, !7, !"Dst"}'66  - '!10 = !{!1, !9}'67  - '!6 = distinct !{!6, !7, !"Src"}'68  - '!5 = !{!1, !6}'69  - '!11 = !{!4, !6}'70  - '!8 = !{!4, !9}'71  - '!7 = distinct !{!7, !"MemcpyLoweringDomain"}'72body:             |73  bb.0 (%ir-block.0):74    liveins: $x0, $x175 76    ; CHECK-LABEL: name: test_memcpy77    ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x178    ; CHECK: [[COPY1:%[0-9]+]]:gpr64common = COPY $x079    ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 1 :: (load (s128) from %ir.p1, align 4, !alias.scope !5, !noalias !8)80    ; CHECK: STRQui killed [[LDRQui]], [[COPY1]], 0 :: (store (s128) into %ir.p0, align 4, !alias.scope !10, !noalias !11)81    ; CHECK: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)82    ; CHECK: [[LDRWui1:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)83    ; CHECK: [[ADDWrr:%[0-9]+]]:gpr32 = ADDWrr killed [[LDRWui]], killed [[LDRWui1]]84    ; CHECK: $w0 = COPY [[ADDWrr]]85    ; CHECK: RET_ReallyLR implicit $w086    %1:gpr64common = COPY $x187    %0:gpr64common = COPY $x088    %2:fpr128 = LDRQui %0, 1 :: (load (s128) from %ir.p1, align 4, !alias.scope !5, !noalias !8)89    STRQui killed %2, %0, 0 :: (store (s128) into %ir.p0, align 4, !alias.scope !10, !noalias !11)90    %3:gpr32 = LDRWui %1, 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)91    %4:gpr32 = LDRWui %1, 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)92    %5:gpr32 = ADDWrr killed %3, killed %493    $w0 = COPY %594    RET_ReallyLR implicit $w095 96...97---98name:            test_memcpy_inline99machineMetadataNodes:100  - '!10 = !{!1, !9}'101  - '!5 = !{!1, !6}'102  - '!8 = !{!4, !9}'103  - '!9 = distinct !{!9, !7, !"Dst"}'104  - '!11 = !{!4, !6}'105  - '!7 = distinct !{!7, !"MemcpyLoweringDomain"}'106  - '!6 = distinct !{!6, !7, !"Src"}'107body:             |108  bb.0 (%ir-block.0):109    liveins: $x0, $x1110 111    ; CHECK-LABEL: name: test_memcpy_inline112    ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x1113    ; CHECK: [[COPY1:%[0-9]+]]:gpr64common = COPY $x0114    ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 1 :: (load (s128) from %ir.p1, align 4, !alias.scope !5, !noalias !8)115    ; CHECK: STRQui killed [[LDRQui]], [[COPY1]], 0 :: (store (s128) into %ir.p0, align 4, !alias.scope !10, !noalias !11)116    ; CHECK: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)117    ; CHECK: [[LDRWui1:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)118    ; CHECK: [[ADDWrr:%[0-9]+]]:gpr32 = ADDWrr killed [[LDRWui]], killed [[LDRWui1]]119    ; CHECK: $w0 = COPY [[ADDWrr]]120    ; CHECK: RET_ReallyLR implicit $w0121    %1:gpr64common = COPY $x1122    %0:gpr64common = COPY $x0123    %2:fpr128 = LDRQui %0, 1 :: (load (s128) from %ir.p1, align 4, !alias.scope !5, !noalias !8)124    STRQui killed %2, %0, 0 :: (store (s128) into %ir.p0, align 4, !alias.scope !10, !noalias !11)125    %3:gpr32 = LDRWui %1, 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)126    %4:gpr32 = LDRWui %1, 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)127    %5:gpr32 = ADDWrr killed %3, killed %4128    $w0 = COPY %5129    RET_ReallyLR implicit $w0130 131...132---133name:            test_mempcpy134machineMetadataNodes:135  - '!9 = distinct !{!9, !7, !"Dst"}'136  - '!8 = !{!4, !9}'137  - '!5 = !{!1, !6}'138  - '!6 = distinct !{!6, !7, !"Src"}'139  - '!11 = !{!4, !6}'140  - '!7 = distinct !{!7, !"MemcpyLoweringDomain"}'141  - '!10 = !{!1, !9}'142body:             |143  bb.0 (%ir-block.0):144    liveins: $x0, $x1145 146    ; CHECK-LABEL: name: test_mempcpy147    ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x1148    ; CHECK: [[COPY1:%[0-9]+]]:gpr64common = COPY $x0149    ; CHECK: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui [[COPY1]], 1 :: (load (s128) from %ir.p1, align 1, !alias.scope !5, !noalias !8)150    ; CHECK: STRQui killed [[LDRQui]], [[COPY1]], 0 :: (store (s128) into %ir.p0, align 1, !alias.scope !10, !noalias !11)151    ; CHECK: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)152    ; CHECK: [[LDRWui1:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)153    ; CHECK: [[ADDWrr:%[0-9]+]]:gpr32 = ADDWrr killed [[LDRWui]], killed [[LDRWui1]]154    ; CHECK: $w0 = COPY [[ADDWrr]]155    ; CHECK: RET_ReallyLR implicit $w0156    %1:gpr64common = COPY $x1157    %0:gpr64common = COPY $x0158    %2:fpr128 = LDRQui %0, 1 :: (load (s128) from %ir.p1, align 1, !alias.scope !5, !noalias !8)159    STRQui killed %2, %0, 0 :: (store (s128) into %ir.p0, align 1, !alias.scope !10, !noalias !11)160    %3:gpr32 = LDRWui %1, 0 :: (load (s32) from %ir.q, !alias.scope !3, !noalias !0)161    %4:gpr32 = LDRWui %1, 1 :: (load (s32) from %ir.q1, !alias.scope !3, !noalias !0)162    %5:gpr32 = ADDWrr killed %3, killed %4163    $w0 = COPY %5164    RET_ReallyLR implicit $w0165 166...167