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

// memcombine combines smaller loads and stores into larger ones.
// We ensure this generates good code for encoding/binary operations.
// It may help other cases also.
func memcombine(f *Func) {}

func memcombineLoads(f *Func) {}

type BaseAddress

// splitPtr returns the base address of ptr and any
// constant offset from that base.
// BaseAddress{ptr,nil},0 is always a valid result, but splitPtr
// tries to peel away as many constants into off as possible.
func splitPtr(ptr *Value) (BaseAddress, int64) {}

func combineLoads(root *Value, n int64) bool {}

func memcombineStores(f *Func) {}

// Try to combine the n stores ending in root.
// Returns true if successful.
func combineStores(root *Value, n int64) bool {}

func sizeType(size int64) *types.Type {}

func truncate(b *Block, pos src.XPos, v *Value, from, to int64) *Value {}

func zeroExtend(b *Block, pos src.XPos, v *Value, from, to int64) *Value {}

func leftShift(b *Block, pos src.XPos, v *Value, shift int64) *Value {}

func rightShift(b *Block, pos src.XPos, v *Value, shift int64) *Value {}

func byteSwap(b *Block, pos src.XPos, v *Value) *Value {}