blob: 994ef62bf54d2b199802e6e52329959456d4bb7d [file] [log] [blame]
Dan Gohman7d7409e2017-02-28 23:37:04 +00001; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -disable-wasm-explicit-locals | 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"
Dan Gohman7d7409e2017-02-28 23:37:04 +00006target triple = "wasm32-unknown-unknown-wasm"
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:
17; CHECK-NEXT: .result 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:
Dan Gohman53828fd2015-11-23 16:50:18 +000026; CHECK-NEXT: .param i32, f32{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000027; CHECK-NEXT: .result i32{{$}}
Dan Gohman700515f2015-11-23 21:55:57 +000028; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
Dan Gohman4ba48162015-11-18 16:12:01 +000029; CHECK-NEXT: return $pop[[NUM]]{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000030; CHECK: .size f2,
JF Bastienb6091df2015-08-25 22:58:05 +000031define i32 @f2(i32 %p1, float %p2) {
32 ret i32 0
33}
34
Dan Gohmane51c0582015-10-06 00:27:55 +000035; CHECK-LABEL: f3:
Dan Gohman53828fd2015-11-23 16:50:18 +000036; CHECK-NEXT: .param i32, f32{{$}}
37; CHECK-NOT: local
JF Bastienc8f89e82015-10-20 01:26:54 +000038; CHECK-NEXT: return{{$}}
Dan Gohmane51c0582015-10-06 00:27:55 +000039; CHECK: .size f3,
JF Bastienb6091df2015-08-25 22:58:05 +000040define void @f3(i32 %p1, float %p2) {
41 ret void
42}
Derek Schuff46e33162015-11-16 21:12:41 +000043
44; CHECK-LABEL: f4:
45; CHECK-NEXT: .param i32{{$}}
46; CHECK-NEXT: .result i32{{$}}
Dan Gohmanb6fd39a2016-01-19 16:59:23 +000047; CHECK-NOT: local
48; CHECK: .size f4,
Derek Schuff46e33162015-11-16 21:12:41 +000049define i32 @f4(i32 %x) {
50entry:
51 %c = trunc i32 %x to i1
52 br i1 %c, label %true, label %false
53true:
54 ret i32 0
55false:
56 ret i32 1
57}
58
59; CHECK-LABEL: f5:
60; CHECK-NEXT: .result f32{{$}}
61; CHECK-NEXT: unreachable
62define float @f5() {
63 unreachable
64}