xref: /aosp_15_r20/external/llvm/test/CodeGen/SPARC/reserved-regs.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=sparc  < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@g = common global [32 x i32] zeroinitializer, align 16
4*9880d681SAndroid Build Coastguard Worker@h = common global [16 x i64] zeroinitializer, align 16
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker;; Ensures that we don't use registers which are supposed to be reserved.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: use_all_i32_regs:
9*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g0
10*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g1
11*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g5
12*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g6
13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g7
14*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o6
15*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i6
16*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i7
17*9880d681SAndroid Build Coastguard Worker; CHECK: ret
18*9880d681SAndroid Build Coastguard Workerdefine void @use_all_i32_regs() {
19*9880d681SAndroid Build Coastguard Workerentry:
20*9880d681SAndroid Build Coastguard Worker  %0 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 0), align 16
21*9880d681SAndroid Build Coastguard Worker  %1 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 1), align 4
22*9880d681SAndroid Build Coastguard Worker  %2 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 2), align 8
23*9880d681SAndroid Build Coastguard Worker  %3 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 3), align 4
24*9880d681SAndroid Build Coastguard Worker  %4 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 4), align 16
25*9880d681SAndroid Build Coastguard Worker  %5 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 5), align 4
26*9880d681SAndroid Build Coastguard Worker  %6 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 6), align 8
27*9880d681SAndroid Build Coastguard Worker  %7 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 7), align 4
28*9880d681SAndroid Build Coastguard Worker  %8 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 8), align 16
29*9880d681SAndroid Build Coastguard Worker  %9 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 9), align 4
30*9880d681SAndroid Build Coastguard Worker  %10 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 10), align 8
31*9880d681SAndroid Build Coastguard Worker  %11 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 11), align 4
32*9880d681SAndroid Build Coastguard Worker  %12 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 12), align 16
33*9880d681SAndroid Build Coastguard Worker  %13 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 13), align 4
34*9880d681SAndroid Build Coastguard Worker  %14 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 14), align 8
35*9880d681SAndroid Build Coastguard Worker  %15 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 15), align 4
36*9880d681SAndroid Build Coastguard Worker  %16 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 16), align 16
37*9880d681SAndroid Build Coastguard Worker  %17 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 17), align 4
38*9880d681SAndroid Build Coastguard Worker  %18 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 18), align 8
39*9880d681SAndroid Build Coastguard Worker  %19 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 19), align 4
40*9880d681SAndroid Build Coastguard Worker  %20 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 20), align 16
41*9880d681SAndroid Build Coastguard Worker  %21 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 21), align 4
42*9880d681SAndroid Build Coastguard Worker  %22 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 22), align 8
43*9880d681SAndroid Build Coastguard Worker  %23 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 23), align 4
44*9880d681SAndroid Build Coastguard Worker  %24 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 24), align 16
45*9880d681SAndroid Build Coastguard Worker  %25 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 25), align 4
46*9880d681SAndroid Build Coastguard Worker  %26 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 26), align 8
47*9880d681SAndroid Build Coastguard Worker  %27 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 27), align 4
48*9880d681SAndroid Build Coastguard Worker  %28 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 28), align 16
49*9880d681SAndroid Build Coastguard Worker  %29 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 29), align 4
50*9880d681SAndroid Build Coastguard Worker  %30 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 30), align 8
51*9880d681SAndroid Build Coastguard Worker  %31 = load volatile i32, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 31), align 4
52*9880d681SAndroid Build Coastguard Worker  store volatile i32 %1, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 0), align 16
53*9880d681SAndroid Build Coastguard Worker  store volatile i32 %2, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 1), align 4
54*9880d681SAndroid Build Coastguard Worker  store volatile i32 %3, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 2), align 8
55*9880d681SAndroid Build Coastguard Worker  store volatile i32 %4, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 3), align 4
56*9880d681SAndroid Build Coastguard Worker  store volatile i32 %5, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 4), align 16
57*9880d681SAndroid Build Coastguard Worker  store volatile i32 %6, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 5), align 4
58*9880d681SAndroid Build Coastguard Worker  store volatile i32 %7, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 6), align 8
59*9880d681SAndroid Build Coastguard Worker  store volatile i32 %8, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 7), align 4
60*9880d681SAndroid Build Coastguard Worker  store volatile i32 %9, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 8), align 16
61*9880d681SAndroid Build Coastguard Worker  store volatile i32 %10, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 9), align 4
62*9880d681SAndroid Build Coastguard Worker  store volatile i32 %11, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 10), align 8
63*9880d681SAndroid Build Coastguard Worker  store volatile i32 %12, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 11), align 4
64*9880d681SAndroid Build Coastguard Worker  store volatile i32 %13, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 12), align 16
65*9880d681SAndroid Build Coastguard Worker  store volatile i32 %14, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 13), align 4
66*9880d681SAndroid Build Coastguard Worker  store volatile i32 %15, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 14), align 8
67*9880d681SAndroid Build Coastguard Worker  store volatile i32 %16, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 15), align 4
68*9880d681SAndroid Build Coastguard Worker  store volatile i32 %17, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 16), align 16
69*9880d681SAndroid Build Coastguard Worker  store volatile i32 %18, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 17), align 4
70*9880d681SAndroid Build Coastguard Worker  store volatile i32 %19, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 18), align 8
71*9880d681SAndroid Build Coastguard Worker  store volatile i32 %20, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 19), align 4
72*9880d681SAndroid Build Coastguard Worker  store volatile i32 %21, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 20), align 16
73*9880d681SAndroid Build Coastguard Worker  store volatile i32 %22, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 21), align 4
74*9880d681SAndroid Build Coastguard Worker  store volatile i32 %23, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 22), align 8
75*9880d681SAndroid Build Coastguard Worker  store volatile i32 %24, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 23), align 4
76*9880d681SAndroid Build Coastguard Worker  store volatile i32 %25, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 24), align 16
77*9880d681SAndroid Build Coastguard Worker  store volatile i32 %26, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 25), align 4
78*9880d681SAndroid Build Coastguard Worker  store volatile i32 %27, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 26), align 8
79*9880d681SAndroid Build Coastguard Worker  store volatile i32 %28, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 27), align 4
80*9880d681SAndroid Build Coastguard Worker  store volatile i32 %29, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 28), align 16
81*9880d681SAndroid Build Coastguard Worker  store volatile i32 %30, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 29), align 4
82*9880d681SAndroid Build Coastguard Worker  store volatile i32 %31, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 30), align 8
83*9880d681SAndroid Build Coastguard Worker  store volatile i32 %0, i32* getelementptr inbounds ([32 x i32], [32 x i32]* @g, i64 0, i64 31), align 4
84*9880d681SAndroid Build Coastguard Worker  ret void
85*9880d681SAndroid Build Coastguard Worker}
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: use_all_i64_regs:
89*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g0
90*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g1
91*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g4
92*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g5
93*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g6
94*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %g7
95*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o6
96*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %o7
97*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i6
98*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %i7
99*9880d681SAndroid Build Coastguard Worker; CHECK: ret
100*9880d681SAndroid Build Coastguard Workerdefine void @use_all_i64_regs() {
101*9880d681SAndroid Build Coastguard Workerentry:
102*9880d681SAndroid Build Coastguard Worker  %0 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 0), align 16
103*9880d681SAndroid Build Coastguard Worker  %1 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 1), align 4
104*9880d681SAndroid Build Coastguard Worker  %2 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 2), align 8
105*9880d681SAndroid Build Coastguard Worker  %3 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 3), align 4
106*9880d681SAndroid Build Coastguard Worker  %4 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 4), align 16
107*9880d681SAndroid Build Coastguard Worker  %5 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 5), align 4
108*9880d681SAndroid Build Coastguard Worker  %6 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 6), align 8
109*9880d681SAndroid Build Coastguard Worker  %7 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 7), align 4
110*9880d681SAndroid Build Coastguard Worker  %8 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 8), align 16
111*9880d681SAndroid Build Coastguard Worker  %9 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 9), align 4
112*9880d681SAndroid Build Coastguard Worker  %10 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 10), align 8
113*9880d681SAndroid Build Coastguard Worker  %11 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 11), align 4
114*9880d681SAndroid Build Coastguard Worker  %12 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 12), align 16
115*9880d681SAndroid Build Coastguard Worker  %13 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 13), align 4
116*9880d681SAndroid Build Coastguard Worker  %14 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 14), align 8
117*9880d681SAndroid Build Coastguard Worker  %15 = load volatile i64, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 15), align 4
118*9880d681SAndroid Build Coastguard Worker  store volatile i64 %1, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 0), align 16
119*9880d681SAndroid Build Coastguard Worker  store volatile i64 %2, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 1), align 4
120*9880d681SAndroid Build Coastguard Worker  store volatile i64 %3, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 2), align 8
121*9880d681SAndroid Build Coastguard Worker  store volatile i64 %4, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 3), align 4
122*9880d681SAndroid Build Coastguard Worker  store volatile i64 %5, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 4), align 16
123*9880d681SAndroid Build Coastguard Worker  store volatile i64 %6, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 5), align 4
124*9880d681SAndroid Build Coastguard Worker  store volatile i64 %7, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 6), align 8
125*9880d681SAndroid Build Coastguard Worker  store volatile i64 %8, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 7), align 4
126*9880d681SAndroid Build Coastguard Worker  store volatile i64 %9, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 8), align 16
127*9880d681SAndroid Build Coastguard Worker  store volatile i64 %10, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 9), align 4
128*9880d681SAndroid Build Coastguard Worker  store volatile i64 %11, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 10), align 8
129*9880d681SAndroid Build Coastguard Worker  store volatile i64 %12, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 11), align 4
130*9880d681SAndroid Build Coastguard Worker  store volatile i64 %13, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 12), align 16
131*9880d681SAndroid Build Coastguard Worker  store volatile i64 %14, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 13), align 4
132*9880d681SAndroid Build Coastguard Worker  store volatile i64 %15, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 14), align 8
133*9880d681SAndroid Build Coastguard Worker  store volatile i64 %0, i64* getelementptr inbounds ([16 x i64], [16 x i64]* @h, i64 0, i64 15), align 4
134*9880d681SAndroid Build Coastguard Worker  ret void
135*9880d681SAndroid Build Coastguard Worker}
136