1- ; RUN: llc -O2 - march=sbf -mcpu=v1 < %s | FileCheck %s
2- ; RUN: llc -O2 - mtriple=sbpfv1-solana-solana < %s | FileCheck %s
3- ; RUN: llc -O2 - march=sbf -mcpu=v1 -mattr=+mem-encoding < %s | FileCheck %s
4- ; RUN: llc -O3 - march=sbf -mattr=+dynamic-frames-v3 < %s | FileCheck --check-prefix=CHECK-V3 %s
1+ ; RUN: llc -march=sbf -mcpu=v1 < %s | FileCheck %s
2+ ; RUN: llc -mtriple=sbpfv1-solana-solana < %s | FileCheck %s
3+ ; RUN: llc -march=sbf -mcpu=v1 -mattr=+mem-encoding < %s | FileCheck %s
4+ ; RUN: llc -march=sbf -mattr=+dynamic-frames-v3 < %s | FileCheck --check-prefix=CHECK-V3 %s
55
66; Function Attrs: nounwind uwtable
77define i32 @caller_no_alloca (i32 %a , i32 %b , i32 %c ) #0 {
@@ -35,8 +35,12 @@ entry:
3535; Function Attrs: nounwind uwtable
3636define i32 @caller_alloca (i32 %a , i32 %b , i32 %c ) #0 {
3737; CHECK-LABEL: caller_alloca
38- ; CHECK: add64 r10, -64
39- ; CHECK: ldxw r1, [r10 + 60]
38+ ; CHECK: add64 r10, -4160
39+ ; CHECK: ldxw r1, [r10 + 88]
40+ ; 88 is 8*7 + 32
41+
42+ ; CHECK-V3: add64 r10, 64
43+ ; CHECK-V3: ldxw r1, [r10 - 88]
4044
4145; Saving arguments in the callee's frame
4246
@@ -65,10 +69,13 @@ define i32 @caller_alloca(i32 %a, i32 %b, i32 %c) #0 {
6569; CHECK: mov64 r4, 1
6670; CHECK: mov64 r5, 2
6771; CHECK: call callee_no_alloca
72+ ; CHECK: ldxw r1, [r10 + 16]
73+ ; CHECK-V3: ldxw r1, [r10 - 16]
6874
6975entry:
70- %g = alloca i32
71- %g1 = load i32 , ptr %g
76+ %g = alloca [4128 x i8 ], align 8
77+ %off = getelementptr i64 , ptr %g , i64 7
78+ %g1 = load i32 , ptr %off
7279 %call = tail call i32 @callee_no_alloca (i32 %g1 , i32 %b , i32 %c , i32 1 , i32 2 , i32 3 , i32 4 , i32 50 , i32 55 , i32 60 ) #3
7380 %h = alloca i128
7481 %h1 = load i32 , ptr %h
@@ -79,31 +86,31 @@ entry:
7986; Function Attrs: nounwind uwtable
8087define i32 @callee_alloca (i32 %a , i32 %b , i32 %c , i32 %d , i32 %e , i32 %f , i32 %p , i32 %y , i32 %a1 , i32 %a2 ) #1 {
8188; CHECK-LABEL: callee_alloca
82- ; CHECK: add64 r10, -128
83- ; CHECK-V3: add64 r10, 128
89+ ; CHECK: add64 r10, -5056
90+ ; CHECK-V3: add64 r10, 960
8491
8592; Loading arguments
86- ; CHECK: ldxw r2, [r10 + 120 ]
87- ; CHECK: ldxw r2, [r10 + 112 ]
88- ; CHECK: ldxw r2, [r10 + 104 ]
89- ; CHECK: ldxw r2, [r10 + 96 ]
90- ; CHECK: ldxw r2, [r10 + 88 ]
93+ ; CHECK: ldxw r2, [r10 + 5048 ]
94+ ; CHECK: ldxw r2, [r10 + 5040 ]
95+ ; CHECK: ldxw r2, [r10 + 5032 ]
96+ ; CHECK: ldxw r2, [r10 + 5024 ]
97+ ; CHECK: ldxw r2, [r10 + 5016 ]
9198; Loading allocated i32
92- ; CHECK: ldxw r0, [r10 + 24 ]
99+ ; CHECK: ldxw r0, [r10 + 16 ]
93100
94- ; CHECK-V3: ldxw r2, [r10 - 120 ]
95- ; CHECK-V3: ldxw r2, [r10 - 112 ]
96- ; CHECK-V3: ldxw r2, [r10 - 104 ]
97- ; CHECK-V3: ldxw r2, [r10 - 96 ]
98- ; CHECK-V3: ldxw r2, [r10 - 88 ]
101+ ; CHECK-V3: ldxw r2, [r10 - 5048 ]
102+ ; CHECK-V3: ldxw r2, [r10 - 5040 ]
103+ ; CHECK-V3: ldxw r2, [r10 - 5032 ]
104+ ; CHECK-V3: ldxw r2, [r10 - 5024 ]
105+ ; CHECK-V3: ldxw r2, [r10 - 5016 ]
99106; Loading allocated i32
100- ; CHECK-V3: ldxw r0, [r10 - 24 ]
107+ ; CHECK-V3: ldxw r0, [r10 - 16 ]
101108
102109
103110; CHECK-NOT: add64 r10, 128
104111
105112entry:
106- %o = alloca i512
113+ %o = alloca [ 5000 x i8 ], align 8
107114 %g = add i32 %a , %b
108115 %h = sub i32 %g , %c
109116 %i = add i32 %h , %d
@@ -122,7 +129,7 @@ entry:
122129define i32 @callee_no_alloca (i32 %a , i32 %b , i32 %c , i32 %d , i32 %e , i32 %f , i32 %p , i32 %y , i32 %a1 , i32 %a2 ) #1 {
123130; CHECK-LABEL: callee_no_alloca
124131; CHECK: add64 r10, -64
125- ; CHECK-V3: add64 r10, 64
132+ ; CHECK-V3-NOT : add64 r10, 64
126133
127134; Loading arguments
128135; CHECK: ldxw r1, [r10 + 56]
@@ -132,11 +139,11 @@ define i32 @callee_no_alloca(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32
132139; CHECK: ldxw r1, [r10 + 24]
133140
134141; Loading arguments
135- ; CHECK-V3: ldxw r1, [r10 - 56 ]
136- ; CHECK-V3: ldxw r1, [r10 - 48 ]
137- ; CHECK-V3: ldxw r1, [r10 - 40 ]
138- ; CHECK-V3: ldxw r1, [r10 - 32 ]
139- ; CHECK-V3: ldxw r1, [r10 - 24 ]
142+ ; CHECK-V3: ldxw r1, [r10 - 4088 ]
143+ ; CHECK-V3: ldxw r1, [r10 - 4080 ]
144+ ; CHECK-V3: ldxw r1, [r10 - 4072 ]
145+ ; CHECK-V3: ldxw r1, [r10 - 4064 ]
146+ ; CHECK-V3: ldxw r1, [r10 - 4056 ]
140147
141148; CHECK-NOT: add64 r10, 64
142149entry:
0 commit comments