blob: da66be9439c2b48749dc3cda297593b4593e02b1 [file] [log] [blame]
Wouter van Oortmerssena7be3752018-08-13 23:12:49 +00001; RUN: llc -o - %s -asm-verbose=false | FileCheck %s
Dan Gohmane81021a2016-11-08 19:40:38 +00002target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
Sam Clegga5908002018-05-10 17:49:11 +00003target triple = "wasm32-unknown-unknown"
Dan Gohmane81021a2016-11-08 19:40:38 +00004
5; Test that stackified IMPLICIT_DEF instructions are converted into
6; CONST_I32 to provide an explicit push.
7
8; CHECK: br_if 2,
9; CHECK: i32.const $push[[L0:[0-9]+]]=, 0{{$}}
10; CHECK-NEXT: return $pop[[L0]]{{$}}
11define i1 @f() {
12 %a = xor i1 0, 0
13 switch i1 %a, label %C [
14 i1 0, label %A
15 i1 1, label %B
16 ]
17
18A:
19 %b = xor i1 0, 0
20 br label %X
21
22B:
23 %c = xor i1 0, 0
24 br i1 %c, label %D, label %X
25
26C:
27 %d = icmp slt i32 0, 0
28 br i1 %d, label %G, label %F
29
30D:
31 %e = xor i1 0, 0
32 br i1 %e, label %E, label %X
33
34E:
35 %f = xor i1 0, 0
36 br label %X
37
38F:
39 %g = xor i1 0, 0
40 br label %G
41
42G:
43 %h = phi i1 [ undef, %C ], [ false, %F ]
44 br label %X
45
46X:
47 %i = phi i1 [ true, %A ], [ true, %B ], [ true, %D ], [ true, %E ], [ %h, %G ]
48 ret i1 %i
49}
50