xref: /llvm-project/llvm/test/CodeGen/WebAssembly/return-void.ll (revision 41080b2fdd4b6c57d5a2926d6157b9847342b3a1)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s | FileCheck %s
3; RUN: llc < %s -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=FAST
4
5target triple = "wasm32-unknown-unknown"
6
7define void @return_void() {
8; CHECK-LABEL: return_void:
9; CHECK:         .functype return_void () -> ()
10; CHECK-NEXT:  # %bb.0:
11; CHECK-NEXT:    # fallthrough-return
12;
13; FAST-LABEL: return_void:
14; FAST:         .functype return_void () -> ()
15; FAST-NEXT:  # %bb.0:
16; FAST-NEXT:    # fallthrough-return
17  ret void
18}
19
20define void @return_void_twice(i32 %a) {
21; CHECK-LABEL: return_void_twice:
22; CHECK:         .functype return_void_twice (i32) -> ()
23; CHECK-NEXT:  # %bb.0:
24; CHECK-NEXT:    block
25; CHECK-NEXT:    local.get 0
26; CHECK-NEXT:    i32.eqz
27; CHECK-NEXT:    br_if 0 # 0: down to label0
28; CHECK-NEXT:  # %bb.1: # %true
29; CHECK-NEXT:    i32.const 0
30; CHECK-NEXT:    i32.const 0
31; CHECK-NEXT:    i32.store 0
32; CHECK-NEXT:    return
33; CHECK-NEXT:  .LBB1_2: # %false
34; CHECK-NEXT:    end_block # label0:
35; CHECK-NEXT:    i32.const 0
36; CHECK-NEXT:    i32.const 1
37; CHECK-NEXT:    i32.store 0
38; CHECK-NEXT:    # fallthrough-return
39;
40; FAST-LABEL: return_void_twice:
41; FAST:         .functype return_void_twice (i32) -> ()
42; FAST-NEXT:  # %bb.0:
43; FAST-NEXT:    block
44; FAST-NEXT:    local.get 0
45; FAST-NEXT:    i32.eqz
46; FAST-NEXT:    br_if 0 # 0: down to label0
47; FAST-NEXT:  # %bb.1: # %true
48; FAST-NEXT:    i32.const 0
49; FAST-NEXT:    i32.const 0
50; FAST-NEXT:    i32.store 0
51; FAST-NEXT:    return
52; FAST-NEXT:  .LBB1_2: # %false
53; FAST-NEXT:    end_block # label0:
54; FAST-NEXT:    i32.const 0
55; FAST-NEXT:    i32.const 1
56; FAST-NEXT:    i32.store 0
57; FAST-NEXT:    # fallthrough-return
58  %b = icmp ne i32 %a, 0
59  br i1 %b, label %true, label %false
60
61true:
62  store i32 0, ptr null
63  ret void
64
65false:
66  store i32 1, ptr null
67  ret void
68}
69