package vec
import "codeberg.org/anaseto/goal/internal/vec"
Package vec provides both vectorized assembly and pure-go implementations for various algorithms. The vectorized implementation using SSE instructions is used if the package is built using the "sse" build tag.
Index ¶
- func AbsF(r []float64, x []float64)
- func AbsI(r []int64, x []int64)
- func AddBB(r []int64, x []byte, y []byte)
- func AddBi(r []int64, x []byte, y int64)
- func AddFF(r []float64, x []float64, y []float64)
- func AddFf(r []float64, x []float64, y float64)
- func AddIB(r []int64, x []int64, y []byte)
- func AddII(r []int64, x []int64, y []int64)
- func AddIi(r []int64, x []int64, y int64)
- func AndBB(r []byte, x []byte, y []byte)
- func AndBb(r []byte, x []byte, y uint32)
- func AndIb(r []byte, x []int64, y uint32)
- func AndIi(r []int64, x []int64, y int64)
- func AndO(x []byte) int64
- func B2I(r []int64, x []byte)
- func CaseOBB(r []byte, x []byte, y []byte)
- func CaseOBb(r []byte, x []byte, y uint32)
- func Ceil(r []float64, x []float64)
- func DivFF(r []float64, x []float64, y []float64)
- func DivFf(r []float64, x []float64, y float64)
- func DivIp2(r, x []int64, y int64)
- func DivfF(r []float64, x float64, y []float64)
- func Enum(r []int64)
- func EqBB(r []byte, x []byte, y []byte)
- func EqBb(r []byte, x []byte, y uint32)
- func EqFF(r []byte, x []float64, y []float64)
- func EqIB(r []byte, x []int64, y []byte)
- func EqII(r []byte, x []int64, y []int64)
- func EqfF(r []byte, x float64, y []float64)
- func EqiI(r []byte, x int64, y []int64)
- func Floor(r []float64, x []float64)
- func GtBB(r []byte, x []byte, y []byte)
- func GtBI(r []byte, x []byte, y []int64)
- func GtBb(r []byte, x []byte, y uint32)
- func GtFF(r []byte, x []float64, y []float64)
- func GtFf(r []byte, x []float64, y float64)
- func GtIB(r []byte, x []int64, y []byte)
- func GtII(r []byte, x []int64, y []int64)
- func GtIi(r []byte, x []int64, y int64)
- func GtbB(r []byte, x uint32, y []byte)
- func GtfF(r []byte, x float64, y []float64)
- func GtiI(r []byte, x int64, y []int64)
- func MaxB(x uint32, y []byte) int64
- func MaxBB(r []byte, x []byte, y []byte)
- func MaxBb(r []byte, x []byte, y uint32)
- func MaxF(x float64, y []float64) float64
- func MaxFF(r []float64, x []float64, y []float64)
- func MaxFf(r []float64, x []float64, y float64)
- func MaxI(x int64, y []int64) int64
- func MinB(x uint32, y []byte) int64
- func MinBB(r []byte, x []byte, y []byte)
- func MinBb(r []byte, x []byte, y uint32)
- func MinF(x float64, y []float64) float64
- func MinFF(r []float64, x []float64, y []float64)
- func MinFf(r []float64, x []float64, y float64)
- func MinI(x int64, y []int64) int64
- func MinMaxB(mi uint32, ma uint32, y []byte) (uint32, uint32)
- func MinMaxI(mi, ma int64, y []int64) (int64, int64)
- func MulFF(r []float64, x []float64, y []float64)
- func MulFf(r []float64, x []float64, y float64)
- func MulIp2(r, x []int64, y int64)
- func MulOB(r []byte, x []byte, y []byte)
- func MulOI(r []int64, x []byte, y []int64)
- func MulOb(r []byte, x []byte, y uint32)
- func MulOi(r []int64, x []byte, y int64)
- func NaN(r []byte, x []float64)
- func NotO(r []byte, x []byte)
- func OrBB(r []byte, x []byte, y []byte)
- func OrO(x []byte) int64
- func RoundToEven(r []float64, x []float64)
- func ScanMaxF(r []float64, x float64, y []float64)
- func ScanMinF(r []float64, x float64, y []float64)
- func ScanSumF(r []float64, x float64, y []float64)
- func ScanSumI(r []int64, x int64, y []int64)
- func SignF(r []float64, x []float64)
- func SignI(r []int64, x []int64)
- func Sqrt(r []float64, x []float64)
- func SubBB(r []int64, x []byte, y []byte)
- func SubBI(r []int64, x []byte, y []int64)
- func SubFF(r []float64, x []float64, y []float64)
- func SubIB(r []int64, x []int64, y []byte)
- func SubII(r []int64, x []int64, y []int64)
- func SubfF(r []float64, x float64, y []float64)
- func SubiB(r []int64, x int64, y []byte)
- func SubiI(r []int64, x int64, y []int64)
- func SumB(x []byte) int64
- func SumF(x []float64) float64
- func SumI(x []int64) int64
- func WAddBB(r []byte, x []byte, y []byte)
- func WAddBi(r []byte, x []byte, y int32)
Functions ¶
func AbsF ¶
func AbsI ¶
func AddBB ¶
func AddBi ¶
func AddFF ¶
func AddFf ¶
func AddIB ¶
func AddII ¶
func AddIi ¶
func AndBB ¶
func AndBb ¶
func AndIb ¶
func AndIi ¶
func AndO ¶
func B2I ¶
func CaseOBB ¶
func CaseOBb ¶
func Ceil ¶
func DivFF ¶
func DivFf ¶
func DivIp2 ¶
DivIp2 divides x by 2^y. TODO: vectorize (no quadword arithmetic shift in SSE?)
func DivfF ¶
func Enum ¶
func Enum(r []int64)
func EqBB ¶
func EqBb ¶
func EqFF ¶
func EqIB ¶
func EqII ¶
func EqfF ¶
func EqiI ¶
func Floor ¶
func GtBB ¶
func GtBI ¶
func GtBb ¶
func GtFF ¶
func GtFf ¶
func GtIB ¶
func GtII ¶
func GtIi ¶
func GtbB ¶
func GtfF ¶
func GtiI ¶
func MaxB ¶
func MaxBB ¶
func MaxBb ¶
func MaxF ¶
func MaxFF ¶
func MaxFf ¶
func MaxI ¶
func MinB ¶
func MinBB ¶
func MinBb ¶
func MinF ¶
func MinFF ¶
func MinFf ¶
func MinI ¶
func MinMaxB ¶
func MinMaxI ¶
MinMaxI folds over y searching for min and max. It doesn't directly translate to any primitive but is used for computing range by some. NOTE: SSE vectorized version was not much of an improvement on my machines.
func MulFF ¶
func MulFf ¶
func MulIp2 ¶
MulIp2 multiplies x by 2^y. TODO: vectorize (no quadword arithmetic shift in SSE?)
func MulOB ¶
func MulOI ¶
func MulOb ¶
func MulOi ¶
func NaN ¶
func NotO ¶
func OrBB ¶
func OrO ¶
func RoundToEven ¶
func ScanMaxF ¶
func ScanMinF ¶
func ScanSumF ¶
func ScanSumI ¶
func SignF ¶
func SignI ¶
func Sqrt ¶
func SubBB ¶
func SubBI ¶
func SubFF ¶
func SubIB ¶
func SubII ¶
func SubfF ¶
func SubiB ¶
func SubiI ¶
func SumB ¶
func SumF ¶
func SumI ¶
func WAddBB ¶
func WAddBi ¶
Source Files ¶
common.go doc.go fns_amd64.go vec_amd64.go
- Version
- v1.1.0 (latest)
- Published
- Feb 17, 2025
- Platform
- linux/amd64
- Imports
- 1 packages
- Last checked
- 3 hours ago –
Tools for package owners.