xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-triv-disjoint-mem-access.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm64-linux-gnu -mcpu=cortex-a53 -enable-aa-sched-mi | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Check that the scheduler moves the load from a[1] past the store into a[2].
3*9880d681SAndroid Build Coastguard Worker@a = common global i32* null, align 8
4*9880d681SAndroid Build Coastguard Worker@m = common global i32 0, align 4
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
7*9880d681SAndroid Build Coastguard Workerdefine i32 @func(i32 %i, i32 %j, i32 %k) #0 {
8*9880d681SAndroid Build Coastguard Workerentry:
9*9880d681SAndroid Build Coastguard Worker; CHECK: ldr {{w[0-9]+}}, [x[[REG:[0-9]+]], #4]
10*9880d681SAndroid Build Coastguard Worker; CHECK: str {{w[0-9]+}}, [x[[REG]], #8]
11*9880d681SAndroid Build Coastguard Worker  %0 = load i32*, i32** @a, align 8, !tbaa !1
12*9880d681SAndroid Build Coastguard Worker  %arrayidx = getelementptr inbounds i32, i32* %0, i64 2
13*9880d681SAndroid Build Coastguard Worker  store i32 %i, i32* %arrayidx, align 4, !tbaa !5
14*9880d681SAndroid Build Coastguard Worker  %arrayidx1 = getelementptr inbounds i32, i32* %0, i64 1
15*9880d681SAndroid Build Coastguard Worker  %1 = load i32, i32* %arrayidx1, align 4, !tbaa !5
16*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %k, %i
17*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* @m, align 4, !tbaa !5
18*9880d681SAndroid Build Coastguard Worker  ret i32 %1
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!0}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker!0 = !{!"clang version 3.6.0 "}
26*9880d681SAndroid Build Coastguard Worker!1 = !{!2, !2, i64 0}
27*9880d681SAndroid Build Coastguard Worker!2 = !{!"any pointer", !3, i64 0}
28*9880d681SAndroid Build Coastguard Worker!3 = !{!"omnipotent char", !4, i64 0}
29*9880d681SAndroid Build Coastguard Worker!4 = !{!"Simple C/C++ TBAA"}
30*9880d681SAndroid Build Coastguard Worker!5 = !{!6, !6, i64 0}
31*9880d681SAndroid Build Coastguard Worker!6 = !{!"int", !3, i64 0}
32