Skip to content

Commit b9a4a09

Browse files
committed
runtime: remove duff support for riscv64
Change-Id: I987d9f49fbd2650eef4224f72271bf752c54d39c Reviewed-on: https://go-review.googlesource.com/c/go/+/700538 Reviewed-by: Mark Freeman <[email protected]> Reviewed-by: Keith Randall <[email protected]> Reviewed-by: Keith Randall <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Mark Ryan <[email protected]>
1 parent 4dac9e0 commit b9a4a09

File tree

6 files changed

+3
-1056
lines changed

6 files changed

+3
-1056
lines changed

src/cmd/compile/internal/riscv64/ssa.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -949,20 +949,6 @@ func ssaGenValue(s *ssagen.State, v *ssa.Value) {
949949
p.To.Type = obj.TYPE_REG
950950
p.To.Reg = v.Reg()
951951

952-
case ssa.OpRISCV64DUFFZERO:
953-
p := s.Prog(obj.ADUFFZERO)
954-
p.To.Type = obj.TYPE_MEM
955-
p.To.Name = obj.NAME_EXTERN
956-
p.To.Sym = ir.Syms.Duffzero
957-
p.To.Offset = v.AuxInt
958-
959-
case ssa.OpRISCV64DUFFCOPY:
960-
p := s.Prog(obj.ADUFFCOPY)
961-
p.To.Type = obj.TYPE_MEM
962-
p.To.Name = obj.NAME_EXTERN
963-
p.To.Sym = ir.Syms.Duffcopy
964-
p.To.Offset = v.AuxInt
965-
966952
case ssa.OpRISCV64LoweredPubBarrier:
967953
// FENCE
968954
s.Prog(v.Op.Asm())

src/cmd/compile/internal/ssa/_gen/RISCV64Ops.go

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -278,44 +278,6 @@ func init() {
278278
{name: "CALLclosure", argLength: -1, reg: callClosure, aux: "CallOff", call: true}, // call function via closure. arg0=codeptr, arg1=closure, last arg=mem, auxint=argsize, returns mem
279279
{name: "CALLinter", argLength: -1, reg: callInter, aux: "CallOff", call: true}, // call fn by pointer. arg0=codeptr, last arg=mem, auxint=argsize, returns mem
280280

281-
// duffzero
282-
// arg0 = address of memory to zero (in X25, changed as side effect)
283-
// arg1 = mem
284-
// auxint = offset into duffzero code to start executing
285-
// X1 (link register) changed because of function call
286-
// returns mem
287-
{
288-
name: "DUFFZERO",
289-
aux: "Int64",
290-
argLength: 2,
291-
reg: regInfo{
292-
inputs: []regMask{regNamed["X25"]},
293-
clobbers: regNamed["X1"] | regNamed["X25"],
294-
},
295-
typ: "Mem",
296-
faultOnNilArg0: true,
297-
},
298-
299-
// duffcopy
300-
// arg0 = address of dst memory (in X25, changed as side effect)
301-
// arg1 = address of src memory (in X24, changed as side effect)
302-
// arg2 = mem
303-
// auxint = offset into duffcopy code to start executing
304-
// X1 (link register) changed because of function call
305-
// returns mem
306-
{
307-
name: "DUFFCOPY",
308-
aux: "Int64",
309-
argLength: 3,
310-
reg: regInfo{
311-
inputs: []regMask{regNamed["X25"], regNamed["X24"]},
312-
clobbers: regNamed["X1"] | regNamed["X24"] | regNamed["X25"],
313-
},
314-
typ: "Mem",
315-
faultOnNilArg0: true,
316-
faultOnNilArg1: true,
317-
},
318-
319281
// Generic moves and zeros
320282

321283
// general unrolled zeroing

src/cmd/compile/internal/ssa/opGen.go

Lines changed: 0 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/internal/obj/riscv/obj.go

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func buildop(ctxt *obj.Link) {}
3737

3838
func jalToSym(ctxt *obj.Link, p *obj.Prog, lr int16) {
3939
switch p.As {
40-
case obj.ACALL, obj.AJMP, obj.ARET, obj.ADUFFZERO, obj.ADUFFCOPY:
40+
case obj.ACALL, obj.AJMP, obj.ARET:
4141
default:
4242
ctxt.Diag("unexpected Prog in jalToSym: %v", p)
4343
return
@@ -162,42 +162,6 @@ func progedit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) {
162162

163163
// Rewrite p, if necessary, to access global data via the global offset table.
164164
func rewriteToUseGot(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc) {
165-
if p.As == obj.ADUFFCOPY || p.As == obj.ADUFFZERO {
166-
// ADUFFxxx $offset
167-
// becomes
168-
// MOV runtime.duffxxx@GOT, REG_TMP
169-
// ADD $offset, REG_TMP
170-
// CALL REG_TMP
171-
var sym *obj.LSym
172-
if p.As == obj.ADUFFCOPY {
173-
sym = ctxt.LookupABI("runtime.duffcopy", obj.ABIInternal)
174-
} else {
175-
sym = ctxt.LookupABI("runtime.duffzero", obj.ABIInternal)
176-
}
177-
offset := p.To.Offset
178-
p.As = AMOV
179-
p.From.Type = obj.TYPE_MEM
180-
p.From.Name = obj.NAME_GOTREF
181-
p.From.Sym = sym
182-
p.To.Type = obj.TYPE_REG
183-
p.To.Reg = REG_TMP
184-
p.To.Name = obj.NAME_NONE
185-
p.To.Offset = 0
186-
p.To.Sym = nil
187-
188-
p1 := obj.Appendp(p, newprog)
189-
p1.As = AADD
190-
p1.From.Type = obj.TYPE_CONST
191-
p1.From.Offset = offset
192-
p1.To.Type = obj.TYPE_REG
193-
p1.To.Reg = REG_TMP
194-
195-
p2 := obj.Appendp(p1, newprog)
196-
p2.As = obj.ACALL
197-
p2.To.Type = obj.TYPE_REG
198-
p2.To.Reg = REG_TMP
199-
}
200-
201165
// We only care about global data: NAME_EXTERN means a global
202166
// symbol in the Go sense and p.Sym.Local is true for a few internally
203167
// defined symbols.
@@ -407,7 +371,7 @@ func containsCall(sym *obj.LSym) bool {
407371
// CALLs are CALL or JAL(R) with link register LR.
408372
for p := sym.Func().Text; p != nil; p = p.Link {
409373
switch p.As {
410-
case obj.ACALL, obj.ADUFFZERO, obj.ADUFFCOPY:
374+
case obj.ACALL:
411375
return true
412376
case AJAL, AJALR:
413377
if p.From.Type == obj.TYPE_REG && p.From.Reg == REG_LR {
@@ -586,7 +550,7 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
586550
p.From.Reg = REG_SP
587551
}
588552

589-
case obj.ACALL, obj.ADUFFZERO, obj.ADUFFCOPY:
553+
case obj.ACALL:
590554
switch p.To.Type {
591555
case obj.TYPE_MEM:
592556
jalToSym(ctxt, p, REG_LR)
@@ -2634,8 +2598,6 @@ var instructions = [ALAST & obj.AMask]instructionData{
26342598
obj.APCDATA: {enc: pseudoOpEncoding},
26352599
obj.ATEXT: {enc: pseudoOpEncoding},
26362600
obj.ANOP: {enc: pseudoOpEncoding},
2637-
obj.ADUFFZERO: {enc: pseudoOpEncoding},
2638-
obj.ADUFFCOPY: {enc: pseudoOpEncoding},
26392601
obj.APCALIGN: {enc: pseudoOpEncoding},
26402602
}
26412603

0 commit comments

Comments
 (0)