go-compute/types/vec64.go

88 lines
1.2 KiB
Go

package types
type Vec64x2[T ~float64 | ~uint64 | ~int64] struct {
MustAddressable128
}
func (v Vec64x2[T]) Type() T {
var t T
return t
}
func (v Vec64x2[T]) Width() int {
return 128
}
func (v Vec64x2[T]) Lanes() int {
return 2
}
func (v Vec64x2[T]) LaneWidth() int {
return 64
}
func (v Vec64x2[T]) Vec128() Vec128 {
return v
}
type Vec64x4[T ~float64 | ~uint64 | ~int64] struct {
MustAddressable256
}
func (v Vec64x4[T]) Type() T {
var t T
return t
}
func (v Vec64x4[T]) Width() int {
return 256
}
func (v Vec64x4[T]) Lanes() int {
return 4
}
func (v Vec64x4[T]) LaneWidth() int {
return 64
}
func (v Vec64x4[T]) Vec128() Vec128 {
return Vec64x2[T]{v.As128()}
}
func (v Vec64x4[T]) Vec256() Vec256 {
return v
}
type Vec64x8[T ~float64 | ~uint64 | ~int64] struct {
MustAddressable512
}
func (v Vec64x8[T]) Type() T {
var t T
return t
}
func (v Vec64x8[T]) Width() int {
return 512
}
func (v Vec64x8[T]) Lanes() int {
return 8
}
func (v Vec64x8[T]) LaneWidth() int {
return 64
}
func (v Vec64x8[T]) Vec128() Vec128 {
return Vec64x2[T]{v.As128()}
}
func (v Vec64x8[T]) Vec256() Vec256 {
return Vec64x4[T]{v.As256()}
}
func (v Vec64x8[T]) Vec512() Vec512 {
return v
}