Fix a bug in produces_const (#4709)
https://github.com/bytecodealliance/wasmtime/pull/4709
This commit is contained in:
@@ -766,13 +766,13 @@ impl Inst {
|
|||||||
/// same as the first register (already handled).
|
/// same as the first register (already handled).
|
||||||
fn produces_const(&self) -> bool {
|
fn produces_const(&self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
Self::AluRmiR { op, src2, dst, .. } => {
|
Self::AluRmiR { op, src1, src2, .. } => {
|
||||||
src2.clone().to_reg_mem_imm().to_reg() == Some(dst.to_reg().to_reg())
|
src2.clone().to_reg_mem_imm().to_reg() == Some(src1.to_reg())
|
||||||
&& (*op == AluRmiROpcode::Xor || *op == AluRmiROpcode::Sub)
|
&& (*op == AluRmiROpcode::Xor || *op == AluRmiROpcode::Sub)
|
||||||
}
|
}
|
||||||
|
|
||||||
Self::XmmRmR { op, src2, dst, .. } => {
|
Self::XmmRmR { op, src1, src2, .. } => {
|
||||||
src2.clone().to_reg_mem().to_reg() == Some(dst.to_reg().to_reg())
|
src2.clone().to_reg_mem().to_reg() == Some(src1.to_reg())
|
||||||
&& (*op == SseOpcode::Xorps
|
&& (*op == SseOpcode::Xorps
|
||||||
|| *op == SseOpcode::Xorpd
|
|| *op == SseOpcode::Xorpd
|
||||||
|| *op == SseOpcode::Pxor
|
|| *op == SseOpcode::Pxor
|
||||||
@@ -783,9 +783,13 @@ impl Inst {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Self::XmmRmRImm {
|
Self::XmmRmRImm {
|
||||||
op, src2, dst, imm, ..
|
op,
|
||||||
|
src1,
|
||||||
|
src2,
|
||||||
|
imm,
|
||||||
|
..
|
||||||
} => {
|
} => {
|
||||||
src2.to_reg() == Some(dst.to_reg())
|
src2.to_reg() == Some(src1.clone())
|
||||||
&& (*op == SseOpcode::Cmppd || *op == SseOpcode::Cmpps)
|
&& (*op == SseOpcode::Cmppd || *op == SseOpcode::Cmpps)
|
||||||
&& *imm == FcmpImm::Equal.encode()
|
&& *imm == FcmpImm::Equal.encode()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user