go-compute/types/vec32.go

88 lines
1.2 KiB
Go

package types
type Vec32x4[T ~float32 | ~uint32 | ~int32] struct {
MustAddressable128
}
func (v Vec32x4[T]) Type() T {
var t T
return t
}
func (v Vec32x4[T]) Width() int {
return 128
}
func (v Vec32x4[T]) Lanes() int {
return 4
}
func (v Vec32x4[T]) LaneWidth() int {
return 32
}
func (v Vec32x4[T]) Vec128() Vec128 {
return v
}
type Vec32x8[T ~float32 | ~uint32 | ~int32] struct {
MustAddressable256
}
func (v Vec32x8[T]) Type() T {
var t T
return t
}
func (v Vec32x8[T]) Width() int {
return 256
}
func (v Vec32x8[T]) Lanes() int {
return 8
}
func (v Vec32x8[T]) LaneWidth() int {
return 32
}
func (v Vec32x8[T]) Vec128() Vec128 {
return Vec32x4[T]{v.As128()}
}
func (v Vec32x8[T]) Vec256() Vec256 {
return v
}
type Vec32x16[T ~float32 | ~uint32 | ~int32] struct {
MustAddressable512
}
func (v Vec32x16[T]) Type() T {
var t T
return t
}
func (v Vec32x16[T]) Width() int {
return 512
}
func (v Vec32x16[T]) Lanes() int {
return 16
}
func (v Vec32x16[T]) LaneWidth() int {
return 32
}
func (v Vec32x16[T]) Vec128() Vec128 {
return Vec32x4[T]{v.As128()}
}
func (v Vec32x16[T]) Vec256() Vec256 {
return Vec32x8[T]{v.As256()}
}
func (v Vec32x16[T]) Vec512() Vec512 {
return v
}