xref: /llvm-project/llvm/test/MC/WebAssembly/stack-ptr-mclower.ll (revision 4f7ff6bb38c8952a24b5cbae07031d78e359e573)
1; RUN: llc --mtriple=wasm32-unknown-unknown -asm-verbose=false %s -o - | FileCheck --check-prefixes CHECK -DPTR=i32 %s
2; RUN: llc --mtriple=wasm64-unknown-unknown -asm-verbose=false %s -o - | FileCheck --check-prefixes CHECK -DPTR=i64 %s
3
4; empty function that does not use stack, to check WebAssemblyMCLowerPrePass
5; works correctly.
6define hidden void @bar() #0 {
7  ret void
8}
9
10; Function that uses explict stack, and should generate a reference to
11; __stack_pointer, along with the corresponding relocation entry.
12define hidden void @foo() #0 {
13entry:
14  alloca i32, align 4
15  ret void
16}
17
18; CHECK:              .file   "stack-ptr-mclower.ll"
19; CHECK-NEXT:         .globaltype     __stack_pointer, [[PTR]]
20; CHECK-NEXT:         .functype bar () -> ()
21; CHECK-NEXT:         .functype foo () -> ()
22
23; CHECK-NEXT:         .section        .text.bar,"",@
24; CHECK-NEXT:         .hidden bar
25; CHECK-NEXT:         .globl  bar
26; CHECK-NEXT:         .type   bar,@function
27; CHECK-NEXT: bar:
28; CHECK-NEXT:         .functype       bar () -> ()
29; CHECK-NEXT:         end_function
30
31; CHECK:              .section        .text.foo,"",@
32; CHECK-NEXT:         .hidden foo
33; CHECK-NEXT:         .globl  foo
34; CHECK-NEXT:         .type   foo,@function
35; CHECK-NEXT: foo:
36; CHECK-NEXT:         .functype       foo () -> ()
37; CHECK-NEXT:         global.get      __stack_pointer
38; CHECK-NEXT:         [[PTR]].const       16
39; CHECK-NEXT:         [[PTR]].sub
40; CHECK-NEXT:         drop
41; CHECK-NEXT:         end_function
42