// 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) }