Files
wasmtime/cranelift/filetests/simple_gvn/reject.cton
Dan Gohman 7c9b9e3d27 Mark spill and fill as can_store and can_load.
This allows GVN to avoid hoisting them. These will be to coarse for
things that want more precise dependence information, however we can
work that out when we build such things.
2017-10-19 13:11:33 -07:00

57 lines
1.0 KiB
Plaintext

test simple-gvn
function %other_side_effects(i32) -> i32 {
ebb0(v0: i32):
regmove v0, %10 -> %20
regmove v0, %10 -> %20
regmove v0, %20 -> %10
; check: regmove v0, %10 -> %20
; check: regmove v0, %10 -> %20
return v0
}
function %differing_typevars() -> i64 {
ebb0:
v0 = iconst.i32 7
v1 = iconst.i64 7
v2 = iconst.i64 8
; check: v0 = iconst.i32 7
; check: v1 = iconst.i64 7
; check: v2 = iconst.i64 8
v3 = uextend.i64 v0
v4 = iadd v2, v1
v5 = iadd v4, v3
return v5
}
function %cpu_flags() -> b1 {
ebb0:
v0 = iconst.i32 7
v1 = iconst.i32 8
v2 = ifcmp v0, v1
v3 = trueif eq v2
v4 = ifcmp v0, v1
v5 = trueif eq v4
v6 = bor v3, v5
; check: v2 = ifcmp v0, v1
; check: v3 = trueif eq v2
; check: v4 = ifcmp v0, v1
; check: v5 = trueif eq v4
return v6
}
function %spill() -> i32 {
ebb0:
v0 = iconst.i32 7
v1 = spill v0
v2 = fill v1
v3 = spill v0
v4 = fill v1
v5 = bor v2, v4
; check: v1 = spill v0
; check: v2 = fill v1
; check: v3 = spill v0
; check: v4 = fill v1
return v5
}