Legalize bnot using xor with -1.
This commit is contained in:
@@ -32,7 +32,8 @@ ebb0(v0: i32):
|
|||||||
function %bitclear(i32, i32) -> i32 {
|
function %bitclear(i32, i32) -> i32 {
|
||||||
ebb0(v0: i32, v1: i32):
|
ebb0(v0: i32, v1: i32):
|
||||||
v2 = band_not v0, v1
|
v2 = band_not v0, v1
|
||||||
; check: bnot
|
; check: iconst.i32 -1
|
||||||
|
; check: bxor
|
||||||
; check: band
|
; check: band
|
||||||
return v2
|
return v2
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,6 +252,14 @@ for inst_not, inst in [
|
|||||||
a << inst(x, a1)
|
a << inst(x, a1)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
# Expand bnot using xor.
|
||||||
|
expand.legalize(
|
||||||
|
a << bnot(x),
|
||||||
|
Rtl(
|
||||||
|
y << iconst(imm64(-1)),
|
||||||
|
a << bxor(x, y)
|
||||||
|
))
|
||||||
|
|
||||||
# Floating-point sign manipulations.
|
# Floating-point sign manipulations.
|
||||||
for ty, minus_zero in [
|
for ty, minus_zero in [
|
||||||
(types.f32, f32const(ieee32.bits(0x80000000))),
|
(types.f32, f32const(ieee32.bits(0x80000000))),
|
||||||
|
|||||||
Reference in New Issue
Block a user