Files
wasmtime/cranelift/filetests/filetests/licm/reject_load_notrap.clif
Trevor Elliott a5698cedf8 cranelift: Remove brz and brnz (#5630)
Remove the brz and brnz instructions, as their behavior is now redundant with brif.
2023-01-30 20:34:56 +00:00

53 lines
1.2 KiB
Plaintext

test licm
target aarch64
target x86_64
;; Nontrapping possibly-not-readonly load from address that is not
;; loop-dependent should *not* be hoisted out of loop, though the
;; address computation can be.
function %hoist_load(i32, i64 vmctx) -> i32 {
gv0 = vmctx
gv1 = load.i64 notrap aligned readonly gv0
block0(v0: i32, v1: i64):
v4 = iconst.i32 1
v5 = global_value.i64 gv1
jump block1(v0, v1)
block1(v2: i32, v3: i64):
v6 = load.i32 notrap aligned v5
v7 = iadd v2, v6
brif v2, block2, block3(v2)
block2:
v8 = isub v2, v4
jump block1(v8, v3)
block3(v9: i32):
return v9
}
; sameln: function %hoist_load(i32, i64 vmctx) -> i32 fast {
; nextln: gv0 = vmctx
; nextln: gv1 = load.i64 notrap aligned readonly gv0
; nextln:
; nextln: block0(v0: i32, v1: i64):
; nextln: v4 = iconst.i32 1
; nextln: v5 = global_value.i64 gv1
; nextln: jump block1(v0, v1)
; nextln:
; nextln: block1(v2: i32, v3: i64):
; nextln: v6 = load.i32 notrap aligned v5
; nextln: v7 = iadd v2, v6
; nextln: brif v2, block2, block3(v2)
; nextln:
; nextln: block2:
; nextln: v8 = isub.i32 v2, v4 ; v4 = 1
; nextln: jump block1(v8, v3)
; nextln:
; nextln: block3(v9: i32):
; nextln: return v9
; nextln: }