From 5b38857e7fe74d31af8ac0ae515ec27355800226 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 15 Jul 2020 13:46:25 +0300 Subject: [PATCH] add bnot to peepmatic + transform rule --- cranelift/codegen/src/peepmatic.rs | 6 ++++++ cranelift/codegen/src/preopt.peepmatic | 1 + cranelift/codegen/src/preopt.serialized | Bin 5613 -> 5657 bytes .../peepmatic/crates/runtime/src/operator.rs | 4 ++++ 4 files changed, 11 insertions(+) diff --git a/cranelift/codegen/src/peepmatic.rs b/cranelift/codegen/src/peepmatic.rs index 1e22019407..2c6c2d1e01 100644 --- a/cranelift/codegen/src/peepmatic.rs +++ b/cranelift/codegen/src/peepmatic.rs @@ -237,6 +237,7 @@ impl Opcode { BandImm, Bconst, Bint, + Bnot, Bor, BorImm, Brnz, @@ -549,6 +550,11 @@ unsafe impl<'a, 'b> InstructionSet<'b> for &'a dyn TargetIsa { let val = pos.ins().bint(ty, a); pos.func.dfg.value_def(val).unwrap_inst().into() } + Operator::Bnot => { + let a = part_to_value(pos, root, a).unwrap(); + let val = pos.ins().bnot(a); + pos.func.dfg.value_def(val).unwrap_inst().into() + } Operator::Brnz => { let a = part_to_value(pos, root, a).unwrap(); diff --git a/cranelift/codegen/src/preopt.peepmatic b/cranelift/codegen/src/preopt.peepmatic index cd988ff7d9..8f2651fc21 100644 --- a/cranelift/codegen/src/preopt.peepmatic +++ b/cranelift/codegen/src/preopt.peepmatic @@ -112,6 +112,7 @@ ;; Replace with negative 1. (=> (bor_imm -1 $x) -1) +(=> (bxor_imm -1 $x) (bnot $x)) ;; Transform `[(x << N) >> N]` into a (un)signed-extending move. ;; diff --git a/cranelift/codegen/src/preopt.serialized b/cranelift/codegen/src/preopt.serialized index 1bb11b24ad37aacd868cb3aee8c1ad33109707d7..896c3ac8d7f3c3976ae46fff75bfa9b14a5a30dc 100644 GIT binary patch literal 5657 zcmcJT33J>w427ljk)-K;-*M73ZPWX{XZrvDREtlK&wSGE(q7LLGg^=U9teO0CHui7 znj4>X9`wUOTyh_4G!z6 ztbMi_%bsbyVl{C{-Dk5L=?LQ9G_x<4@>1~iYy=S z4A6L8ubpV}-m zi+eM4*?k_{p3F4n_pN%!z@*oTF#Jj<``zBI?5a-oiwCdOy?G?vJAJycHE!*T880Mi zZmL_bhIxuPDc@RMd@j%Fr`yWt|LmS8Ee@)7diNN8x9&0eZrx+_-MYu8W-T)d`BMcC+4r?Q z5?|*vO;1CeI^J%h>OKox=4Kz}m}%cXtI@IgDKlYIzdRME)-SQQsox=cr^k20s1DC< zSUmT~`I}>=I@v0#wu@UAOKvHUymyb)%qO5s%7(7uRy3Vjv&7z}W{2#(cIJ#MGe!4J zJ+{#sgqk4nS0RYwR($=WPx;u&)}FyYd>!yc^ZLl{ue^;Tw4ZT=N$1_h0w1~VSe?WdI}Ruy!hoU;`nOVBG%1! z$Q~PrJ9$*4Ul%L=q<`hotA)<89!ZxF5i|arKUO8JB8;k(E1p`V#NMV#hwK%RtLfP^ zecFdhR)5w!Px9PuDp$pIVE#v78L|VvZ)EJ)FB=)>`R9#{KKo%KdsuV-v&1Uyp|3q@ zoICrgjf^|~i;awT+~*q^e@9XSz0svqj;i8r`KuNyq|)%!0`X2ComTW%8dbyPZ-h@6 z1o36_B<2j?t7qgJeJ8EJ-?kssqnWgd^n;pwEW!2fhcz0lfWDJ_;{EUncprINuP$$N z>tSzKH+VzeN!}ipfS5ItR@qZqYLk1cw}td)%N~R8|qionXHt9G?$xh1qaayH`%%~o|o+?KJ=XwAKxwO6R9p8`B`_d{O}Dx THze`)9{EAvNq)FB=vmW$jwB{H literal 5613 zcmcJT33C)j425TQZG)3QAPKo3WDSm;1jv1GrHcRmr-;5$zwOtvJMFcrP}Nx7lAc;p zx29)(IwXyS4=WAoXxz$HYiY-!4#(|qsM5itt5d-W*J|$z-7fO43%^(R%ff#vd{a1h z`6!}^y^X*BNiYR)Jd7tHI7;(Xe?}fx02WQgVLS?WtUzGFn1ztq1mH$R);&Vstb0I@ zrE)Nx28mqfdW7?epY*DTfo!lk{1P{e0!wsb^%I&V2i3ZqHXQTDt3dTh*fn zw=vyr)U_(LX8~x%)*G|4c-n5p{%AsEmWer@vTENL>#bifSJl$7#ED;O=~-l)S;2kw ztOF^ZoYkzQJC`DO#-9T2#9nnT4Ciaehd5@rr_l3f_di2IJmYbnGGZ z+hoF>S@zgVW7SB>0(u3E*zjv-%2ge>#hkf?M4S62S=ecrA$R=+E z^_9K?K`dMGc5|P)Sz1}^S>KR+`~7O`$1uJ<9Z6*UwZZfwBoFs_NQBCr2!D@96^da* z*v|Ur>`x$t{5>Ea;+SNVvXX{*%8>jO&(bMOME=cgtnX~RU#}Y-d&nu=XCJ{%#Cx{a zjsF%qnDS?=8i=FQxLQ^TSu*1%`cjob6_l8)lCOB(DmnI$D($n+h_wHj4Z{z0IK}%W z=6;gL^3A8Js1D3u8lTRGtzHk@;C+CzYk;7TLFEg^!X?R`&U5P^M<}sdLyF!-st0= zH}7-hy9o^O?Ph-#QYzqkoNwr?&U)J8O;}XY9