| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc -O0 -mtriple=wasm32-unknown-unknown -wasm-disable-explicit-locals -wasm-keep-registers < %s | FileCheck %s | |
| define i32 @test(ptr %p, ptr %p2) { | |
| ; CHECK-LABEL: test: | |
| ; CHECK: .functype test (i32, i32) -> (i32) | |
| ; CHECK-NEXT: # %bb.0: | |
| ; CHECK-NEXT: i32.load8_u $3=, 0($0) | |
| ; CHECK-NEXT: i32.eqz $2=, $3 | |
| ; CHECK-NEXT: i32.store8 0($1), $3 | |
| ; CHECK-NEXT: # %bb.1: # %bb2 | |
| ; CHECK-NEXT: block | |
| ; CHECK-NEXT: i32.const $push0=, 1 | |
| ; CHECK-NEXT: i32.and $push1=, $2, $pop0 | |
| ; CHECK-NEXT: br_if 0, $pop1 # 0: down to label0 | |
| ; CHECK-NEXT: # %bb.2: # %bb4 | |
| ; CHECK-NEXT: i32.const $push2=, 0 | |
| ; CHECK-NEXT: return $pop2 | |
| ; CHECK-NEXT: .LBB0_3: # %bb3 | |
| ; CHECK-NEXT: end_block # label0: | |
| ; CHECK-NEXT: i32.const $push3=, 1 | |
| ; CHECK-NEXT: return $pop3 | |
| %v = load i8, ptr %p | |
| %v.ext = zext i8 %v to i32 | |
| %cond = icmp eq i32 %v.ext, 0 | |
| ; Cause FastISel abort. | |
| %shl = shl i8 %v, 0 | |
| store i8 %shl, ptr %p2 | |
| br label %bb2 | |
| bb2: | |
| br i1 %cond, label %bb3, label %bb4 | |
| bb4: | |
| ret i32 0 | |
| bb3: | |
| ret i32 1 | |
| } |