xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/vldm-sched-a9.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm -mtriple=armv7-linux-gnueabihf -arm-atomic-cfg-tidy=0 -float-abi=hard -mcpu=cortex-a9 -O3 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32-S64"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; This test used to test vector spilling using vstmia/vldmia instructions, but
6*9880d681SAndroid Build Coastguard Worker; the changes for PR:18825 prevent that spilling.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; CHECK: test:
9*9880d681SAndroid Build Coastguard Worker; CHECK: vstmia
10*9880d681SAndroid Build Coastguard Worker; CHECK: vldmia
11*9880d681SAndroid Build Coastguard Workerdefine void @test(i64* %src) #0 {
12*9880d681SAndroid Build Coastguard Workerentry:
13*9880d681SAndroid Build Coastguard Worker  %arrayidx39 = getelementptr inbounds i64, i64* %src, i32 13
14*9880d681SAndroid Build Coastguard Worker  %vecinit285 = shufflevector <16 x i64> undef, <16 x i64> <i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>
15*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit285, <16 x i64>* undef, align 128
16*9880d681SAndroid Build Coastguard Worker  %0 = load i64, i64* undef, align 8
17*9880d681SAndroid Build Coastguard Worker  %vecinit379 = insertelement <16 x i64> undef, i64 %0, i32 9
18*9880d681SAndroid Build Coastguard Worker  %1 = load i64, i64* undef, align 8
19*9880d681SAndroid Build Coastguard Worker  %vecinit419 = insertelement <16 x i64> undef, i64 %1, i32 15
20*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit419, <16 x i64>* undef, align 128
21*9880d681SAndroid Build Coastguard Worker  %vecinit579 = insertelement <16 x i64> undef, i64 0, i32 4
22*9880d681SAndroid Build Coastguard Worker  %vecinit582 = shufflevector <16 x i64> %vecinit579, <16 x i64> <i64 6, i64 7, i64 8, i64 9, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 16, i32 17, i32 18, i32 19, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
23*9880d681SAndroid Build Coastguard Worker  %vecinit584 = insertelement <16 x i64> %vecinit582, i64 undef, i32 9
24*9880d681SAndroid Build Coastguard Worker  %vecinit586 = insertelement <16 x i64> %vecinit584, i64 0, i32 10
25*9880d681SAndroid Build Coastguard Worker  %vecinit589 = shufflevector <16 x i64> %vecinit586, <16 x i64> <i64 12, i64 13, i64 14, i64 15, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 16, i32 17, i32 18, i32 19, i32 undef>
26*9880d681SAndroid Build Coastguard Worker  %2 = load i64, i64* undef, align 8
27*9880d681SAndroid Build Coastguard Worker  %vecinit591 = insertelement <16 x i64> %vecinit589, i64 %2, i32 15
28*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit591, <16 x i64>* undef, align 128
29*9880d681SAndroid Build Coastguard Worker  %vecinit694 = shufflevector <16 x i64> undef, <16 x i64> <i64 13, i64 14, i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 19>
30*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit694, <16 x i64>* undef, align 128
31*9880d681SAndroid Build Coastguard Worker  %3 = load i64, i64* undef, align 8
32*9880d681SAndroid Build Coastguard Worker  %vecinit1331 = insertelement <16 x i64> undef, i64 %3, i32 14
33*9880d681SAndroid Build Coastguard Worker  %4 = load i64, i64* undef, align 8
34*9880d681SAndroid Build Coastguard Worker  %vecinit1468 = insertelement <16 x i64> undef, i64 %4, i32 11
35*9880d681SAndroid Build Coastguard Worker  %vecinit1471 = shufflevector <16 x i64> %vecinit1468, <16 x i64> <i64 13, i64 14, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 undef, i32 undef>
36*9880d681SAndroid Build Coastguard Worker  %vecinit1474 = shufflevector <16 x i64> %vecinit1471, <16 x i64> <i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>
37*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit1474, <16 x i64>* undef, align 128
38*9880d681SAndroid Build Coastguard Worker  %vecinit1552 = shufflevector <16 x i64> undef, <16 x i64> <i64 10, i64 11, i64 12, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 16, i32 17, i32 18, i32 undef, i32 undef, i32 undef, i32 undef>
39*9880d681SAndroid Build Coastguard Worker  %vecinit1555 = shufflevector <16 x i64> %vecinit1552, <16 x i64> <i64 13, i64 14, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 undef, i32 undef>
40*9880d681SAndroid Build Coastguard Worker  %vecinit1558 = shufflevector <16 x i64> %vecinit1555, <16 x i64> <i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>
41*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit1558, <16 x i64>* undef, align 128
42*9880d681SAndroid Build Coastguard Worker  %vecinit1591 = shufflevector <16 x i64> undef, <16 x i64> <i64 3, i64 4, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 16, i32 17, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
43*9880d681SAndroid Build Coastguard Worker  %vecinit1594 = shufflevector <16 x i64> %vecinit1591, <16 x i64> <i64 5, i64 6, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
44*9880d681SAndroid Build Coastguard Worker  %vecinit1597 = shufflevector <16 x i64> %vecinit1594, <16 x i64> <i64 7, i64 8, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 16, i32 17, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
45*9880d681SAndroid Build Coastguard Worker  %vecinit1599 = insertelement <16 x i64> %vecinit1597, i64 undef, i32 8
46*9880d681SAndroid Build Coastguard Worker  %vecinit1601 = insertelement <16 x i64> %vecinit1599, i64 undef, i32 9
47*9880d681SAndroid Build Coastguard Worker  %vecinit1603 = insertelement <16 x i64> %vecinit1601, i64 undef, i32 10
48*9880d681SAndroid Build Coastguard Worker  %5 = load i64, i64* undef, align 8
49*9880d681SAndroid Build Coastguard Worker  %vecinit1605 = insertelement <16 x i64> %vecinit1603, i64 %5, i32 11
50*9880d681SAndroid Build Coastguard Worker  %vecinit1608 = shufflevector <16 x i64> %vecinit1605, <16 x i64> <i64 13, i64 14, i64 15, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 16, i32 17, i32 18, i32 undef>
51*9880d681SAndroid Build Coastguard Worker  %6 = load i64, i64* undef, align 8
52*9880d681SAndroid Build Coastguard Worker  %vecinit1610 = insertelement <16 x i64> %vecinit1608, i64 %6, i32 15
53*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit1610, <16 x i64>* undef, align 128
54*9880d681SAndroid Build Coastguard Worker  %vecinit2226 = shufflevector <16 x i64> undef, <16 x i64> <i64 6, i64 7, i64 8, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 16, i32 17, i32 18, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
55*9880d681SAndroid Build Coastguard Worker  %7 = load i64, i64* undef, align 8
56*9880d681SAndroid Build Coastguard Worker  %vecinit2228 = insertelement <16 x i64> %vecinit2226, i64 %7, i32 8
57*9880d681SAndroid Build Coastguard Worker  %vecinit2230 = insertelement <16 x i64> %vecinit2228, i64 undef, i32 9
58*9880d681SAndroid Build Coastguard Worker  %vecinit2233 = shufflevector <16 x i64> %vecinit2230, <16 x i64> <i64 11, i64 12, i64 13, i64 14, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 16, i32 17, i32 18, i32 19, i32 undef, i32 undef>
59*9880d681SAndroid Build Coastguard Worker  %vecinit2236 = shufflevector <16 x i64> %vecinit2233, <16 x i64> <i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>
60*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit2236, <16 x i64>* undef, align 128
61*9880d681SAndroid Build Coastguard Worker  %vecinit2246 = shufflevector <16 x i64> undef, <16 x i64> <i64 4, i64 5, i64 6, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 16, i32 17, i32 18, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
62*9880d681SAndroid Build Coastguard Worker  %vecinit2249 = shufflevector <16 x i64> %vecinit2246, <16 x i64> <i64 7, i64 8, i64 9, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 16, i32 17, i32 18, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
63*9880d681SAndroid Build Coastguard Worker  %vecinit2252 = shufflevector <16 x i64> %vecinit2249, <16 x i64> <i64 10, i64 11, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 16, i32 17, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
64*9880d681SAndroid Build Coastguard Worker  %vecinit2255 = shufflevector <16 x i64> %vecinit2252, <16 x i64> <i64 12, i64 13, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 16, i32 17, i32 undef, i32 undef, i32 undef>
65*9880d681SAndroid Build Coastguard Worker  %8 = load i64, i64* %arrayidx39, align 8
66*9880d681SAndroid Build Coastguard Worker  %vecinit2257 = insertelement <16 x i64> %vecinit2255, i64 %8, i32 13
67*9880d681SAndroid Build Coastguard Worker  %vecinit2260 = shufflevector <16 x i64> %vecinit2257, <16 x i64> <i64 15, i64 16, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef>, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 16, i32 17>
68*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %vecinit2260, <16 x i64>* null, align 128
69*9880d681SAndroid Build Coastguard Worker  ret void
70*9880d681SAndroid Build Coastguard Worker}
71*9880d681SAndroid Build Coastguard Workerattributes #0 = { noredzone "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-frame-pointer-elim-non-leaf"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
72