go-compute/types/vec16.go

88 lines
1.2 KiB
Go

package types
type Vec16x8[T ~uint16 | ~int16] struct {
MustAddressable128
}
func (v Vec16x8[T]) Type() T {
var t T
return t
}
func (v Vec16x8[T]) Width() int {
return 128
}
func (v Vec16x8[T]) Lanes() int {
return 8
}
func (v Vec16x8[T]) LaneWidth() int {
return 16
}
func (v Vec16x8[T]) Vec128() Vec128 {
return v
}
type Vec16x16[T ~uint16 | ~int16] struct {
MustAddressable256
}
func (v Vec16x16[T]) Type() T {
var t T
return t
}
func (v Vec16x16[T]) Width() int {
return 256
}
func (v Vec16x16[T]) Lanes() int {
return 16
}
func (v Vec16x16[T]) LaneWidth() int {
return 16
}
func (v Vec16x16[T]) Vec128() Vec128 {
return Vec16x8[T]{v.As128()}
}
func (v Vec16x16[T]) Vec256() Vec256 {
return v
}
type Vec16x32[T ~uint16 | ~int16] struct {
MustAddressable512
}
func (v Vec16x32[T]) Type() T {
var t T
return t
}
func (v Vec16x32[T]) Width() int {
return 512
}
func (v Vec16x32[T]) Lanes() int {
return 32
}
func (v Vec16x32[T]) LaneWidth() int {
return 16
}
func (v Vec16x32[T]) Vec128() Vec128 {
return Vec16x8[T]{v.As128()}
}
func (v Vec16x32[T]) Vec256() Vec256 {
return Vec16x16[T]{v.As256()}
}
func (v Vec16x32[T]) Vec512() Vec512 {
return v
}