Documentation ¶
Index ¶
- Constants
- func AccessInt1(m map[int]int) int
- func AccessInt2(m map[int]int) bool
- func AccessString1(m map[string]int) int
- func AccessString2(m map[string]int) bool
- func Add(x, y, ci uint) (r, co uint)
- func Add64(x, y, ci uint64) (r, co uint64)
- func Add64C(x, ci uint64) (r, co uint64)
- func Add64M(p, q, r *[3]uint64)
- func Add64MPanicOnOverflowEQ(a, b [2]uint64) [2]uint64
- func Add64MPanicOnOverflowGT(a, b [2]uint64) [2]uint64
- func Add64MPanicOnOverflowNE(a, b [2]uint64) [2]uint64
- func Add64MSaveC(p, q, r, c *[2]uint64)
- func Add64PanicOnOverflowEQ(a, b uint64) uint64
- func Add64PanicOnOverflowGT(a, b uint64) uint64
- func Add64PanicOnOverflowNE(a, b uint64) uint64
- func Add64R(x, y, ci uint64) uint64
- func Add64Z(x, y uint64) (r, co uint64)
- func AddAddSubSimplify(a, b, c int) int
- func AddC(x, ci uint) (r, co uint)
- func AddM(p, q, r *[3]uint)
- func AddMul(x int) int
- func AddR(x, y, ci uint) uint
- func AddSubFromConst(a int) int
- func AddZ(x, y uint) (r, co uint)
- func ArrayAdd64(a, b [4]float64) [4]float64
- func ArrayCopy(a [16]byte) (b [16]byte)
- func ArrayInit(i, j int) [4]int
- func ArrayZero() [16]byte
- func CallFunc(f func())
- func CallInterface(x interface{ ... })
- func CapDiv(a []int) int
- func CapMod(a []int) int
- func Cmp(f float64) bool
- func CmpFold(x uint32)
- func CmpLogicalToZero(a, b, c uint32, d, e uint64) uint64
- func CmpMem1(p int, q *int) bool
- func CmpMem2(p *int, q int) bool
- func CmpMem3(p *int) bool
- func CmpMem4(p *int) bool
- func CmpMem5(p **int)
- func CmpMem6(a []int) int
- func CmpToOneU_ex1(a uint8, b uint16, c uint32, d uint64) int
- func CmpToOneU_ex2(a uint8, b uint16, c uint32, d uint64) int
- func CmpToZero(a, b, d int32, e, f int64, deOptC0, deOptC1 bool) int32
- func CmpToZeroU_ex1(a uint8, b uint16, c uint32, d uint64) int
- func CmpToZeroU_ex2(a uint8, b uint16, c uint32, d uint64) int
- func CmpToZero_ex1(a int64, e int32) int
- func CmpToZero_ex2(a, b, c int64, e, f, g int32) int
- func CmpToZero_ex3(a, b, c, d int64, e, f, g, h int32) int
- func CmpToZero_ex4(a, b, c, d int64, e, f, g, h int32) int
- func CmpToZero_ex5(e, f int32, u uint32) int
- func CmpWithAdd(a float64, b float64) bool
- func CmpWithSub(a float64, b float64) bool
- func CmpZero1(a int32, ptr *int)
- func CmpZero2(a int64, ptr *int)
- func CmpZero3(a int32, ptr *int)
- func CmpZero32(f float32) bool
- func CmpZero4(a int64, ptr *int)
- func CmpZero64(f float64) bool
- func CompareArray1(a, b [2]byte) bool
- func CompareArray2(a, b [3]uint16) bool
- func CompareArray3(a, b [3]int16) bool
- func CompareArray4(a, b [12]int8) bool
- func CompareArray5(a, b [15]byte) bool
- func CompareArray6(a, b unsafe.Pointer) bool
- func CompareString1(s string) bool
- func CompareString2(s string) bool
- func CompareString3(s string) bool
- func ConstDivs(n1 uint, n2 int) (uint, int)
- func ConstMods(n1 uint, n2 int) (uint, int)
- func ConstantLoad()
- func CountRunes(s string) int
- func Defer()
- func Div(hi, lo, x uint) (q, r uint)
- func Div32(hi, lo, x uint32) (q, r uint32)
- func Div64(hi, lo, x uint64) (q, r uint64)
- func Div64degenerate(x uint64) (q, r uint64)
- func DivMemSrc(a []float64)
- func DivPow2(f1, f2, f3 float64) (float64, float64, float64)
- func Divisible(n1 uint, n2 int) (bool, bool, bool, bool)
- func F()
- func FloatDivs(a []float32) float32
- func FusedAdd32(x, y, z float32) float32
- func FusedAdd64(x, y, z float64) float64
- func FusedSub32_a(x, y, z float32) float32
- func FusedSub32_b(x, y, z float32) float32
- func FusedSub64_a(x, y, z float64) float64
- func FusedSub64_b(x, y, z float64) float64
- func IndexArray(x *[10]int, i int) int
- func IndexSlice(x []float64, i int) float64
- func IndexString(x string, i int) byte
- func Init1(p *I1)
- func InitNotSmallSliceLiteral() []int
- func InitSmallSliceLiteral() []int
- func IterateBits(n uint) int
- func IterateBits16(n uint16) int
- func IterateBits32(n uint32) int
- func IterateBits64(n uint64) int
- func IterateBits8(n uint8) int
- func KeepWanted(t *T)
- func LeadingZeros(n uint) int
- func LeadingZeros16(n uint16) int
- func LeadingZeros32(n uint32) int
- func LeadingZeros64(n uint64) int
- func LeadingZeros8(n uint8) int
- func Len(n uint) int
- func Len16(n uint16) int
- func Len32(n uint32) int
- func Len64(n uint64) int
- func Len8(n uint8) int
- func LenDiv1(a []int) int
- func LenDiv2(s string) int
- func LenMod1(a []int) int
- func LenMod2(s string) int
- func LookupStringConversionArrayLit(m map[[2]string]int, bytes []byte) int
- func LookupStringConversionKeyedArrayLit(m map[[2]string]int, bytes []byte) int
- func LookupStringConversionNestedLit(m map[[1]struct{ ... }]int, bytes []byte) int
- func LookupStringConversionSimple(m map[string]int, bytes []byte) int
- func LookupStringConversionStructLit(m map[struct{ ... }]int, bytes []byte) int
- func MULA(a, b, c uint32) (uint32, uint32, uint32)
- func MULS(a, b, c uint32) (uint32, uint32, uint32)
- func MapClearIndirect(m map[int]int)
- func MapClearInterface(m map[interface{}]int)
- func MapClearNotReflexive(m map[float64]int)
- func MapClearPointer(m map[*byte]int)
- func MapClearReflexive(m map[int]int)
- func MapClearSideEffect(m map[int]int) int
- func MapLiteralSizing(x int) (map[int]int, map[int]int)
- func MergeMuls1(n int) int
- func MergeMuls2(n int) int
- func MergeMuls3(a, n int) int
- func MergeMuls4(n int) int
- func MergeMuls5(a, n int) int
- func MightPanic(a []int, i, j, k, s int)
- func Mul(x, y uint) (hi, lo uint)
- func Mul2(f float64) float64
- func Mul64(x, y uint64) (hi, lo uint64)
- func MulMemSrc(a []uint32, b []float32)
- func Mul_96(n int) int
- func Mul_n120(n int) int
- func NegAddFromConstNeg(a int) int
- func NegSubFromConst(a int) int
- func NoFix16A(divr int16) (int16, int16)
- func NoFix16B(divd int16) (int16, int16)
- func NoFix32A(divr int32) (int32, int32)
- func NoFix32B(divd int32) (int32, int32)
- func NoFix64A(divr int64) (int64, int64)
- func NoFix64B(divd int64) (int64, int64)
- func OnesCount(n uint) int
- func OnesCount16(n uint16) int
- func OnesCount32(n uint32) int
- func OnesCount64(n uint64) int
- func OnesCount8(n uint8) int
- func Pow2DivisibleSigned(n1, n2 int) (bool, bool)
- func Pow2Divs(n1 uint, n2 int) (uint, int)
- func Pow2Mods(n1 uint, n2 int) (uint, int)
- func Pow2Muls(n1, n2 int) (int, int)
- func RaceMightPanic(a []int, i, j, k, s int)
- func RegArgsCall(int, int, int, S)
- func ReverseBytes(n uint) uint
- func ReverseBytes16(n uint16) uint16
- func ReverseBytes32(n uint32) uint32
- func ReverseBytes64(n uint64) uint64
- func RotateLeft16(n uint16) uint16
- func RotateLeft32(n uint32) uint32
- func RotateLeft64(n uint64) uint64
- func RotateLeft8(n uint8) uint8
- func RotateLeftVariable(n uint, m int) uint
- func RotateLeftVariable32(n uint32, m int) uint32
- func RotateLeftVariable64(n uint64, m int) uint64
- func SliceArray(x *[10]int, i, j int) []int
- func SliceClear(s []int) []int
- func SliceClearPointers(s []*int) []*int
- func SliceExtensionConst(s []int) []int
- func SliceExtensionConstInt64(s []int) []int
- func SliceExtensionConstUint(s []int) []int
- func SliceExtensionConstUint64(s []int) []int
- func SliceExtensionInt64(s []int, l64 int64) []int
- func SliceExtensionPointer(s []*int, l int) []*int
- func SliceExtensionVar(s []byte, l int) []byte
- func SliceExtensionVarInt64(s []byte, l int64) []byte
- func SliceExtensionVarUint(s []byte, l uint) []byte
- func SliceExtensionVarUint64(s []byte, l uint64) []byte
- func SliceMakeCopyConst(s []int) []int
- func SliceMakeCopyConstPtr(s []*int) []*int
- func SliceMakeCopyLen(s []int) []int
- func SliceMakeCopyLenPtr(s []*int) []*int
- func SliceMakeCopyNoMemmoveDifferentLen(s []int) []int
- func SliceMakeCopyNoOptBlank(s []*int) []*int
- func SliceMakeCopyNoOptCap(s []int) []int
- func SliceMakeCopyNoOptCopyLength(s []*int) (int, []*int)
- func SliceMakeCopyNoOptNoCap(s []*int) []*int
- func SliceMakeCopyNoOptNoCopy(s []*int) []*int
- func SliceMakeCopyNoOptNoDeref(s []*int) []*int
- func SliceMakeCopyNoOptNoHeapAlloc(s []*int) int
- func SliceMakeCopyNoOptNoMake(s []*int) []*int
- func SliceMakeCopyNoOptNoVar(s []*int) []*int
- func SliceMakeCopyNoOptSelfCopy(s []*int) []*int
- func SliceMakeCopyNoOptTargetReference(s []*int) []*int
- func SliceMakeCopyNoOptWrongAssign(s []*int) []*int
- func SliceMakeCopyNoOptWrongOrder(s []*int) []*int
- func SliceNilCheck(s []int)
- func SliceSlice(x []float64, i, j int) []float64
- func SliceString(x string, i, j int) string
- func SliceWithConstCompare(a []int, b int) []int
- func SliceWithSubtractBound(a []int, b int) []int
- func StackArgsCall([10]int)
- func StackStore() int
- func Sub(x, y, ci uint) (r, co uint)
- func Sub64(x, y, ci uint64) (r, co uint64)
- func Sub64C(x, ci uint64) (r, co uint64)
- func Sub64M(p, q, r *[3]uint64)
- func Sub64MPanicOnOverflowEQ(a, b [2]uint64) [2]uint64
- func Sub64MPanicOnOverflowGT(a, b [2]uint64) [2]uint64
- func Sub64MPanicOnOverflowNE(a, b [2]uint64) [2]uint64
- func Sub64MSaveC(p, q, r, c *[2]uint64)
- func Sub64PanicOnOverflowEQ(a, b uint64) uint64
- func Sub64PanicOnOverflowGT(a, b uint64) uint64
- func Sub64PanicOnOverflowNE(a, b uint64) uint64
- func Sub64R(x, y, ci uint64) uint64
- func Sub64Z(x, y uint64) (r, co uint64)
- func SubAddNegSimplify(a, b int) int
- func SubAddSimplify(a, b int) int
- func SubC(x, ci uint) (r, co uint)
- func SubFromConst(a int) int
- func SubFromConstNeg(a int) int
- func SubFromLen64(n uint64) int
- func SubM(p, q, r *[3]uint)
- func SubMem(arr []int, b, c, d int) int
- func SubR(x, y, ci uint) uint
- func SubSubFromConst(a int) int
- func SubSubNegSimplify(a, b int) int
- func SubZ(x, y uint) (r, co uint)
- func ToByteSlice() []byte
- func TrailingZeros(n uint) int
- func TrailingZeros16(n uint16) int
- func TrailingZeros32(n uint32) int
- func TrailingZeros64(n uint64) int
- func TrailingZeros64Subtract(n uint64) int
- func TrailingZeros8(n uint8) int
- func UintGeqOne(a uint8, b uint16, c uint32, d uint64) int
- func UintGeqZero(a uint8, b uint16, c uint32, d uint64) int
- func UintGtZero(a uint8, b uint16, c uint32, d uint64) int
- func UintLeqZero(a uint8, b uint16, c uint32, d uint64) int
- func UintLtOne(a uint8, b uint16, c uint32, d uint64) int
- func UintLtZero(a uint8, b uint16, c uint32, d uint64) int
- func Zero1(t *Z1)
- func Zero2(t *Z2)
- func ZeroLargeStruct(x *T)
- type I
- type I1
- type S
- type T
- type Z1
- type Z2
Constants ¶
const ( A = 7777777777777777 B = 8888888888888888 )
Variables ¶
This section is empty.
Functions ¶
func AccessInt1 ¶
func AccessInt2 ¶
func AccessString1 ¶
func AccessString2 ¶
func Add64MPanicOnOverflowEQ ¶
func Add64MPanicOnOverflowGT ¶
func Add64MPanicOnOverflowNE ¶
func Add64MSaveC ¶
func Add64MSaveC(p, q, r, c *[2]uint64)
func Add64PanicOnOverflowEQ ¶
func Add64PanicOnOverflowGT ¶
func Add64PanicOnOverflowNE ¶
func AddAddSubSimplify ¶
func AddSubFromConst ¶
func ArrayAdd64 ¶
Notes: - 386 fails due to spilling a register - arm & mips fail due to softfloat calls amd64:"TEXT\t.*, [$]0-" arm64:"TEXT\t.*, [$]0-" ppc64:"TEXT\t.*, [$]0-" ppc64le:"TEXT\t.*, [$]0-" s390x:"TEXT\t.*, [$]0-"
func ArrayInit ¶
386:"TEXT\t.*, [$]0-" amd64:"TEXT\t.*, [$]0-" arm:"TEXT\t.*, [$]0-" (spills return address) arm64:"TEXT\t.*, [$]0-" mips:"TEXT\t.*, [$]-4-" ppc64:"TEXT\t.*, [$]0-" ppc64le:"TEXT\t.*, [$]0-" s390x:"TEXT\t.*, [$]0-"
func CallInterface ¶
func CallInterface(x interface{ M() })
func CmpLogicalToZero ¶
func CmpToZero_ex1 ¶
var + const 'x-const' might be canonicalized to 'x+(-const)', so we check both CMN and CMP for subtraction expressions to make the pattern robust.
func CmpToZero_ex2 ¶
var + var TODO: optimize 'var - var'
func CmpToZero_ex5 ¶
func CmpWithAdd ¶
func CmpWithSub ¶
func CompareArray1 ¶
func CompareArray2 ¶
func CompareArray3 ¶
func CompareArray4 ¶
func CompareArray5 ¶
func CompareArray6 ¶
This was a TODO in mapaccess1_faststr
func CompareString1 ¶
func CompareString2 ¶
func CompareString3 ¶
func ConstantLoad ¶
func ConstantLoad()
Loading from read-only symbols should get transformed into constants.
func CountRunes ¶
func Div64degenerate ¶
func FusedAdd32 ¶
func FusedAdd64 ¶
func FusedSub32_a ¶
func FusedSub32_b ¶
func FusedSub64_a ¶
func FusedSub64_b ¶
func IndexArray ¶
func IndexSlice ¶
func IndexString ¶
func InitNotSmallSliceLiteral ¶
func InitNotSmallSliceLiteral() []int
func InitSmallSliceLiteral ¶
func InitSmallSliceLiteral() []int
---------------------- //
Init slice literal //
---------------------- // See issue 21561
func IterateBits ¶
func IterateBits16 ¶
func IterateBits32 ¶
func IterateBits64 ¶
func IterateBits8 ¶
func KeepWanted ¶
func KeepWanted(t *T)
Notes: - 386 fails due to spilling a register amd64:"TEXT\t.*, [$]0-" arm:"TEXT\t.*, [$]0-" (spills return address) arm64:"TEXT\t.*, [$]0-" ppc64:"TEXT\t.*, [$]0-" ppc64le:"TEXT\t.*, [$]0-" s390x:"TEXT\t.*, [$]0-" Note: that 386 currently has to spill a register.
func LeadingZeros ¶
func LeadingZeros16 ¶
func LeadingZeros32 ¶
func LeadingZeros64 ¶
func LeadingZeros8 ¶
func MapClearIndirect ¶
func MapClearInterface ¶
func MapClearInterface(m map[interface{}]int)
func MapClearNotReflexive ¶
func MapClearPointer ¶
func MapClearReflexive ¶
func MapClearSideEffect ¶
func MergeMuls1 ¶
func MergeMuls2 ¶
func MergeMuls3 ¶
func MergeMuls4 ¶
func MergeMuls5 ¶
func MightPanic ¶
Check that simple functions get promoted to nosplit, even when they might panic in various ways. See issue 31219. amd64:"TEXT\t.*NOSPLIT.*"
func NegAddFromConstNeg ¶
func NegSubFromConst ¶
func NoFix64A ¶
Check that fix-up code is not generated for divisions where it has been proven that that the divisor is not -1 or that the dividend is > MinIntNN.
func OnesCount ¶
TODO(register args) Restore a m d 6 4 / v 1 :.*x86HasPOPCNT when only one ABI is tested.
func OnesCount16 ¶
func OnesCount32 ¶
func OnesCount64 ¶
func OnesCount8 ¶
func Pow2DivisibleSigned ¶
Check that signed divisibility checks get converted to AND on low bits
func RaceMightPanic ¶
Check that we elide racefuncenter/racefuncexit for functions with no calls (but which might panic in various ways). See issue 31219. amd64:-"CALL.*racefuncenter.*" arm64:-"CALL.*racefuncenter.*" ppc64le:-"CALL.*racefuncenter.*"
func ReverseBytes ¶
func ReverseBytes16 ¶
func ReverseBytes32 ¶
func ReverseBytes64 ¶
func RotateLeft16 ¶
func RotateLeft32 ¶
func RotateLeft64 ¶
func RotateLeft8 ¶
func RotateLeftVariable ¶
func RotateLeftVariable32 ¶
func RotateLeftVariable64 ¶
func SliceArray ¶
func SliceClear ¶
func SliceClearPointers ¶
func SliceExtensionConst ¶
func SliceExtensionConstUint ¶
func SliceExtensionInt64 ¶
func SliceExtensionPointer ¶
func SliceExtensionVar ¶
func SliceExtensionVarInt64 ¶
func SliceExtensionVarUint ¶
func SliceExtensionVarUint64 ¶
func SliceMakeCopyConst ¶
func SliceMakeCopyConstPtr ¶
func SliceMakeCopyLen ¶
func SliceMakeCopyLenPtr ¶
func SliceMakeCopyNoOptBlank ¶
func SliceMakeCopyNoOptCap ¶
func SliceMakeCopyNoOptNoCap ¶
func SliceMakeCopyNoOptNoVar ¶
func SliceNilCheck ¶
func SliceNilCheck(s []int)
---------------------- //
Nil check of &s[0] //
---------------------- // See issue 30366
func SliceSlice ¶
func SliceString ¶
func SliceWithConstCompare ¶
func SliceWithSubtractBound ¶
func StackArgsCall ¶
func StackArgsCall([10]int)
func StackStore ¶
func StackStore() int
386:"TEXT\t.*, [$]0-" amd64:"TEXT\t.*, [$]0-" arm:"TEXT\t.*, [$]-4-" arm64:"TEXT\t.*, [$]0-" mips:"TEXT\t.*, [$]-4-" ppc64:"TEXT\t.*, [$]0-" ppc64le:"TEXT\t.*, [$]0-" s390x:"TEXT\t.*, [$]0-"
func Sub64MPanicOnOverflowEQ ¶
func Sub64MPanicOnOverflowGT ¶
func Sub64MPanicOnOverflowNE ¶
func Sub64MSaveC ¶
func Sub64MSaveC(p, q, r, c *[2]uint64)
func Sub64PanicOnOverflowEQ ¶
func Sub64PanicOnOverflowGT ¶
func Sub64PanicOnOverflowNE ¶
func SubAddNegSimplify ¶
func SubAddSimplify ¶
func SubFromConst ¶
func SubFromConstNeg ¶
func SubFromLen64 ¶
func SubSubFromConst ¶
func SubSubNegSimplify ¶
func ToByteSlice ¶
func ToByteSlice() []byte
func TrailingZeros ¶
func TrailingZeros16 ¶
func TrailingZeros32 ¶
func TrailingZeros64 ¶
func TrailingZeros64Subtract ¶
func TrailingZeros8 ¶
func ZeroLargeStruct ¶
func ZeroLargeStruct(x *T)
386:"TEXT\t.*, [$]0-" amd64:"TEXT\t.*, [$]0-" arm:"TEXT\t.*, [$]0-" (spills return address) arm64:"TEXT\t.*, [$]0-" mips:"TEXT\t.*, [$]-4-" ppc64:"TEXT\t.*, [$]0-" ppc64le:"TEXT\t.*, [$]0-" s390x:"TEXT\t.*, [$]0-"
Types ¶
Source Files ¶
- addrcalc.go
- alloc.go
- arithmetic.go
- bitfield.go
- bits.go
- bmi.go
- bool.go
- clobberdead.go
- clobberdeadreg.go
- compare_and_branch.go
- comparisons.go
- condmove.go
- copy.go
- floats.go
- fuse.go
- issue22703.go
- issue25378.go
- issue31618.go
- issue33580.go
- issue38554.go
- issue42610.go
- issue48054.go
- issue52635.go
- logic.go
- mapaccess.go
- maps.go
- math.go
- mathbits.go
- memcombine.go
- memops.go
- noextend.go
- race.go
- regabi_regalloc.go
- retpoline.go
- rotate.go
- select.go
- shift.go
- shortcircuit.go
- slices.go
- smallintiface.go
- spectre.go
- stack.go
- strings.go
- structs.go
- switch.go
- zerosize.go