diff --git a/cranelift/codegen/src/preopt.peepmatic b/cranelift/codegen/src/preopt.peepmatic index 604460dd57..de9dc8342a 100644 --- a/cranelift/codegen/src/preopt.peepmatic +++ b/cranelift/codegen/src/preopt.peepmatic @@ -191,3 +191,8 @@ (=> (when (udiv_imm $C $x) (is-power-of-two $C)) (ushr_imm $(log2 $C) $x)) + +;; Reminder by a power of two -> bitwise and with decreased by one constant. +(=> (when (urem_imm $C $x) + (is-power-of-two $C)) + (band_imm $(iadd -1 $C) $x)) \ No newline at end of file diff --git a/cranelift/codegen/src/preopt.serialized b/cranelift/codegen/src/preopt.serialized index bae915dab0..9b9bc3f01f 100644 Binary files a/cranelift/codegen/src/preopt.serialized and b/cranelift/codegen/src/preopt.serialized differ