1e81021a5SDan Gohman; RUN: llc -o - %s | FileCheck %s
2e81021a5SDan Gohmantarget datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
3*d934cb88SDan Gohmantarget triple = "wasm32-unknown-unknown-wasm"
4e81021a5SDan Gohman
5e81021a5SDan Gohman; Test that stackified IMPLICIT_DEF instructions are converted into
6e81021a5SDan Gohman; CONST_I32 to provide an explicit push.
7e81021a5SDan Gohman
8e81021a5SDan Gohman; CHECK:      br_if 2,
9e81021a5SDan Gohman; CHECK:      i32.const $push[[L0:[0-9]+]]=, 0{{$}}
10e81021a5SDan Gohman; CHECK-NEXT: return $pop[[L0]]{{$}}
11e81021a5SDan Gohmandefine i1 @f() {
12e81021a5SDan Gohman  %a = xor i1 0, 0
13e81021a5SDan Gohman  switch i1 %a, label %C [
14e81021a5SDan Gohman    i1 0, label %A
15e81021a5SDan Gohman    i1 1, label %B
16e81021a5SDan Gohman  ]
17e81021a5SDan Gohman
18e81021a5SDan GohmanA:
19e81021a5SDan Gohman  %b = xor i1 0, 0
20e81021a5SDan Gohman  br label %X
21e81021a5SDan Gohman
22e81021a5SDan GohmanB:
23e81021a5SDan Gohman  %c = xor i1 0, 0
24e81021a5SDan Gohman  br i1 %c, label %D, label %X
25e81021a5SDan Gohman
26e81021a5SDan GohmanC:
27e81021a5SDan Gohman  %d = icmp slt i32 0, 0
28e81021a5SDan Gohman  br i1 %d, label %G, label %F
29e81021a5SDan Gohman
30e81021a5SDan GohmanD:
31e81021a5SDan Gohman  %e = xor i1 0, 0
32e81021a5SDan Gohman  br i1 %e, label %E, label %X
33e81021a5SDan Gohman
34e81021a5SDan GohmanE:
35e81021a5SDan Gohman  %f = xor i1 0, 0
36e81021a5SDan Gohman  br label %X
37e81021a5SDan Gohman
38e81021a5SDan GohmanF:
39e81021a5SDan Gohman  %g = xor i1 0, 0
40e81021a5SDan Gohman  br label %G
41e81021a5SDan Gohman
42e81021a5SDan GohmanG:
43e81021a5SDan Gohman  %h = phi i1 [ undef, %C ], [ false, %F ]
44e81021a5SDan Gohman  br label %X
45e81021a5SDan Gohman
46e81021a5SDan GohmanX:
47e81021a5SDan Gohman  %i = phi i1 [ true, %A ], [ true, %B ], [ true, %D ], [ true, %E ], [ %h, %G ]
48e81021a5SDan Gohman  ret i1 %i
49e81021a5SDan Gohman}
50e81021a5SDan Gohman
51