arm64

Imports

Imports #

"cmd/compile/internal/ssa"
"cmd/compile/internal/ssagen"
"cmd/internal/obj/arm64"
"cmd/compile/internal/ir"
"cmd/compile/internal/objw"
"cmd/compile/internal/types"
"cmd/internal/obj"
"cmd/internal/obj/arm64"
"math"
"cmd/compile/internal/base"
"cmd/compile/internal/ir"
"cmd/compile/internal/logopt"
"cmd/compile/internal/objw"
"cmd/compile/internal/ssa"
"cmd/compile/internal/ssagen"
"cmd/compile/internal/types"
"cmd/internal/obj"
"cmd/internal/obj/arm64"

Constants & Variables

blockJump var #

var blockJump = map[ssa.BlockKind]struct{...}{...}

condBits var #

var condBits = map[ssa.Op]arm64.SpecialOperand{...}

gtJumps var #

To model a 'GTnoov' ('>' without overflow checking) branching.

var gtJumps = [2][2]ssagen.IndexJump{...}

leJumps var #

To model a 'LEnoov' ('<=' without overflow checking) branching.

var leJumps = [2][2]ssagen.IndexJump{...}

Functions

Init function #

func Init(arch *ssagen.ArchInfo)

genIndexedOperand function #

generate the memory operand for the indexed load/store instructions. base and idx are registers.

func genIndexedOperand(op ssa.Op, base int16, idx int16) obj.Addr

genshift function #

genshift generates a Prog for r = r0 op (r1 shifted by n).

func genshift(s *ssagen.State, v *ssa.Value, as obj.As, r0 int16, r1 int16, r int16, typ int64, n int64) *obj.Prog

ginsnop function #

func ginsnop(pp *objw.Progs) *obj.Prog

loadByType function #

loadByType returns the load instruction of the given type.

func loadByType(t *types.Type) obj.As

loadByType2 function #

loadByType2 returns an opcode that can load consecutive memory locations into 2 registers with type t. returns obj.AXXX if no such opcode exists.

func loadByType2(t *types.Type) obj.As

loadRegResult function #

func loadRegResult(s *ssagen.State, f *ssa.Func, t *types.Type, reg int16, n *ir.Name, off int64) *obj.Prog

makeshift function #

makeshift encodes a register shifted by a constant, used as an Offset in Prog.

func makeshift(v *ssa.Value, reg int16, typ int64, s int64) int64

padframe function #

func padframe(frame int64) int64

spillArgReg function #

func spillArgReg(pp *objw.Progs, p *obj.Prog, f *ssa.Func, t *types.Type, reg int16, n *ir.Name, off int64) *obj.Prog

ssaGenBlock function #

func ssaGenBlock(s *ssagen.State, b *ssa.Block, next *ssa.Block)

ssaGenValue function #

func ssaGenValue(s *ssagen.State, v *ssa.Value)

storeByType function #

storeByType returns the store instruction of the given type.

func storeByType(t *types.Type) obj.As

storeByType2 function #

storeByType2 returns an opcode that can store registers with type t into 2 consecutive memory locations. returns obj.AXXX if no such opcode exists.

func storeByType2(t *types.Type) obj.As

zerorange function #

func zerorange(pp *objw.Progs, p *obj.Prog, off int64, cnt int64, _ *uint32) *obj.Prog

Generated with Arrow