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

type Value

// short form print. Just v#.
func (v *Value) String() string {}

func (v *Value) AuxInt8() int8 {}

func (v *Value) AuxUInt8() uint8 {}

func (v *Value) AuxInt16() int16 {}

func (v *Value) AuxInt32() int32 {}

// AuxUnsigned returns v.AuxInt as an unsigned value for OpConst*.
// v.AuxInt is always sign-extended to 64 bits, even if the
// represented value is unsigned. This undoes that sign extension.
func (v *Value) AuxUnsigned() uint64 {}

func (v *Value) AuxFloat() float64 {}

func (v *Value) AuxValAndOff() ValAndOff {}

func (v *Value) AuxArm64BitField() arm64BitField {}

// long form print.  v# = opcode <type> [aux] args [: reg] (names)
func (v *Value) LongString() string {}

func (v *Value) auxString() string {}

// If/when midstack inlining is enabled (-l=4), the compiler gets both larger and slower.
// Not-inlining this method is a help (*Value.reset and *Block.NewValue0 are similar).
//
//go:noinline
func (v *Value) AddArg(w *Value) {}

//go:noinline
func (v *Value) AddArg2(w1, w2 *Value) {}

//go:noinline
func (v *Value) AddArg3(w1, w2, w3 *Value) {}

//go:noinline
func (v *Value) AddArg4(w1, w2, w3, w4 *Value) {}

//go:noinline
func (v *Value) AddArg5(w1, w2, w3, w4, w5 *Value) {}

//go:noinline
func (v *Value) AddArg6(w1, w2, w3, w4, w5, w6 *Value) {}

func (v *Value) AddArgs(a ...*Value) {}

func (v *Value) SetArg(i int, w *Value) {}

func (v *Value) SetArgs1(a *Value) {}

func (v *Value) SetArgs2(a, b *Value) {}

func (v *Value) SetArgs3(a, b, c *Value) {}

func (v *Value) resetArgs() {}

// reset is called from most rewrite rules.
// Allowing it to be inlined increases the size
// of cmd/compile by almost 10%, and slows it down.
//
//go:noinline
func (v *Value) reset(op Op) {}

// invalidateRecursively marks a value as invalid (unused)
// and after decrementing reference counts on its Args,
// also recursively invalidates any of those whose use
// count goes to zero.  It returns whether any of the
// invalidated values was marked with IsStmt.
//
// BEWARE of doing this *before* you've applied intended
// updates to SSA.
func (v *Value) invalidateRecursively() bool {}

// copyOf is called from rewrite rules.
// It modifies v to be (Copy a).
//
//go:noinline
func (v *Value) copyOf(a *Value) {}

// copyInto makes a new value identical to v and adds it to the end of b.
// unlike copyIntoWithXPos this does not check for v.Pos being a statement.
func (v *Value) copyInto(b *Block) *Value {}

// copyIntoWithXPos makes a new value identical to v and adds it to the end of b.
// The supplied position is used as the position of the new value.
// Because this is used for rematerialization, check for case that (rematerialized)
// input to value with position 'pos' carried a statement mark, and that the supplied
// position (of the instruction using the rematerialized value) is not marked, and
// preserve that mark if its line matches the supplied position.
func (v *Value) copyIntoWithXPos(b *Block, pos src.XPos) *Value {}

func (v *Value) Logf(msg string, args ...interface{}

func (v *Value) Log() bool                            {}

func (v *Value) Fatalf(msg string, args ...interface{}

// isGenericIntConst reports whether v is a generic integer constant.
func (v *Value) isGenericIntConst() bool {}

// ResultReg returns the result register assigned to v, in cmd/internal/obj/$ARCH numbering.
// It is similar to Reg and Reg0, except that it is usable interchangeably for all Value Ops.
// If you know v.Op, using Reg or Reg0 (as appropriate) will be more efficient.
func (v *Value) ResultReg() int16 {}

// Reg returns the register assigned to v, in cmd/internal/obj/$ARCH numbering.
func (v *Value) Reg() int16 {}

// Reg0 returns the register assigned to the first output of v, in cmd/internal/obj/$ARCH numbering.
func (v *Value) Reg0() int16 {}

// Reg1 returns the register assigned to the second output of v, in cmd/internal/obj/$ARCH numbering.
func (v *Value) Reg1() int16 {}

// RegTmp returns the temporary register assigned to v, in cmd/internal/obj/$ARCH numbering.
func (v *Value) RegTmp() int16 {}

func (v *Value) RegName() string {}

// MemoryArg returns the memory argument for the Value.
// The returned value, if non-nil, will be memory-typed (or a tuple with a memory-typed second part).
// Otherwise, nil is returned.
func (v *Value) MemoryArg() *Value {}

// LackingPos indicates whether v is a value that is unlikely to have a correct
// position assigned to it.  Ignoring such values leads to more user-friendly positions
// assigned to nearby values and the blocks containing them.
func (v *Value) LackingPos() bool {}

// removeable reports whether the value v can be removed from the SSA graph entirely
// if its use count drops to 0.
func (v *Value) removeable() bool {}

// AutoVar returns a *Name and int64 representing the auto variable and offset within it
// where v should be spilled.
func AutoVar(v *Value) (*ir.Name, int64) {}

// CanSSA reports whether values of type t can be represented as a Value.
func CanSSA(t *types.Type) bool {}