blob: 6275512148fe9fa713599679c1faf763b591fca5 [file]
// Code generated by 'tmplgen'; DO NOT EDIT.
//go:build goexperiment.simd
package archsimd
// BroadcastInt8x16 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastInt8x16(x int8) Int8x16 {
var z Int8x16
return z.SetElem(0, x).broadcast1To16()
}
// BroadcastInt16x8 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastInt16x8(x int16) Int16x8 {
var z Int16x8
return z.SetElem(0, x).broadcast1To8()
}
// BroadcastInt32x4 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastInt32x4(x int32) Int32x4 {
var z Int32x4
return z.SetElem(0, x).broadcast1To4()
}
// BroadcastInt64x2 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastInt64x2(x int64) Int64x2 {
var z Int64x2
return z.SetElem(0, x).broadcast1To2()
}
// BroadcastUint8x16 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastUint8x16(x uint8) Uint8x16 {
var z Uint8x16
return z.SetElem(0, x).broadcast1To16()
}
// BroadcastUint16x8 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastUint16x8(x uint16) Uint16x8 {
var z Uint16x8
return z.SetElem(0, x).broadcast1To8()
}
// BroadcastUint32x4 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastUint32x4(x uint32) Uint32x4 {
var z Uint32x4
return z.SetElem(0, x).broadcast1To4()
}
// BroadcastUint64x2 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastUint64x2(x uint64) Uint64x2 {
var z Uint64x2
return z.SetElem(0, x).broadcast1To2()
}
// BroadcastFloat32x4 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastFloat32x4(x float32) Float32x4 {
var z Float32x4
return z.SetElem(0, x).broadcast1To4()
}
// BroadcastFloat64x2 returns a vector with the input
// x assigned to all elements of the output.
func BroadcastFloat64x2(x float64) Float64x2 {
var z Float64x2
return z.SetElem(0, x).broadcast1To2()
}
// String returns a string representation of SIMD vector x.
func (x Int8x16) String() string {
var s [16]int8
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Int16x8) String() string {
var s [8]int16
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Int32x4) String() string {
var s [4]int32
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Int64x2) String() string {
var s [2]int64
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Uint8x16) String() string {
var s [16]uint8
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Uint16x8) String() string {
var s [8]uint16
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Uint32x4) String() string {
var s [4]uint32
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Uint64x2) String() string {
var s [2]uint64
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Float32x4) String() string {
var s [4]float32
x.StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD vector x.
func (x Float64x2) String() string {
var s [2]float64
x.StoreArray(&s)
return sliceToString(s[:])
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Int8x16) HiToLo() Int8x16 {
var z Int8x16
return z.ToBits().ReshapeToUint64s().SetElem(0, x.ToBits().ReshapeToUint64s().GetElem(1)).ReshapeToUint8s().BitsToInt8()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Int16x8) HiToLo() Int16x8 {
var z Int16x8
return z.ToBits().ReshapeToUint64s().SetElem(0, x.ToBits().ReshapeToUint64s().GetElem(1)).ReshapeToUint16s().BitsToInt16()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Int32x4) HiToLo() Int32x4 {
var z Int32x4
return z.ToBits().ReshapeToUint64s().SetElem(0, x.ToBits().ReshapeToUint64s().GetElem(1)).ReshapeToUint32s().BitsToInt32()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Int64x2) HiToLo() Int64x2 {
var z Int64x2
return z.ToBits().SetElem(0, x.ToBits().GetElem(1)).BitsToInt64()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Uint8x16) HiToLo() Uint8x16 {
var z Uint8x16
return z.ReshapeToUint64s().SetElem(0, x.ReshapeToUint64s().GetElem(1)).ReshapeToUint8s()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Uint16x8) HiToLo() Uint16x8 {
var z Uint16x8
return z.ReshapeToUint64s().SetElem(0, x.ReshapeToUint64s().GetElem(1)).ReshapeToUint16s()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Uint32x4) HiToLo() Uint32x4 {
var z Uint32x4
return z.ReshapeToUint64s().SetElem(0, x.ReshapeToUint64s().GetElem(1)).ReshapeToUint32s()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Uint64x2) HiToLo() Uint64x2 {
var z Uint64x2
return z.SetElem(0, x.GetElem(1))
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Float32x4) HiToLo() Float32x4 {
var z Float32x4
return z.ToBits().ReshapeToUint64s().SetElem(0, x.ToBits().ReshapeToUint64s().GetElem(1)).ReshapeToUint32s().BitsToFloat32()
}
// HiToLo returns a vector with the upper 64 bits zeroed and the lower
// 64 bits replaced with the upper 64 bits of x.
func (x Float64x2) HiToLo() Float64x2 {
var z Float64x2
return z.ToBits().SetElem(0, x.ToBits().GetElem(1)).BitsToFloat64()
}
// ToMask returns a mask whose i'th element is set if x[i] is non-zero.
func (from Int8x16) ToMask() (to Mask8x16) {
return from.NotEqual(Int8x16{})
}
// ToMask returns a mask whose i'th element is set if x[i] is non-zero.
func (from Int16x8) ToMask() (to Mask16x8) {
return from.NotEqual(Int16x8{})
}
// ToMask returns a mask whose i'th element is set if x[i] is non-zero.
func (from Int32x4) ToMask() (to Mask32x4) {
return from.NotEqual(Int32x4{})
}
// ToMask returns a mask whose i'th element is set if x[i] is non-zero.
func (from Int64x2) ToMask() (to Mask64x2) {
return from.NotEqual(Int64x2{})
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Int8x16) RotateAllLeft(dist uint64) Int8x16 {
dist = dist & (8 - 1)
ndist := 8 - dist
return x.ToBits().ShiftAllLeft(dist).Or(x.ToBits().ShiftAllRight(ndist)).BitsToInt8()
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Int8x16) RotateAllRight(dist uint64) Int8x16 {
dist = dist & (8 - 1)
ndist := 8 - dist
return x.ToBits().ShiftAllLeft(ndist).Or(x.ToBits().ShiftAllRight(dist)).BitsToInt8()
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Int16x8) RotateAllLeft(dist uint64) Int16x8 {
dist = dist & (16 - 1)
ndist := 16 - dist
return x.ToBits().ShiftAllLeft(dist).Or(x.ToBits().ShiftAllRight(ndist)).BitsToInt16()
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Int16x8) RotateAllRight(dist uint64) Int16x8 {
dist = dist & (16 - 1)
ndist := 16 - dist
return x.ToBits().ShiftAllLeft(ndist).Or(x.ToBits().ShiftAllRight(dist)).BitsToInt16()
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Int32x4) RotateAllLeft(dist uint64) Int32x4 {
dist = dist & (32 - 1)
ndist := 32 - dist
return x.ToBits().ShiftAllLeft(dist).Or(x.ToBits().ShiftAllRight(ndist)).BitsToInt32()
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Int32x4) RotateAllRight(dist uint64) Int32x4 {
dist = dist & (32 - 1)
ndist := 32 - dist
return x.ToBits().ShiftAllLeft(ndist).Or(x.ToBits().ShiftAllRight(dist)).BitsToInt32()
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Int64x2) RotateAllLeft(dist uint64) Int64x2 {
dist = dist & (64 - 1)
ndist := 64 - dist
return x.ToBits().ShiftAllLeft(dist).Or(x.ToBits().ShiftAllRight(ndist)).BitsToInt64()
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Int64x2) RotateAllRight(dist uint64) Int64x2 {
dist = dist & (64 - 1)
ndist := 64 - dist
return x.ToBits().ShiftAllLeft(ndist).Or(x.ToBits().ShiftAllRight(dist)).BitsToInt64()
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Uint8x16) RotateAllLeft(dist uint64) Uint8x16 {
dist = dist & (8 - 1)
ndist := 8 - dist
return x.ShiftAllLeft(dist).Or(x.ShiftAllRight(ndist))
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Uint8x16) RotateAllRight(dist uint64) Uint8x16 {
dist = dist & (8 - 1)
ndist := 8 - dist
return x.ShiftAllLeft(ndist).Or(x.ShiftAllRight(dist))
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Uint16x8) RotateAllLeft(dist uint64) Uint16x8 {
dist = dist & (16 - 1)
ndist := 16 - dist
return x.ShiftAllLeft(dist).Or(x.ShiftAllRight(ndist))
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Uint16x8) RotateAllRight(dist uint64) Uint16x8 {
dist = dist & (16 - 1)
ndist := 16 - dist
return x.ShiftAllLeft(ndist).Or(x.ShiftAllRight(dist))
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Uint32x4) RotateAllLeft(dist uint64) Uint32x4 {
dist = dist & (32 - 1)
ndist := 32 - dist
return x.ShiftAllLeft(dist).Or(x.ShiftAllRight(ndist))
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Uint32x4) RotateAllRight(dist uint64) Uint32x4 {
dist = dist & (32 - 1)
ndist := 32 - dist
return x.ShiftAllLeft(ndist).Or(x.ShiftAllRight(dist))
}
// RotateAllLeft rotates all elements left by the specified amount
//
// Emulated
func (x Uint64x2) RotateAllLeft(dist uint64) Uint64x2 {
dist = dist & (64 - 1)
ndist := 64 - dist
return x.ShiftAllLeft(dist).Or(x.ShiftAllRight(ndist))
}
// RotateAllRight rotates all elements right by the specified amount
//
// Emulated
func (x Uint64x2) RotateAllRight(dist uint64) Uint64x2 {
dist = dist & (64 - 1)
ndist := 64 - dist
return x.ShiftAllLeft(ndist).Or(x.ShiftAllRight(dist))
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Int8x16) ReduceSum() int8 {
return x.reduceSum().GetElem(0)
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Int16x8) ReduceSum() int16 {
return x.reduceSum().GetElem(0)
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Int32x4) ReduceSum() int32 {
return x.reduceSum().GetElem(0)
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint8x16) ReduceSum() uint8 {
return x.reduceSum().GetElem(0)
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint16x8) ReduceSum() uint16 {
return x.reduceSum().GetElem(0)
}
// ReduceSum reduces x by summing all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint32x4) ReduceSum() uint32 {
return x.reduceSum().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int8x16) ReduceMax() int8 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int8x16) ReduceMin() int8 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int16x8) ReduceMax() int16 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int16x8) ReduceMin() int16 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int32x4) ReduceMax() int32 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Int32x4) ReduceMin() int32 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint8x16) ReduceMax() uint8 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint8x16) ReduceMin() uint8 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint16x8) ReduceMax() uint16 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint16x8) ReduceMin() uint16 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint32x4) ReduceMax() uint32 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Uint32x4) ReduceMin() uint32 {
return x.reduceMin().GetElem(0)
}
// ReduceMax reduces x by taking the maximum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Float32x4) ReduceMax() float32 {
return x.reduceMax().GetElem(0)
}
// ReduceMin reduces x by taking the minimum of all elements.
//
// Emulated, CPU Feature: NEON
func (x Float32x4) ReduceMin() float32 {
return x.reduceMin().GetElem(0)
}