120
|
1 ; RUN: llc -o - %s | FileCheck %s
|
|
2 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
121
|
3 target triple = "wasm32-unknown-unknown-wasm"
|
120
|
4
|
|
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]]{{$}}
|
|
11 define 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
|
|
18 A:
|
|
19 %b = xor i1 0, 0
|
|
20 br label %X
|
|
21
|
|
22 B:
|
|
23 %c = xor i1 0, 0
|
|
24 br i1 %c, label %D, label %X
|
|
25
|
|
26 C:
|
|
27 %d = icmp slt i32 0, 0
|
|
28 br i1 %d, label %G, label %F
|
|
29
|
|
30 D:
|
|
31 %e = xor i1 0, 0
|
|
32 br i1 %e, label %E, label %X
|
|
33
|
|
34 E:
|
|
35 %f = xor i1 0, 0
|
|
36 br label %X
|
|
37
|
|
38 F:
|
|
39 %g = xor i1 0, 0
|
|
40 br label %G
|
|
41
|
|
42 G:
|
|
43 %h = phi i1 [ undef, %C ], [ false, %F ]
|
|
44 br label %X
|
|
45
|
|
46 X:
|
|
47 %i = phi i1 [ true, %A ], [ true, %B ], [ true, %D ], [ true, %E ], [ %h, %G ]
|
|
48 ret i1 %i
|
|
49 }
|
|
50
|