diff --git a/cranelift/codegen/src/isa/s390x/lower/isle.rs b/cranelift/codegen/src/isa/s390x/lower/isle.rs index 520cd5f371..a6dfe21e51 100644 --- a/cranelift/codegen/src/isa/s390x/lower/isle.rs +++ b/cranelift/codegen/src/isa/s390x/lower/isle.rs @@ -628,21 +628,21 @@ impl generated_code::Context for IsleContext<'_, '_, MInst, S390xBackend> { #[inline] fn i64_from_negated_value(&mut self, val: Value) -> Option { let constant = self.u64_from_signed_value(val)? as i64; - let imm = -constant; + let imm = constant.wrapping_neg(); Some(imm) } #[inline] fn i32_from_negated_value(&mut self, val: Value) -> Option { let constant = self.u64_from_signed_value(val)? as i64; - let imm = i32::try_from(-constant).ok()?; + let imm = i32::try_from(constant.wrapping_neg()).ok()?; Some(imm) } #[inline] fn i16_from_negated_value(&mut self, val: Value) -> Option { let constant = self.u64_from_signed_value(val)? as i64; - let imm = i16::try_from(-constant).ok()?; + let imm = i16::try_from(constant.wrapping_neg()).ok()?; Some(imm) }