|
|
@ -20,6 +20,42 @@ block0(v0: i32): |
|
|
|
; check: return v0 |
|
|
|
} |
|
|
|
|
|
|
|
function %add_ineg(i32, i32) -> i32 { |
|
|
|
block0(v0: i32, v1: i32): |
|
|
|
v2 = ineg v1 |
|
|
|
v3 = iadd v0, v2 |
|
|
|
return v3 |
|
|
|
; check: v4 = isub v0, v1 |
|
|
|
; check: return v4 |
|
|
|
} |
|
|
|
|
|
|
|
function %ineg_add(i32, i32) -> i32 { |
|
|
|
block0(v0: i32, v1: i32): |
|
|
|
v2 = ineg v0 |
|
|
|
v3 = iadd v2, v1 |
|
|
|
return v3 |
|
|
|
; check: v4 = isub v1, v0 |
|
|
|
; check: return v4 |
|
|
|
} |
|
|
|
|
|
|
|
function %sub_ineg(i32, i32) -> i32 { |
|
|
|
block0(v0: i32, v1: i32): |
|
|
|
v2 = ineg v1 |
|
|
|
v3 = isub v0, v2 |
|
|
|
return v3 |
|
|
|
; check: v4 = iadd v0, v1 |
|
|
|
; check: return v4 |
|
|
|
} |
|
|
|
|
|
|
|
function %sub_then_ineg(i32, i32) -> i32 { |
|
|
|
block0(v0: i32, v1: i32): |
|
|
|
v2 = isub v0, v1 |
|
|
|
v3 = ineg v2 |
|
|
|
return v3 |
|
|
|
; check: v4 = isub v1, v0 |
|
|
|
; check: return v4 |
|
|
|
} |
|
|
|
|
|
|
|
function %imul_ineg_cancel(i32, i32) -> i32 { |
|
|
|
block0(v0: i32, v1: i32): |
|
|
|
v2 = ineg v0 |
|
|
@ -125,8 +161,8 @@ block0(v0: i32): |
|
|
|
return v3 |
|
|
|
} |
|
|
|
|
|
|
|
; check: v4 = ineg v0 |
|
|
|
; check: return v4 |
|
|
|
; check: v5 = ineg v0 |
|
|
|
; check: return v5 |
|
|
|
|
|
|
|
function %ineg_not_minus_neg_1(i32) -> i32 { |
|
|
|
block0(v0: i32): |
|
|
@ -136,8 +172,8 @@ block0(v0: i32): |
|
|
|
return v3 |
|
|
|
} |
|
|
|
|
|
|
|
; check: v4 = ineg v0 |
|
|
|
; check: return v4 |
|
|
|
; check: v6 = ineg v0 |
|
|
|
; check: return v6 |
|
|
|
|
|
|
|
function %ineg_not_sub_one(i32) -> i32 { |
|
|
|
block0(v0: i32): |
|
|
@ -172,7 +208,17 @@ block0(v0: i32): |
|
|
|
; check: v6 = ineg v0 |
|
|
|
; check: return v6 |
|
|
|
|
|
|
|
function %byte_sub_smax_twice(i8) -> i8 { |
|
|
|
block0(v0: i8): |
|
|
|
v1 = iconst.i8 127 |
|
|
|
v2 = isub v0, v1 |
|
|
|
v3 = isub v2, v1 |
|
|
|
return v3 |
|
|
|
} |
|
|
|
|
|
|
|
; check: v6 = iconst.i8 2 |
|
|
|
; check: v7 = iadd v0, v6 ; v6 = 2 |
|
|
|
; check: return v7 |
|
|
|
|
|
|
|
function %double_fneg(f32) -> f32 { |
|
|
|
block0(v1: f32): |
|
|
|