From 052b3c99b22c508d2a3ed44b3dcd0ca6c159ba5e Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Thu, 23 Apr 2020 19:46:49 -0700 Subject: [PATCH] cmd/compile: convert reassociation optimizations to typed aux Passes toolstash-check. Change-Id: I85a161c4e1c29e06e3f7e6ad4a59ff8cc51c7296 Reviewed-on: https://go-review.googlesource.com/c/go/+/229683 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- .../compile/internal/ssa/gen/generic.rules | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/cmd/compile/internal/ssa/gen/generic.rules b/src/cmd/compile/internal/ssa/gen/generic.rules index 899e3e6752..899d440081 100644 --- a/src/cmd/compile/internal/ssa/gen/generic.rules +++ b/src/cmd/compile/internal/ssa/gen/generic.rules @@ -1805,52 +1805,52 @@ // See issue 37881. // x + (C + z) -> C + (x + z) -(Add64 (Add64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Add64 i (Add64 z x)) -(Add32 (Add32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Add32 i (Add32 z x)) -(Add16 (Add16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Add16 i (Add16 z x)) -(Add8 (Add8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Add8 i (Add8 z x)) +(Add64 (Add64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (Add64 i (Add64 z x)) +(Add32 (Add32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (Add32 i (Add32 z x)) +(Add16 (Add16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (Add16 i (Add16 z x)) +(Add8 (Add8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (Add8 i (Add8 z x)) // x + (C - z) -> C + (x - z) -(Add64 (Sub64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Add64 i (Sub64 x z)) -(Add32 (Sub32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Add32 i (Sub32 x z)) -(Add16 (Sub16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Add16 i (Sub16 x z)) -(Add8 (Sub8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Add8 i (Sub8 x z)) +(Add64 (Sub64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (Add64 i (Sub64 x z)) +(Add32 (Sub32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (Add32 i (Sub32 x z)) +(Add16 (Sub16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (Add16 i (Sub16 x z)) +(Add8 (Sub8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (Add8 i (Sub8 x z)) // x + (z - C) -> (x + z) - C -(Add64 (Sub64 z i:(Const64 )) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Sub64 (Add64 x z) i) -(Add32 (Sub32 z i:(Const32 )) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Sub32 (Add32 x z) i) -(Add16 (Sub16 z i:(Const16 )) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Sub16 (Add16 x z) i) -(Add8 (Sub8 z i:(Const8 )) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Sub8 (Add8 x z) i) +(Add64 (Sub64 z i:(Const64 )) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (Sub64 (Add64 x z) i) +(Add32 (Sub32 z i:(Const32 )) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (Sub32 (Add32 x z) i) +(Add16 (Sub16 z i:(Const16 )) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (Sub16 (Add16 x z) i) +(Add8 (Sub8 z i:(Const8 )) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (Sub8 (Add8 x z) i) // x - (C - z) -> x + (z - C) -> (x + z) - C -(Sub64 x (Sub64 i:(Const64 ) z)) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Sub64 (Add64 x z) i) -(Sub32 x (Sub32 i:(Const32 ) z)) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Sub32 (Add32 x z) i) -(Sub16 x (Sub16 i:(Const16 ) z)) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Sub16 (Add16 x z) i) -(Sub8 x (Sub8 i:(Const8 ) z)) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Sub8 (Add8 x z) i) +(Sub64 x (Sub64 i:(Const64 ) z)) && (z.Op != OpConst64 && x.Op != OpConst64) => (Sub64 (Add64 x z) i) +(Sub32 x (Sub32 i:(Const32 ) z)) && (z.Op != OpConst32 && x.Op != OpConst32) => (Sub32 (Add32 x z) i) +(Sub16 x (Sub16 i:(Const16 ) z)) && (z.Op != OpConst16 && x.Op != OpConst16) => (Sub16 (Add16 x z) i) +(Sub8 x (Sub8 i:(Const8 ) z)) && (z.Op != OpConst8 && x.Op != OpConst8) => (Sub8 (Add8 x z) i) // x - (z - C) -> x + (C - z) -> (x - z) + C -(Sub64 x (Sub64 z i:(Const64 ))) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Add64 i (Sub64 x z)) -(Sub32 x (Sub32 z i:(Const32 ))) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Add32 i (Sub32 x z)) -(Sub16 x (Sub16 z i:(Const16 ))) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Add16 i (Sub16 x z)) -(Sub8 x (Sub8 z i:(Const8 ))) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Add8 i (Sub8 x z)) +(Sub64 x (Sub64 z i:(Const64 ))) && (z.Op != OpConst64 && x.Op != OpConst64) => (Add64 i (Sub64 x z)) +(Sub32 x (Sub32 z i:(Const32 ))) && (z.Op != OpConst32 && x.Op != OpConst32) => (Add32 i (Sub32 x z)) +(Sub16 x (Sub16 z i:(Const16 ))) && (z.Op != OpConst16 && x.Op != OpConst16) => (Add16 i (Sub16 x z)) +(Sub8 x (Sub8 z i:(Const8 ))) && (z.Op != OpConst8 && x.Op != OpConst8) => (Add8 i (Sub8 x z)) // x & (C & z) -> C & (x & z) -(And64 (And64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (And64 i (And64 z x)) -(And32 (And32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (And32 i (And32 z x)) -(And16 (And16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (And16 i (And16 z x)) -(And8 (And8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (And8 i (And8 z x)) +(And64 (And64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (And64 i (And64 z x)) +(And32 (And32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (And32 i (And32 z x)) +(And16 (And16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (And16 i (And16 z x)) +(And8 (And8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (And8 i (And8 z x)) // x | (C | z) -> C | (x | z) -(Or64 (Or64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Or64 i (Or64 z x)) -(Or32 (Or32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Or32 i (Or32 z x)) -(Or16 (Or16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Or16 i (Or16 z x)) -(Or8 (Or8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Or8 i (Or8 z x)) +(Or64 (Or64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (Or64 i (Or64 z x)) +(Or32 (Or32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (Or32 i (Or32 z x)) +(Or16 (Or16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (Or16 i (Or16 z x)) +(Or8 (Or8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (Or8 i (Or8 z x)) // x ^ (C ^ z) -> C ^ (x ^ z) -(Xor64 (Xor64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) -> (Xor64 i (Xor64 z x)) -(Xor32 (Xor32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) -> (Xor32 i (Xor32 z x)) -(Xor16 (Xor16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) -> (Xor16 i (Xor16 z x)) -(Xor8 (Xor8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) -> (Xor8 i (Xor8 z x)) +(Xor64 (Xor64 i:(Const64 ) z) x) && (z.Op != OpConst64 && x.Op != OpConst64) => (Xor64 i (Xor64 z x)) +(Xor32 (Xor32 i:(Const32 ) z) x) && (z.Op != OpConst32 && x.Op != OpConst32) => (Xor32 i (Xor32 z x)) +(Xor16 (Xor16 i:(Const16 ) z) x) && (z.Op != OpConst16 && x.Op != OpConst16) => (Xor16 i (Xor16 z x)) +(Xor8 (Xor8 i:(Const8 ) z) x) && (z.Op != OpConst8 && x.Op != OpConst8) => (Xor8 i (Xor8 z x)) // C + (D + x) -> (C + D) + x (Add64 (Const64 [c]) (Add64 (Const64 [d]) x)) -> (Add64 (Const64 [c+d]) x) -- 2.50.0