mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/asm: refactor some operands that are not special registers on arm64
The previous code treats some operands such as EQ, LT, etc. as special registers. However, they are not. This CL adds a new AddrType TYPE_SPOPD and a new class C_SPOPD to support this kind of special operands, and refactors the relevant code. This patch is a copy of CL 260861, contributed by Junchen Li(junchen.li@arm.com). Co-authored-by: Junchen Li(junchen.li@arm.com) Change-Id: I57b28da458ee3332f610602632e7eda03af435f5 Reviewed-on: https://go-review.googlesource.com/c/go/+/302849 Reviewed-by: Cherry Mui <cherryyz@google.com> Trust: Eric Fang <eric.fang@arm.com> Run-TryBot: Eric Fang <eric.fang@arm.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
bb2b16d15e
commit
f5290ef947
14 changed files with 330 additions and 219 deletions
|
|
@ -94,6 +94,12 @@ import (
|
|||
// type = TYPE_SCONST
|
||||
// val = string
|
||||
//
|
||||
// <symbolic constant name>
|
||||
// Special symbolic constants for ARM64, such as conditional flags, tlbi_op and so on.
|
||||
// Encoding:
|
||||
// type = TYPE_SPECIAL
|
||||
// offset = The constant value corresponding to this symbol
|
||||
//
|
||||
// <register name>
|
||||
// Any register: integer, floating point, control, segment, and so on.
|
||||
// If looking for specific register kind, must check type and reg value range.
|
||||
|
|
@ -236,6 +242,7 @@ const (
|
|||
TYPE_REGREG2
|
||||
TYPE_INDIR
|
||||
TYPE_REGLIST
|
||||
TYPE_SPECIAL
|
||||
)
|
||||
|
||||
func (a *Addr) Target() *Prog {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue