blob: 13a1cf2d513ab4b5444928acf79808e092b45c62 [file] [log] [blame]
Wouter van Oortmerssen8a9cb242018-08-27 15:45:51 +00001; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s
JF Bastienb6091df2015-08-25 22:58:05 +00002
3; Test that basic functions assemble as expected.
4
Dan Gohman0c6f5ac2016-01-07 03:19:23 +00005target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
Sam Clegga5908002018-05-10 17:49:11 +00006target triple = "wasm32-unknown-unknown"
JF Bastienb6091df2015-08-25 22:58:05 +00007
Dan Gohmane51c0582015-10-06 00:27:55 +00008; CHECK-LABEL: f0:
9; CHECK: return{{$}}
Dan Gohman7d7409e2017-02-28 23:37:04 +000010; CHECK: end_function{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000011; CHECK: .size f0,
JF Bastienb6091df2015-08-25 22:58:05 +000012define void @f0() {
13 ret void
14}
15
Dan Gohmane51c0582015-10-06 00:27:55 +000016; CHECK-LABEL: f1:
Wouter van Oortmerssen49482f82018-11-19 17:10:36 +000017; CHECK-NEXT: .functype f1 () -> (i32){{$}}
Dan Gohman700515f2015-11-23 21:55:57 +000018; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
Dan Gohman4ba48162015-11-18 16:12:01 +000019; CHECK-NEXT: return $pop[[NUM]]{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000020; CHECK: .size f1,
JF Bastienb6091df2015-08-25 22:58:05 +000021define i32 @f1() {
22 ret i32 0
23}
24
Dan Gohmane51c0582015-10-06 00:27:55 +000025; CHECK-LABEL: f2:
Wouter van Oortmerssen49482f82018-11-19 17:10:36 +000026; CHECK-NEXT: .functype f2 (i32, f32) -> (i32){{$}}
Dan Gohman700515f2015-11-23 21:55:57 +000027; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
Dan Gohman4ba48162015-11-18 16:12:01 +000028; CHECK-NEXT: return $pop[[NUM]]{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000029; CHECK: .size f2,
JF Bastienb6091df2015-08-25 22:58:05 +000030define i32 @f2(i32 %p1, float %p2) {
31 ret i32 0
32}
33
Dan Gohmane51c0582015-10-06 00:27:55 +000034; CHECK-LABEL: f3:
Wouter van Oortmerssen49482f82018-11-19 17:10:36 +000035; CHECK-NEXT: .functype f3 (i32, f32) -> (){{$}}
Dan Gohman53828fd2015-11-23 16:50:18 +000036; CHECK-NOT: local
JF Bastienc8f89e82015-10-20 01:26:54 +000037; CHECK-NEXT: return{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000038; CHECK: .size f3,
JF Bastienb6091df2015-08-25 22:58:05 +000039define void @f3(i32 %p1, float %p2) {
40 ret void
41}
Derek Schuff46e33162015-11-16 21:12:41 +000042
43; CHECK-LABEL: f4:
Wouter van Oortmerssen49482f82018-11-19 17:10:36 +000044; CHECK-NEXT: .functype f4 (i32) -> (i32){{$}}
Dan Gohmanb6fd39a2016-01-19 16:59:23 +000045; CHECK-NOT: local
46; CHECK: .size f4,
Derek Schuff46e33162015-11-16 21:12:41 +000047define i32 @f4(i32 %x) {
48entry:
49 %c = trunc i32 %x to i1
50 br i1 %c, label %true, label %false
51true:
52 ret i32 0
53false:
54 ret i32 1
55}
56
57; CHECK-LABEL: f5:
Wouter van Oortmerssen49482f82018-11-19 17:10:36 +000058; CHECK-NEXT: .functype f5 () -> (f32){{$}}
Derek Schuff46e33162015-11-16 21:12:41 +000059; CHECK-NEXT: unreachable
60define float @f5() {
61 unreachable
62}