From: Jake Ciolek Date: Sat, 9 Oct 2021 15:57:06 +0000 (+0200) Subject: cmd/compile: mark NOT as an op that doesn't clobber flags on i386/AMD64 X-Git-Tag: go1.18beta1~961 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ba2c9fef035da3ef93e0eb0dbf4d583663829139;p=gostls13.git cmd/compile: mark NOT as an op that doesn't clobber flags on i386/AMD64 NOT does not affect any FLAGS register values on i386/AMD64 so we do not need to mark it as an Op that clobbers them. Change-Id: I6d99cad49cfa2568b01e58190256582b18fb3b7b Reviewed-on: https://go-review.googlesource.com/c/go/+/354831 Reviewed-by: Keith Randall Run-TryBot: Keith Randall TryBot-Result: Go Bot Trust: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/ssa/gen/386Ops.go b/src/cmd/compile/internal/ssa/gen/386Ops.go index 3512d60865..a6da7a5fce 100644 --- a/src/cmd/compile/internal/ssa/gen/386Ops.go +++ b/src/cmd/compile/internal/ssa/gen/386Ops.go @@ -298,7 +298,7 @@ func init() { // unary ops {name: "NEGL", argLength: 1, reg: gp11, asm: "NEGL", resultInArg0: true, clobberFlags: true}, // -arg0 - {name: "NOTL", argLength: 1, reg: gp11, asm: "NOTL", resultInArg0: true, clobberFlags: true}, // ^arg0 + {name: "NOTL", argLength: 1, reg: gp11, asm: "NOTL", resultInArg0: true}, // ^arg0 {name: "BSFL", argLength: 1, reg: gp11, asm: "BSFL", clobberFlags: true}, // arg0 # of low-order zeroes ; undef if zero {name: "BSFW", argLength: 1, reg: gp11, asm: "BSFW", clobberFlags: true}, // arg0 # of low-order zeroes ; undef if zero diff --git a/src/cmd/compile/internal/ssa/gen/AMD64Ops.go b/src/cmd/compile/internal/ssa/gen/AMD64Ops.go index 1887772736..731454c761 100644 --- a/src/cmd/compile/internal/ssa/gen/AMD64Ops.go +++ b/src/cmd/compile/internal/ssa/gen/AMD64Ops.go @@ -513,8 +513,8 @@ func init() { {name: "NEGQ", argLength: 1, reg: gp11, asm: "NEGQ", resultInArg0: true, clobberFlags: true}, // -arg0 {name: "NEGL", argLength: 1, reg: gp11, asm: "NEGL", resultInArg0: true, clobberFlags: true}, // -arg0 - {name: "NOTQ", argLength: 1, reg: gp11, asm: "NOTQ", resultInArg0: true, clobberFlags: true}, // ^arg0 - {name: "NOTL", argLength: 1, reg: gp11, asm: "NOTL", resultInArg0: true, clobberFlags: true}, // ^arg0 + {name: "NOTQ", argLength: 1, reg: gp11, asm: "NOTQ", resultInArg0: true}, // ^arg0 + {name: "NOTL", argLength: 1, reg: gp11, asm: "NOTL", resultInArg0: true}, // ^arg0 // BS{F,R}Q returns a tuple [result, flags] // result is undefined if the input is zero. diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 09006c8c85..640e517fe7 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -4733,7 +4733,6 @@ var opcodeTable = [...]opInfo{ name: "NOTL", argLen: 1, resultInArg0: true, - clobberFlags: true, asm: x86.ANOTL, reg: regInfo{ inputs: []inputInfo{ @@ -10777,7 +10776,6 @@ var opcodeTable = [...]opInfo{ name: "NOTQ", argLen: 1, resultInArg0: true, - clobberFlags: true, asm: x86.ANOTQ, reg: regInfo{ inputs: []inputInfo{ @@ -10792,7 +10790,6 @@ var opcodeTable = [...]opInfo{ name: "NOTL", argLen: 1, resultInArg0: true, - clobberFlags: true, asm: x86.ANOTL, reg: regInfo{ inputs: []inputInfo{