18a9cb242SWouter van Oortmerssen; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s
2b6091dfeSJF Bastien
3b6091dfeSJF Bastien; Test that basic functions assemble as expected.
4b6091dfeSJF Bastien
5a5908009SSam Cleggtarget triple = "wasm32-unknown-unknown"
6b6091dfeSJF Bastien
7e51c058eSDan Gohman; CHECK-LABEL: f0:
8e51c058eSDan Gohman; CHECK: return{{$}}
97d7409e5SDan Gohman; CHECK: end_function{{$}}
10e51c058eSDan Gohman; CHECK: .size f0,
11b6091dfeSJF Bastiendefine void @f0() {
12b6091dfeSJF Bastien  ret void
13b6091dfeSJF Bastien}
14b6091dfeSJF Bastien
15e51c058eSDan Gohman; CHECK-LABEL: f1:
16*49482f82SWouter van Oortmerssen; CHECK-NEXT: .functype f1 () -> (i32){{$}}
17700515faSDan Gohman; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
184ba4816bSDan Gohman; CHECK-NEXT: return $pop[[NUM]]{{$}}
19e51c058eSDan Gohman; CHECK: .size f1,
20b6091dfeSJF Bastiendefine i32 @f1() {
21b6091dfeSJF Bastien  ret i32 0
22b6091dfeSJF Bastien}
23b6091dfeSJF Bastien
24e51c058eSDan Gohman; CHECK-LABEL: f2:
25*49482f82SWouter van Oortmerssen; CHECK-NEXT: .functype f2 (i32, f32) -> (i32){{$}}
26700515faSDan Gohman; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
274ba4816bSDan Gohman; CHECK-NEXT: return $pop[[NUM]]{{$}}
28e51c058eSDan Gohman; CHECK: .size f2,
29b6091dfeSJF Bastiendefine i32 @f2(i32 %p1, float %p2) {
30b6091dfeSJF Bastien  ret i32 0
31b6091dfeSJF Bastien}
32b6091dfeSJF Bastien
33e51c058eSDan Gohman; CHECK-LABEL: f3:
34*49482f82SWouter van Oortmerssen; CHECK-NEXT: .functype f3 (i32, f32) -> (){{$}}
3553828fd7SDan Gohman; CHECK-NOT: local
36c8f89e86SJF Bastien; CHECK-NEXT: return{{$}}
37e51c058eSDan Gohman; CHECK: .size f3,
38b6091dfeSJF Bastiendefine void @f3(i32 %p1, float %p2) {
39b6091dfeSJF Bastien  ret void
40b6091dfeSJF Bastien}
4146e33168SDerek Schuff
4246e33168SDerek Schuff; CHECK-LABEL: f4:
43*49482f82SWouter van Oortmerssen; CHECK-NEXT: .functype f4 (i32) -> (i32){{$}}
44b6fd39a3SDan Gohman; CHECK-NOT: local
45b6fd39a3SDan Gohman; CHECK: .size f4,
4646e33168SDerek Schuffdefine i32 @f4(i32 %x) {
4746e33168SDerek Schuffentry:
4846e33168SDerek Schuff   %c = trunc i32 %x to i1
4946e33168SDerek Schuff   br i1 %c, label %true, label %false
5046e33168SDerek Schufftrue:
5146e33168SDerek Schuff   ret i32 0
5246e33168SDerek Schufffalse:
5346e33168SDerek Schuff   ret i32 1
5446e33168SDerek Schuff}
5546e33168SDerek Schuff
5646e33168SDerek Schuff; CHECK-LABEL: f5:
57*49482f82SWouter van Oortmerssen; CHECK-NEXT: .functype f5 () -> (f32){{$}}
5846e33168SDerek Schuff; CHECK-NEXT: unreachable
5946e33168SDerek Schuffdefine float @f5()  {
6046e33168SDerek Schuff unreachable
6146e33168SDerek Schuff}
62