mirror of
https://github.com/golang/go
synced 2024-11-18 16:54:43 -07:00
cmd/compile/internal/s390x: replace 4-byte NOP with a 2-byte NOP on s390x
Added a new instruction, NOPH, with the encoding [0x0700](i.e: bcr 0, 0) and replace the current 4-byte nop that was encoded using the WORD instruction. This reduces the size of .text section in go binary by around 17KB and make generated code easier to read. Change-Id: I6a756df39e93c4415ea6d038ba4af001b8ccb286 Reviewed-on: https://go-review.googlesource.com/c/go/+/194344 Reviewed-by: Michael Munday <mike.munday@ibm.com> Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
b25ec50b69
commit
11c2411c50
3
src/cmd/asm/internal/asm/testdata/s390x.s
vendored
3
src/cmd/asm/internal/asm/testdata/s390x.s
vendored
@ -329,6 +329,9 @@ TEXT main·foo(SB),DUPOK|NOSPLIT,$16-0 // TEXT main.foo(SB), DUPOK|NOSPLIT, $16-
|
||||
TCEB F5, $8 // ed5000080010
|
||||
TCDB F15, $4095 // edf00fff0011
|
||||
|
||||
UNDEF // 00000000
|
||||
NOPH // 0700
|
||||
|
||||
VL (R15), V1 // e710f0000006
|
||||
VST V1, (R15) // e710f000000e
|
||||
VL (R15), V31 // e7f0f0000806
|
||||
|
@ -105,8 +105,5 @@ func zeroAuto(pp *gc.Progs, n *gc.Node) {
|
||||
}
|
||||
|
||||
func ginsnop(pp *gc.Progs) *obj.Prog {
|
||||
p := pp.Prog(s390x.AWORD)
|
||||
p.From.Type = obj.TYPE_CONST
|
||||
p.From.Offset = 0x47000000 // nop 0
|
||||
return p
|
||||
return pp.Prog(s390x.ANOPH)
|
||||
}
|
||||
|
@ -966,6 +966,8 @@ const (
|
||||
AVMSLOG
|
||||
AVMSLEOG
|
||||
|
||||
ANOPH // NOP
|
||||
|
||||
// binary
|
||||
ABYTE
|
||||
AWORD
|
||||
|
@ -696,6 +696,7 @@ var Anames = []string{
|
||||
"VMSLEG",
|
||||
"VMSLOG",
|
||||
"VMSLEOG",
|
||||
"NOPH",
|
||||
"BYTE",
|
||||
"WORD",
|
||||
"DWORD",
|
||||
|
@ -314,6 +314,9 @@ var optab = []Optab{
|
||||
// undefined (deliberate illegal instruction)
|
||||
{i: 78, as: obj.AUNDEF},
|
||||
|
||||
// 2 byte no-operation
|
||||
{i: 66, as: ANOPH},
|
||||
|
||||
// vector instructions
|
||||
|
||||
// VRX store
|
||||
@ -3394,6 +3397,9 @@ func (c *ctxtz) asmout(p *obj.Prog, asm *[]byte) {
|
||||
d2 := c.regoff(&p.To)
|
||||
zRXE(opcode, uint32(p.From.Reg), 0, 0, uint32(d2), 0, asm)
|
||||
|
||||
case 66:
|
||||
zRR(op_BCR, 0, 0, asm)
|
||||
|
||||
case 67: // fmov $0 freg
|
||||
var opcode uint32
|
||||
switch p.As {
|
||||
|
Loading…
Reference in New Issue
Block a user