]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove some nacl SSA rules
authorBen Shi <powerman1st@163.com>
Mon, 14 Oct 2019 07:33:54 +0000 (07:33 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 15 Oct 2019 16:45:31 +0000 (16:45 +0000)
Updates golang/go#30439

Change-Id: I7ef5301fbd650d26a37a1241ddf7ca1ccd58b89d
Reviewed-on: https://go-review.googlesource.com/c/go/+/200941
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/amd64/ssa.go
src/cmd/compile/internal/ssa/gen/AMD64.rules
src/cmd/compile/internal/ssa/gen/AMD64Ops.go
src/cmd/compile/internal/ssa/gen/ARMOps.go
src/cmd/compile/internal/ssa/opGen.go
src/cmd/compile/internal/ssa/rewriteAMD64.go

index b52b9964074a6c9fd91ac32dbbc77ce9865d45cd..a82ed0995cd5cee98f6ad64daf627e72216de958 100644 (file)
@@ -947,13 +947,6 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) {
                p.To.Sym = gc.BoundsCheckFunc[v.AuxInt]
                s.UseArgs(int64(2 * gc.Widthptr)) // space used in callee args area by assembly stubs
 
-       case ssa.OpAMD64LoweredPanicExtendA, ssa.OpAMD64LoweredPanicExtendB, ssa.OpAMD64LoweredPanicExtendC:
-               p := s.Prog(obj.ACALL)
-               p.To.Type = obj.TYPE_MEM
-               p.To.Name = obj.NAME_EXTERN
-               p.To.Sym = gc.ExtendCheckFunc[v.AuxInt]
-               s.UseArgs(int64(3 * gc.Widthptr)) // space used in callee args area by assembly stubs
-
        case ssa.OpAMD64NEGQ, ssa.OpAMD64NEGL,
                ssa.OpAMD64BSWAPQ, ssa.OpAMD64BSWAPL,
                ssa.OpAMD64NOTQ, ssa.OpAMD64NOTL:
index 03ba064a69743806163cb49afb653097c3019d1c..8ef51f95659b64aaee5cd80c4a4bfb728a0c24f6 100644 (file)
 (PanicBounds [kind] x y mem) && boundsABI(kind) == 1 -> (LoweredPanicBoundsB [kind] x y mem)
 (PanicBounds [kind] x y mem) && boundsABI(kind) == 2 -> (LoweredPanicBoundsC [kind] x y mem)
 
-// For amd64p32
-(PanicExtend [kind] hi lo y mem) && boundsABI(kind) == 0 -> (LoweredPanicExtendA [kind] hi lo y mem)
-(PanicExtend [kind] hi lo y mem) && boundsABI(kind) == 1 -> (LoweredPanicExtendB [kind] hi lo y mem)
-(PanicExtend [kind] hi lo y mem) && boundsABI(kind) == 2 -> (LoweredPanicExtendC [kind] hi lo y mem)
-
 // ***************************
 // Above: lowering rules
 // Below: optimizations
index ed58db4d59eb9fb516313efb2d990026ed316a9d..3fa5cfbb963d9d5f6ee47842e06a5065f3bd51ab 100644 (file)
@@ -94,7 +94,6 @@ func init() {
                cx         = buildReg("CX")
                dx         = buildReg("DX")
                bx         = buildReg("BX")
-               si         = buildReg("SI")
                gp         = buildReg("AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15")
                fp         = buildReg("X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15")
                gpsp       = gp | buildReg("SP")
@@ -718,12 +717,6 @@ func init() {
                {name: "LoweredPanicBoundsB", argLength: 3, aux: "Int64", reg: regInfo{inputs: []regMask{cx, dx}}, typ: "Mem"}, // arg0=idx, arg1=len, arg2=mem, returns memory. AuxInt contains report code (see PanicBounds in generic.go).
                {name: "LoweredPanicBoundsC", argLength: 3, aux: "Int64", reg: regInfo{inputs: []regMask{ax, cx}}, typ: "Mem"}, // arg0=idx, arg1=len, arg2=mem, returns memory. AuxInt contains report code (see PanicBounds in generic.go).
 
-               // amd64p32 only: PanicBounds ops take 32-bit indexes.
-               // The Extend ops are the same as the Bounds ops except the indexes are 64-bit.
-               {name: "LoweredPanicExtendA", argLength: 4, aux: "Int64", reg: regInfo{inputs: []regMask{si, dx, bx}}, typ: "Mem"}, // arg0=idxHi, arg1=idxLo, arg2=len, arg3=mem, returns memory. AuxInt contains report code (see PanicExtend in genericOps.go).
-               {name: "LoweredPanicExtendB", argLength: 4, aux: "Int64", reg: regInfo{inputs: []regMask{si, cx, dx}}, typ: "Mem"}, // arg0=idxHi, arg1=idxLo, arg2=len, arg3=mem, returns memory. AuxInt contains report code (see PanicExtend in genericOps.go).
-               {name: "LoweredPanicExtendC", argLength: 4, aux: "Int64", reg: regInfo{inputs: []regMask{si, ax, cx}}, typ: "Mem"}, // arg0=idxHi, arg1=idxLo, arg2=len, arg3=mem, returns memory. AuxInt contains report code (see PanicExtend in genericOps.go).
-
                // Constant flag values. For any comparison, there are 5 possible
                // outcomes: the three from the signed total order (<,==,>) and the
                // three from the unsigned total order. The == cases overlap.
index 29838704869131fe098bae6f64d23f45dc0ff362..9795215c8ac06736986b55f008abffd0c4a37429 100644 (file)
@@ -154,7 +154,7 @@ func init() {
                        reg: regInfo{
                                inputs:   []regMask{buildReg("R1"), buildReg("R0")},
                                outputs:  []regMask{buildReg("R0"), buildReg("R1")},
-                               clobbers: buildReg("R2 R3 R14"), // also clobbers R12 on NaCl (modified in ../config.go)
+                               clobbers: buildReg("R2 R3 R14"),
                        },
                        clobberFlags: true,
                        typ:          "(UInt32,UInt32)",
index 6ac86bbb9e96f2fac84b2180f76de2d68ceda865..b7e65174f9aaf326c83ba1cc2e6a606afc9a8abc 100644 (file)
@@ -868,9 +868,6 @@ const (
        OpAMD64LoweredPanicBoundsA
        OpAMD64LoweredPanicBoundsB
        OpAMD64LoweredPanicBoundsC
-       OpAMD64LoweredPanicExtendA
-       OpAMD64LoweredPanicExtendB
-       OpAMD64LoweredPanicExtendC
        OpAMD64FlagEQ
        OpAMD64FlagLT_ULT
        OpAMD64FlagLT_UGT
@@ -11317,42 +11314,6 @@ var opcodeTable = [...]opInfo{
                        },
                },
        },
-       {
-               name:    "LoweredPanicExtendA",
-               auxType: auxInt64,
-               argLen:  4,
-               reg: regInfo{
-                       inputs: []inputInfo{
-                               {0, 64}, // SI
-                               {1, 4},  // DX
-                               {2, 8},  // BX
-                       },
-               },
-       },
-       {
-               name:    "LoweredPanicExtendB",
-               auxType: auxInt64,
-               argLen:  4,
-               reg: regInfo{
-                       inputs: []inputInfo{
-                               {0, 64}, // SI
-                               {1, 2},  // CX
-                               {2, 4},  // DX
-                       },
-               },
-       },
-       {
-               name:    "LoweredPanicExtendC",
-               auxType: auxInt64,
-               argLen:  4,
-               reg: regInfo{
-                       inputs: []inputInfo{
-                               {0, 64}, // SI
-                               {1, 1},  // AX
-                               {2, 2},  // CX
-                       },
-               },
-       },
        {
                name:   "FlagEQ",
                argLen: 0,
index 0d5763b1bf679b05aa2b6196f28905c1f94b97fc..386086f4b02b7b289a268735a9a360091a33aafc 100644 (file)
@@ -990,8 +990,6 @@ func rewriteValueAMD64(v *Value) bool {
                return rewriteValueAMD64_OpOrB_0(v)
        case OpPanicBounds:
                return rewriteValueAMD64_OpPanicBounds_0(v)
-       case OpPanicExtend:
-               return rewriteValueAMD64_OpPanicExtend_0(v)
        case OpPopCount16:
                return rewriteValueAMD64_OpPopCount16_0(v)
        case OpPopCount32:
@@ -55176,69 +55174,6 @@ func rewriteValueAMD64_OpPanicBounds_0(v *Value) bool {
        }
        return false
 }
-func rewriteValueAMD64_OpPanicExtend_0(v *Value) bool {
-       // match: (PanicExtend [kind] hi lo y mem)
-       // cond: boundsABI(kind) == 0
-       // result: (LoweredPanicExtendA [kind] hi lo y mem)
-       for {
-               kind := v.AuxInt
-               mem := v.Args[3]
-               hi := v.Args[0]
-               lo := v.Args[1]
-               y := v.Args[2]
-               if !(boundsABI(kind) == 0) {
-                       break
-               }
-               v.reset(OpAMD64LoweredPanicExtendA)
-               v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
-               return true
-       }
-       // match: (PanicExtend [kind] hi lo y mem)
-       // cond: boundsABI(kind) == 1
-       // result: (LoweredPanicExtendB [kind] hi lo y mem)
-       for {
-               kind := v.AuxInt
-               mem := v.Args[3]
-               hi := v.Args[0]
-               lo := v.Args[1]
-               y := v.Args[2]
-               if !(boundsABI(kind) == 1) {
-                       break
-               }
-               v.reset(OpAMD64LoweredPanicExtendB)
-               v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
-               return true
-       }
-       // match: (PanicExtend [kind] hi lo y mem)
-       // cond: boundsABI(kind) == 2
-       // result: (LoweredPanicExtendC [kind] hi lo y mem)
-       for {
-               kind := v.AuxInt
-               mem := v.Args[3]
-               hi := v.Args[0]
-               lo := v.Args[1]
-               y := v.Args[2]
-               if !(boundsABI(kind) == 2) {
-                       break
-               }
-               v.reset(OpAMD64LoweredPanicExtendC)
-               v.AuxInt = kind
-               v.AddArg(hi)
-               v.AddArg(lo)
-               v.AddArg(y)
-               v.AddArg(mem)
-               return true
-       }
-       return false
-}
 func rewriteValueAMD64_OpPopCount16_0(v *Value) bool {
        b := v.Block
        typ := &b.Func.Config.Types