xref: /llvm-project/llvm/test/CodeGen/AArch64/sve-alloca-stackid.ll (revision 1ee315ae7964c8433b772e0b5d667834994ba753)
1; RUN: llc -mtriple=aarch64 -mattr=+sve < %s | FileCheck %s --check-prefix=CHECKCG
2; RUN: llc -mtriple=aarch64 -mattr=+sve -stop-after=finalize-isel < %s | FileCheck %s --check-prefix=CHECKISEL
3
4; CHECKCG-LABEL: foo:
5; CHECKCG: addvl   sp, sp, #-1
6
7; CHECKISEL-LABEL: name: foo
8; CHECKISEL:       stack:
9; CHECKISEL:       id: 0, name: ptr, type: default, offset: 0, size: 16, alignment: 16,
10; CHECKISEL-NEXT:  stack-id: scalable-vector
11define i32 @foo(<vscale x 16 x i8> %val) {
12  %ptr = alloca <vscale x 16 x i8>
13  %res = call i32 @bar(ptr %ptr)
14  ret i32 %res
15}
16
17declare i32 @bar(ptr %ptr);
18
19; CHECKCG-LABEL: foo2:
20; CHECKCG: addvl   sp, sp, #-2
21
22; CHECKISEL-LABEL: name: foo2
23; CHECKISEL:       stack:
24; CHECKISEL:       id: 0, name: ptr, type: default, offset: 0, size: 32, alignment: 16,
25; CHECKISEL-NEXT:  stack-id: scalable-vector
26
27define i32 @foo2(<vscale x 32 x i8> %val) {
28  %ptr = alloca <vscale x 32 x i8>, align 16
29  %res = call i32 @bar2(ptr %ptr)
30  ret i32 %res
31}
32declare i32 @bar2(ptr %ptr);
33