diff --git a/cranelift/codegen/src/preopt.peepmatic b/cranelift/codegen/src/preopt.peepmatic index a571d82947af..cd988ff7d956 100644 --- a/cranelift/codegen/src/preopt.peepmatic +++ b/cranelift/codegen/src/preopt.peepmatic @@ -196,4 +196,4 @@ (=> (when (urem_imm $C $x) (is-power-of-two $C) (fits-in-native-word $C)) - (band_imm $(isub 1 $C) $x)) + (band_imm $(isub $C 1) $x)) diff --git a/cranelift/codegen/src/preopt.serialized b/cranelift/codegen/src/preopt.serialized index 27023cfad28a..1bb11b24ad37 100644 Binary files a/cranelift/codegen/src/preopt.serialized and b/cranelift/codegen/src/preopt.serialized differ diff --git a/cranelift/peepmatic/crates/runtime/src/operator.rs b/cranelift/peepmatic/crates/runtime/src/operator.rs index 71fc2c4ca4b9..2915f36290fa 100644 --- a/cranelift/peepmatic/crates/runtime/src/operator.rs +++ b/cranelift/peepmatic/crates/runtime/src/operator.rs @@ -233,14 +233,14 @@ pub enum UnquoteOperator { #[peepmatic(params(iNN, iNN), result(iNN))] Iadd, - /// Compile-time `isub` of two constant values. - #[peepmatic(params(iNN, iNN), result(iNN))] - Isub, - /// Compile-time `imul` of two constant values. #[peepmatic(params(iNN, iNN), result(iNN))] Imul, + /// Compile-time `isub` of two constant values. + #[peepmatic(params(iNN, iNN), result(iNN))] + Isub, + /// Take the base-2 log of a power of two integer. #[peepmatic(params(iNN), result(iNN))] Log2, diff --git a/cranelift/peepmatic/crates/runtime/src/optimizer.rs b/cranelift/peepmatic/crates/runtime/src/optimizer.rs index ce4a6b8e57ec..f477db85ac69 100644 --- a/cranelift/peepmatic/crates/runtime/src/optimizer.rs +++ b/cranelift/peepmatic/crates/runtime/src/optimizer.rs @@ -77,8 +77,8 @@ where | UnquoteOperator::Bor | UnquoteOperator::Bxor | UnquoteOperator::Iadd - | UnquoteOperator::Isub - | UnquoteOperator::Imul => unreachable!("not a unary unquote operator: {:?}", operator), + | UnquoteOperator::Imul + | UnquoteOperator::Isub => unreachable!("not a unary unquote operator: {:?}", operator), } } @@ -99,8 +99,8 @@ where UnquoteOperator::Bor => fold_ints!(a, b, |x, y| x | y), UnquoteOperator::Bxor => fold_ints!(a, b, |x, y| x ^ y), UnquoteOperator::Iadd => fold_ints!(a, b, |x, y| x.wrapping_add(y)), - UnquoteOperator::Isub => fold_ints!(a, b, |x, y| x.wrapping_sub(y)), UnquoteOperator::Imul => fold_ints!(a, b, |x, y| x.wrapping_mul(y)), + UnquoteOperator::Isub => fold_ints!(a, b, |x, y| x.wrapping_sub(y)), UnquoteOperator::Log2 | UnquoteOperator::Neg => { unreachable!("not a binary unquote operator: {:?}", operator) }