xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-stack-no-frame.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm64-apple-ios7.0 -o - %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker@global = global [20 x i64] zeroinitializer, align 8
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; The following function has enough locals to need some restoring, but not a
6*9880d681SAndroid Build Coastguard Worker; frame record. In an intermediate frame refactoring, prologue and epilogue were
7*9880d681SAndroid Build Coastguard Worker; inconsistent about how much to move SP.
8*9880d681SAndroid Build Coastguard Workerdefine void @test_stack_no_frame() {
9*9880d681SAndroid Build Coastguard Worker; CHECK: test_stack_no_frame
10*9880d681SAndroid Build Coastguard Worker; CHECK: sub sp, sp, #[[STACKSIZE:[0-9]+]]
11*9880d681SAndroid Build Coastguard Worker  %local = alloca [20 x i64]
12*9880d681SAndroid Build Coastguard Worker  %val = load volatile [20 x i64], [20 x i64]* @global, align 8
13*9880d681SAndroid Build Coastguard Worker  store volatile [20 x i64] %val, [20 x i64]* %local, align 8
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker  %val2 = load volatile [20 x i64], [20 x i64]* %local, align 8
16*9880d681SAndroid Build Coastguard Worker  store volatile [20 x i64] %val2, [20 x i64]* @global, align 8
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker; CHECK: add sp, sp, #[[STACKSIZE]]
19*9880d681SAndroid Build Coastguard Worker  ret void
20*9880d681SAndroid Build Coastguard Worker}
21