xref: /llvm-project/llvm/test/CodeGen/WebAssembly/pr51651.ll (revision 73856247eef35f5336e485dc009842a5b991c421)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -O0 -mtriple=wasm32-unknown-unknown -wasm-disable-explicit-locals -wasm-keep-registers < %s | FileCheck %s
3
4define i32 @test(ptr %p, ptr %p2) {
5; CHECK-LABEL: test:
6; CHECK:         .functype test (i32, i32) -> (i32)
7; CHECK-NEXT:  # %bb.0:
8; CHECK-NEXT:    i32.load8_u $3=, 0($0)
9; CHECK-NEXT:    i32.eqz $2=, $3
10; CHECK-NEXT:    i32.store8 0($1), $3
11; CHECK-NEXT:  # %bb.1: # %bb2
12; CHECK-NEXT:    i32.const $4=, 1
13; CHECK-NEXT:    i32.and $5=, $2, $4
14; CHECK-NEXT:    block
15; CHECK-NEXT:    br_if 0, $5 # 0: down to label0
16; CHECK-NEXT:  # %bb.2: # %bb4
17; CHECK-NEXT:    i32.const $6=, 0
18; CHECK-NEXT:    return $6
19; CHECK-NEXT:  .LBB0_3: # %bb3
20; CHECK-NEXT:    end_block # label0:
21; CHECK-NEXT:    i32.const $7=, 1
22; CHECK-NEXT:    return $7
23  %v = load i8, ptr %p
24  %v.ext = zext i8 %v to i32
25  %cond = icmp eq i32 %v.ext, 0
26  ; Cause FastISel abort.
27  %shl = shl i8 %v, 0
28  store i8 %shl, ptr %p2
29  br label %bb2
30
31bb2:
32  br i1 %cond, label %bb3, label %bb4
33
34bb4:
35  ret i32 0
36
37bb3:
38  ret i32 1
39}
40