]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: simplify Neg lowering on s390x
authorMichael Munday <mike.munday@ibm.com>
Tue, 27 Mar 2018 10:52:56 +0000 (11:52 +0100)
committerMichael Munday <mike.munday@ibm.com>
Tue, 27 Mar 2018 19:03:42 +0000 (19:03 +0000)
No need to sign extend input to Neg8 and Neg16.

Change-Id: I7896c83c9cdf84a34098582351a4aabf61cd6fdd
Reviewed-on: https://go-review.googlesource.com/102675
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/ssa/gen/S390X.rules
src/cmd/compile/internal/ssa/rewriteS390X.go

index 280e85004cc85b23145b5d28fb646c3cfecc231a..6eba1e026419e7ff1e71e048a5e169e055c0d2d1 100644 (file)
 (Xor64 x y) -> (XOR x y)
 (Xor(32|16|8) x y) -> (XORW x y)
 
-(Neg64  x) -> (NEG x)
-(Neg32  x) -> (NEGW x)
-(Neg16  x) -> (NEGW (MOVHreg x))
-(Neg8   x) -> (NEGW (MOVBreg x))
+(Neg64 x) -> (NEG x)
+(Neg(32|16|8) x) -> (NEGW x)
 (Neg32F x) -> (FNEGS x)
 (Neg64F x) -> (FNEG x)
 
index 480512aaaacda079453c4ff8a47e746d66527533..d3e15ac037ac1c1d41331e60f719a34f434da48e 100644 (file)
@@ -4564,19 +4564,13 @@ func rewriteValueS390X_OpMul8_0(v *Value) bool {
        }
 }
 func rewriteValueS390X_OpNeg16_0(v *Value) bool {
-       b := v.Block
-       _ = b
-       typ := &b.Func.Config.Types
-       _ = typ
        // match: (Neg16 x)
        // cond:
-       // result: (NEGW (MOVHreg x))
+       // result: (NEGW x)
        for {
                x := v.Args[0]
                v.reset(OpS390XNEGW)
-               v0 := b.NewValue0(v.Pos, OpS390XMOVHreg, typ.Int64)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v.AddArg(x)
                return true
        }
 }
@@ -4625,19 +4619,13 @@ func rewriteValueS390X_OpNeg64F_0(v *Value) bool {
        }
 }
 func rewriteValueS390X_OpNeg8_0(v *Value) bool {
-       b := v.Block
-       _ = b
-       typ := &b.Func.Config.Types
-       _ = typ
        // match: (Neg8 x)
        // cond:
-       // result: (NEGW (MOVBreg x))
+       // result: (NEGW x)
        for {
                x := v.Args[0]
                v.reset(OpS390XNEGW)
-               v0 := b.NewValue0(v.Pos, OpS390XMOVBreg, typ.Int64)
-               v0.AddArg(x)
-               v.AddArg(v0)
+               v.AddArg(x)
                return true
        }
 }