Imports #
"cmd/internal/obj"
"cmd/internal/obj"
"cmd/internal/obj"
"cmd/internal/objabi"
"fmt"
"log"
"slices"
"cmd/internal/obj"
"fmt"
"cmd/internal/obj"
"cmd/internal/objabi"
"cmd/internal/src"
"cmd/internal/sys"
"internal/abi"
"log"
"math"
"cmd/internal/obj"
"cmd/internal/obj"
"cmd/internal/obj"
"cmd/internal/objabi"
"fmt"
"log"
"slices"
"cmd/internal/obj"
"fmt"
"cmd/internal/obj"
"cmd/internal/objabi"
"cmd/internal/src"
"cmd/internal/sys"
"internal/abi"
"log"
"math"
const AABSD = *ast.BinaryExpr
const AABSF
const AADD
const AADDD
const AADDF
const AADDU
const AADDV
const AADDVU
const AADDW
const AAMADDDBV
const AAMADDDBW
const AAMADDV
const AAMADDW
const AAMANDDBV
const AAMANDDBW
const AAMANDV
const AAMANDW
const AAMCASB
const AAMCASDBB
const AAMCASDBH
const AAMCASDBV
const AAMCASDBW
const AAMCASH
const AAMCASV
const AAMCASW
const AAMMAXDBV
const AAMMAXDBVU
const AAMMAXDBW
const AAMMAXDBWU
const AAMMAXV
const AAMMAXVU
const AAMMAXW
const AAMMAXWU
const AAMMINDBV
const AAMMINDBVU
const AAMMINDBW
const AAMMINDBWU
const AAMMINV
const AAMMINVU
const AAMMINW
const AAMMINWU
const AAMORDBV
const AAMORDBW
const AAMORV
const AAMORW
2.2.7. Atomic Memory Access Instructions
const AAMSWAPB
const AAMSWAPDBB
const AAMSWAPDBH
const AAMSWAPDBV
const AAMSWAPDBW
const AAMSWAPH
const AAMSWAPV
const AAMSWAPW
const AAMXORDBV
const AAMXORDBW
const AAMXORV
const AAMXORW
const AAND
const AANDN
const ABEQ
const ABFPF
const ABFPT
const ABGE
const ABGEU
const ABGEZ
const ABGTZ
2.2.3.6
const ABITREV4B
const ABITREV8B
const ABITREVV
2.2.3.7
const ABITREVW
const ABLEZ
const ABLT
const ABLTU
const ABLTZ
const ABNE
const ABREAK
const ABSTRINSV
2.2.3.8
const ABSTRINSW
const ABSTRPICKV
2.2.3.9
const ABSTRPICKW
const ACLOV
2.2.3.2
const ACLOW
const ACLZV
const ACLZW
const ACMPEQD
const ACMPEQF
const ACMPGED
const ACMPGEF
const ACMPGTD
const ACMPGTF
const ACPUCFG
const ACRCCWBW
const ACRCCWHW
const ACRCCWVW
const ACRCCWWW
2.2.9. CRC Check Instructions
const ACRCWBW
const ACRCWHW
const ACRCWVW
const ACRCWWW
const ACTOV
const ACTOW
const ACTZV
const ACTZW
const ADBAR
const ADIV
const ADIVD
const ADIVF
const ADIVU
const ADIVV
const ADIVVU
const ADIVW
2.2.3.1
const AEXTWB
const AEXTWH
const AFCLASSD
3.2.1.8
const AFCLASSF
const AFCOPYSGD
3.2.1.7
const AFCOPYSGF
const AFFINTDV
const AFFINTDW
const AFFINTFV
3.2.3.2
const AFFINTFW
const AFLOGBD
const AFLOGBF
const AFMADDD
3.2.1.2
const AFMADDF
const AFMAXD
const AFMAXF
const AFMIND
3.2.1.3
const AFMINF
const AFMSUBD
const AFMSUBF
const AFNMADDD
const AFNMADDF
const AFNMSUBD
const AFNMSUBF
const AFSCALEBD
const AFSCALEBF
const AFTINTRMVD
const AFTINTRMVF
const AFTINTRMWD
const AFTINTRMWF
const AFTINTRNEVD
const AFTINTRNEVF
const AFTINTRNEWD
const AFTINTRNEWF
const AFTINTRPVD
const AFTINTRPVF
const AFTINTRPWD
3.2.3.3
const AFTINTRPWF
const AFTINTRZVD
const AFTINTRZVF
const AFTINTRZWD
const AFTINTRZWF
const AFTINTVD
const AFTINTVF
const AFTINTWD
const AFTINTWF
const AJAL = obj.ACALL
const AJIRL
aliases
const AJMP = obj.AJMP
const ALAST
const ALL
const ALLV
const ALU12IW
const ALU32ID
const ALU52ID
const ALUI
const AMASKEQZ
const AMASKNEZ
const AMOVB
const AMOVBU
const AMOVD
const AMOVDF
const AMOVDV
const AMOVDW
const AMOVF
const AMOVFD
const AMOVFV
const AMOVFW
const AMOVH
const AMOVHU
64-bit
const AMOVV
const AMOVVD
const AMOVVF
const AMOVW
const AMOVWD
const AMOVWF
const AMOVWU
const AMUL
const AMULD
const AMULF
const AMULH
const AMULHU
const AMULHV
const AMULHVU
const AMULU
const AMULV
const AMULVU
const AMULW
const ANEGD
const ANEGF
const ANEGV
const ANEGW
const ANOOP
const ANOR
const AOR
2.2.1.8
const AORN
const APCADDU12I
const APCALAU12I
const ARDTIMED
const ARDTIMEHW
2.2.10. Other Miscellaneous Instructions
const ARDTIMELW
const AREM
const AREMU
const AREMV
const AREMVU
const ARET = obj.ARET
const AREVB2H
const AREVB2W
const AREVB4H
2.2.3.4
const AREVBV
2.2.3.5
const AREVH2W
const AREVHV
const ARFE
Arrangement for Loong64 SIMD instructions
const ARNG_16B
Arrangement for Loong64 SIMD instructions
const ARNG_16H
Arrangement for Loong64 SIMD instructions
const ARNG_2Q
Arrangement for Loong64 SIMD instructions
const ARNG_2V
arrangement types
const ARNG_32B int16 = iota
Arrangement for Loong64 SIMD instructions
const ARNG_4V
Arrangement for Loong64 SIMD instructions
const ARNG_4W
Arrangement for Loong64 SIMD instructions
const ARNG_8H
Arrangement for Loong64 SIMD instructions
const ARNG_8W
Arrangement for Loong64 SIMD instructions
const ARNG_B
Arrangement for Loong64 SIMD instructions
const ARNG_BU
Arrangement for Loong64 SIMD instructions
const ARNG_H
Arrangement for Loong64 SIMD instructions
const ARNG_HU
Arrangement for Loong64 SIMD instructions
const ARNG_V
Arrangement for Loong64 SIMD instructions
const ARNG_VU
Arrangement for Loong64 SIMD instructions
const ARNG_W
Arrangement for Loong64 SIMD instructions
const ARNG_WU
const AROTR
const AROTRV
const ASC
const ASCV
const ASGT
const ASGTU
const ASLL
const ASLLV
const ASQRTD
const ASQRTF
const ASRA
const ASRAV
const ASRL
const ASRLV
const ASUB
const ASUBD
const ASUBF
const ASUBU
const ASUBV
const ASUBVU
const ASUBW
const ASYSCALL
const ATEQ
const ATNE
const ATRUNCDV
const ATRUNCDW
64-bit FP
const ATRUNCFV
const ATRUNCFW
LSX and LASX memory access instructions
const AVMOVQ
LSX and LASX Bit-manipulation Instructions
const AVPCNTB
const AVPCNTH
const AVPCNTV
const AVPCNTW
LSX and LASX integer comparison instruction
const AVSEQB
const AVSEQH
const AVSEQV
const AVSEQW
const AWORD
const AXOR
const AXVMOVQ
const AXVPCNTB
const AXVPCNTH
const AXVPCNTV
const AXVPCNTW
const AXVSEQB
const AXVSEQH
const AXVSEQV
const AXVSEQW
var Anames = []string{...}
const BIG = 2046
const BRANCH = *ast.BinaryExpr
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ADD0CON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ADDCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ADDR
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_AND0CON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ANDCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ARNG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_BRAN
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_DACON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_DCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ELEM
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_EXTADDR
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_FCCREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_FCSRREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_FREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_GOK
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_GOTADDR
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_LACON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_LAUTO
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_LCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_LOREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_NCLASS
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_NONE = iota
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_REG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ROFF
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_SACON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_SAUTO
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_SCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_SOREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_TEXTSIZE
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_TLS_IE
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_TLS_LE
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_UCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_VREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_XREG
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ZCON
go:generate go run ../mkcnames.go -i a.out.go -o cnames.go -p loong64
const C_ZOREG
const EXT_REG_MASK = 0x1f
const EXT_REG_SHIFT = 0
const EXT_SIMDTYPE_MASK = 0x1
const EXT_SIMDTYPE_SHIFT = 10
const EXT_TYPE_MASK = 0x1f
const EXT_TYPE_SHIFT = 5
const FREGRET = REG_F0
const FuncAlign = 4
mark flags
const LABEL = *ast.BinaryExpr
LoongArch64 SIMD extension type
const LASX
const LEAF = *ast.BinaryExpr
var LOONG64DWARFRegisters = map[int16]int16{...}
LoongArch64 SIMD extension type
const LSX int16 = iota
var Linkloong64 = obj.LinkArch{...}
const NFREG = 32
const NOTUSETMP = *ast.BinaryExpr
const NREG = 32
const NSNAME = 8
const NSYM = 50
const NVREG = 32
const NXREG = 32
const REGARG = *ast.UnaryExpr
const REGCTXT = REG_R29
const REGG = REG_R22
const REGLINK = REG_R1
const REGRET = REG_R20
const REGRT1 = REG_R20
const REGRT2 = REG_R21
const REGSP = REG_R3
const REGTMP = REG_R30
const REGZERO = REG_R0
bits 0-4 indicates register: Vn or Xn
bits 5-9 indicates arrangement:
const REG_ARNG = *ast.BinaryExpr
bits 0-4 indicates register: Vn or Xn
bits 5-9 indicates arrangement:
const REG_ELEM
bits 0-4 indicates register: Vn or Xn
bits 5-9 indicates arrangement:
const REG_ELEM_END
const REG_F0
const REG_F1
const REG_F10
const REG_F11
const REG_F12
const REG_F13
const REG_F14
const REG_F15
const REG_F16
const REG_F17
const REG_F18
const REG_F19
const REG_F2
const REG_F20
const REG_F21
const REG_F22
const REG_F23
const REG_F24
const REG_F25
const REG_F26
const REG_F27
const REG_F28
const REG_F29
const REG_F3
const REG_F30
const REG_F31
const REG_F4
const REG_F5
const REG_F6
const REG_F7
const REG_F8
const REG_F9
const REG_FCC0
const REG_FCC1
const REG_FCC10
const REG_FCC11
const REG_FCC12
const REG_FCC13
const REG_FCC14
const REG_FCC15
const REG_FCC16
const REG_FCC17
const REG_FCC18
const REG_FCC19
const REG_FCC2
const REG_FCC20
const REG_FCC21
const REG_FCC22
const REG_FCC23
const REG_FCC24
const REG_FCC25
const REG_FCC26
const REG_FCC27
const REG_FCC28
const REG_FCC29
const REG_FCC3
const REG_FCC30
const REG_FCC31
const REG_FCC4
const REG_FCC5
const REG_FCC6
const REG_FCC7
const REG_FCC8
const REG_FCC9
const REG_FCSR0
const REG_FCSR1
const REG_FCSR10
const REG_FCSR11
const REG_FCSR12
const REG_FCSR13
const REG_FCSR14
const REG_FCSR15
const REG_FCSR16
const REG_FCSR17
const REG_FCSR18
const REG_FCSR19
const REG_FCSR2
const REG_FCSR20
const REG_FCSR21
const REG_FCSR22
const REG_FCSR23
const REG_FCSR24
const REG_FCSR25
const REG_FCSR26
const REG_FCSR27
const REG_FCSR28
const REG_FCSR29
const REG_FCSR3
const REG_FCSR30
const REG_FCSR31
const REG_FCSR4
const REG_FCSR5
const REG_FCSR6
const REG_FCSR7
const REG_FCSR8
const REG_FCSR9
const REG_LAST = REG_ELEM_END
const REG_R0 = *ast.BinaryExpr
const REG_R1
const REG_R10
const REG_R11
const REG_R12
const REG_R13
const REG_R14
const REG_R15
const REG_R16
const REG_R17
const REG_R18
const REG_R19
const REG_R2
const REG_R20
const REG_R21
const REG_R22
const REG_R23
const REG_R24
const REG_R25
const REG_R26
const REG_R27
const REG_R28
const REG_R29
const REG_R3
const REG_R30
const REG_R31
const REG_R4
const REG_R5
const REG_R6
const REG_R7
const REG_R8
const REG_R9
const REG_SPECIAL = REG_FCSR0
LSX: 128-bit vector register
const REG_V0
const REG_V1
const REG_V10
const REG_V11
const REG_V12
const REG_V13
const REG_V14
const REG_V15
const REG_V16
const REG_V17
const REG_V18
const REG_V19
const REG_V2
const REG_V20
const REG_V21
const REG_V22
const REG_V23
const REG_V24
const REG_V25
const REG_V26
const REG_V27
const REG_V28
const REG_V29
const REG_V3
const REG_V30
const REG_V31
const REG_V4
const REG_V5
const REG_V6
const REG_V7
const REG_V8
const REG_V9
LASX: 256-bit vector register
const REG_X0
const REG_X1
const REG_X10
const REG_X11
const REG_X12
const REG_X13
const REG_X14
const REG_X15
const REG_X16
const REG_X17
const REG_X18
const REG_X19
const REG_X2
const REG_X20
const REG_X21
const REG_X22
const REG_X23
const REG_X24
const REG_X25
const REG_X26
const REG_X27
const REG_X28
const REG_X29
const REG_X3
const REG_X30
const REG_X31
const REG_X4
const REG_X5
const REG_X6
const REG_X7
const REG_X8
const REG_X9
const SYNC = *ast.BinaryExpr
var atomicInst = map[obj.As]uint32{...}
branchLoopHead marks loop entry. Used to insert padding for under-aligned loops.
const branchLoopHead
This order should be strictly consistent to that in a.out.go.
var cnames0 = []string{...}
const loopAlign = 16
var oprange [*ast.BinaryExpr][]Optab
var optab = []Optab{...}
var xcmp [C_NCLASS][C_NCLASS]bool
type Optab struct {
as obj.As
from1 uint8
reg uint8
from3 uint8
to1 uint8
to2 uint8
type_ int8
size int8
param int16
flag uint8
}
ctxt0 holds state while assembling a single function. Each function gets a fresh ctxt0. This allows for multiple functions to be safely concurrently assembled.
type ctxt0 struct {
ctxt *obj.Link
newprog obj.ProgAlloc
cursym *obj.LSym
autosize int32
instoffset int64
pc int64
}
func DRconv(a int) string
func IsAtomicInst(as obj.As) bool
func OP_12IRR(op uint32, i uint32, r2 uint32, r3 uint32) uint32
func OP_15I(op uint32, i uint32) uint32
func OP_16IRR(op uint32, i uint32, r2 uint32, r3 uint32) uint32
func OP_16IR_5I(op uint32, i uint32, r2 uint32) uint32
Encoding for the 'b' or 'bl' instruction.
func OP_B_BL(op uint32, i uint32) uint32
func OP_IR(op uint32, i uint32, r2 uint32) uint32
i1 -> msb r2 -> rj i3 -> lsb r4 -> rd
func OP_IRIR(op uint32, i1 uint32, r2 uint32, i3 uint32, r4 uint32) uint32
r2 -> rj r3 -> rd
func OP_RR(op uint32, r2 uint32, r3 uint32) uint32
r1 -> rk r2 -> rj r3 -> rd
func OP_RRR(op uint32, r1 uint32, r2 uint32, r3 uint32) uint32
func OP_RRRR(op uint32, r1 uint32, r2 uint32, r3 uint32, r4 uint32) uint32
func (c *ctxt0) aclass(a *obj.Addr) int
func (c *ctxt0) addnop(p *obj.Prog)
func arrange(a int16) string
func (c *ctxt0) asmout(p *obj.Prog, o *Optab, out []uint32)
func buildop(ctxt *obj.Link)
checkindex checks if index >= 0 && index <= maxindex
func (c *ctxt0) checkindex(p *obj.Prog, index uint32, mask uint32)
func cmp(a int, b int) bool
func init()
func init()
func init()
isRestartable returns whether p is a multi-instruction sequence that, if preempted, can be restarted.
func (c *ctxt0) isRestartable(p *obj.Prog) bool
isUnsafePoint returns whether p is an unsafe point.
func (c *ctxt0) isUnsafePoint(p *obj.Prog) bool
func isint32(v int64) bool
func isuint32(v uint64) bool
func oclass(a *obj.Addr) int
func ocmp(p1 Optab, p2 Optab) int
func (c *ctxt0) opi(a obj.As) uint32
func (c *ctxt0) opir(a obj.As) uint32
func (c *ctxt0) opirir(a obj.As) uint32
func (c *ctxt0) opirr(a obj.As) uint32
func (c *ctxt0) oplook(p *obj.Prog) *Optab
func (c *ctxt0) oprr(a obj.As) uint32
func (c *ctxt0) oprrr(a obj.As) uint32
func (c *ctxt0) oprrrr(a obj.As) uint32
func opset(a obj.As, b0 obj.As)
pcAlignPadLength returns the number of bytes required to align pc to alignedValue, reporting an error if alignedValue is not a power of two or is out of range.
func pcAlignPadLength(ctxt *obj.Link, pc int64, alignedValue int64) int
func prasm(p *obj.Prog)
func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc)
func progedit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc)
In Loong64,there are 8 CFRs, denoted as fcc0-fcc7. There are 4 FCSRs, denoted as fcsr0-fcsr3.
func (c *ctxt0) rclass(r int16) int
func rconv(r int) string
func (c *ctxt0) regoff(a *obj.Addr) int32
func rewriteToUseGot(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc)
func span0(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc)
func (c *ctxt0) specialFpMovInst(a obj.As, fclass int, tclass int) uint32
func (c *ctxt0) specialLsxMovInst(a obj.As, fReg int16, tReg int16) (op_code uint32, index_mask uint32)
func (c *ctxt0) stacksplit(p *obj.Prog, framesize int32) *obj.Prog
func (c *ctxt0) vregoff(a *obj.Addr) int64
func vshift(a obj.As) bool
Generated with Arrow