From d839d83f7e159cb9c5408bd0d4c554c074815af0 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 3 Jul 2020 09:44:59 +0300 Subject: [PATCH] add reminder by a power of two peephole rule --- cranelift/codegen/src/preopt.peepmatic | 5 +++++ cranelift/codegen/src/preopt.serialized | Bin 5438 -> 5543 bytes 2 files changed, 5 insertions(+) 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 bae915dab008d2ecd380e99793768123a1317186..9b9bc3f01f3a3aac7274b463d5c7dae78ef005b1 100644 GIT binary patch delta 727 zcmZuvJxtqR5cP$8#!ehN+@LH6AUT78}>5jgQ(PWzi8f4WVi+ z;7Cu?FusRve9+4zJ%9B&jj-o|Fu6~<$GTg#0~%VYi8DP&<8I^cP`B|}c*7e$^*{SG z+iTuCR*gD6!f_;vFNWr#6z+`YG>f@N-s5i~hKsi7F}|`YH+jN)Pa>*@uwo8T*I>k>9fS3^ID!V-oc9G4Inf=5szxXI}DYA?8J& z7G_?M+N)m4U^LTX5=8iz^l8qInDA*9^HFRL>?iZSN|JdF-v(Y%8rLEz(#$ic#vJ}O gR+B1jV->!cTt_*6z-U)bHE-fM>UY{X@F!9G2dvzJwEzGB delta 683 zcmZ8fJx{_=6zv6DDNqWQ253e3P*4y=1O;NEn}&qQW^{2d4kjcEIt=bkb=21K!sHY5J0zch9-!o}8xdAv?%)-n~_h<7!mwU>@|l&oCAsf+;A; z0&&2B!@K~`Ac0*NLai(4{aZ)ZiES~=vvCk(LK=s>zyl$*KM?)^-&|Xu;ftu^ym$q( z*pYRJVoxsPm#D!UHoZC~-NlJUzzcT^;&?5FcpurA8%eSbVa}t$g0XSpv2Hwinj`1* zM7Kn`hQ;;S+kz~9OHq+bITn|p2%btiu!8qe+?YlrV{B0zLLT>g@sWRllCw{A;gc^0 zYetq|pEb+2JkC-g?LL$ZO~^mi9Q!Y!f*<~Ddy@sRoGI!zESR;^RO>d*MYw3=Sn5?9 z=O&!9aUQ}MldDfgUh0-7$ZRCKQZ|nLjzt?M6Hef3;9QN_CMw~1tk3MyJNn^OUL&ky jZ;Vk?D&_j78BxO&C9VZpwk=pnN)*@|O