blob: e159491b0a3665240a7040e116c885bc790d3f3c [file]
// Code generated by 'tmplgen'; DO NOT EDIT.
//go:build goexperiment.simd
package archsimd
// Masked returns x but with elements zeroed where mask is false.
func (x Int8x16) Masked(mask Mask8x16) Int8x16 {
im := mask.ToInt8x16()
return im.And(x)
}
// IfElse returns x but with elements set to y where mask is false.
func (x Int8x16) IfElse(mask Mask8x16, y Int8x16) Int8x16 {
return x.bitSelect(y, mask.ToInt8x16())
}
// Masked returns x but with elements zeroed where mask is false.
func (x Int16x8) Masked(mask Mask16x8) Int16x8 {
im := mask.ToInt16x8()
return im.And(x)
}
// IfElse returns x but with elements set to y where mask is false.
func (x Int16x8) IfElse(mask Mask16x8, y Int16x8) Int16x8 {
im := mask.ToInt16x8().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint16s().BitsToInt16()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Int32x4) Masked(mask Mask32x4) Int32x4 {
im := mask.ToInt32x4()
return im.And(x)
}
// IfElse returns x but with elements set to y where mask is false.
func (x Int32x4) IfElse(mask Mask32x4, y Int32x4) Int32x4 {
im := mask.ToInt32x4().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint32s().BitsToInt32()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Int64x2) Masked(mask Mask64x2) Int64x2 {
im := mask.ToInt64x2()
return im.And(x)
}
// IfElse returns x but with elements set to y where mask is false.
func (x Int64x2) IfElse(mask Mask64x2, y Int64x2) Int64x2 {
im := mask.ToInt64x2().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint64s().BitsToInt64()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Uint8x16) Masked(mask Mask8x16) Uint8x16 {
im := mask.ToInt8x16()
return im.And(x.BitsToInt8()).ToBits()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Uint8x16) IfElse(mask Mask8x16, y Uint8x16) Uint8x16 {
return x.BitsToInt8().bitSelect(y.BitsToInt8(), mask.ToInt8x16()).ToBits()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Uint16x8) Masked(mask Mask16x8) Uint16x8 {
im := mask.ToInt16x8()
return im.And(x.BitsToInt16()).ToBits()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Uint16x8) IfElse(mask Mask16x8, y Uint16x8) Uint16x8 {
im := mask.ToInt16x8().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ReshapeToUint8s().BitsToInt8()
iy := y.ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint16s()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Uint32x4) Masked(mask Mask32x4) Uint32x4 {
im := mask.ToInt32x4()
return im.And(x.BitsToInt32()).ToBits()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Uint32x4) IfElse(mask Mask32x4, y Uint32x4) Uint32x4 {
im := mask.ToInt32x4().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ReshapeToUint8s().BitsToInt8()
iy := y.ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint32s()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Uint64x2) Masked(mask Mask64x2) Uint64x2 {
im := mask.ToInt64x2()
return im.And(x.BitsToInt64()).ToBits()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Uint64x2) IfElse(mask Mask64x2, y Uint64x2) Uint64x2 {
im := mask.ToInt64x2().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ReshapeToUint8s().BitsToInt8()
iy := y.ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint64s()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Float32x4) Masked(mask Mask32x4) Float32x4 {
im := mask.ToInt32x4()
return im.And(x.ToBits().BitsToInt32()).ToBits().BitsToFloat32()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Float32x4) IfElse(mask Mask32x4, y Float32x4) Float32x4 {
im := mask.ToInt32x4().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint32s().BitsToFloat32()
}
// Masked returns x but with elements zeroed where mask is false.
func (x Float64x2) Masked(mask Mask64x2) Float64x2 {
im := mask.ToInt64x2()
return im.And(x.ToBits().BitsToInt64()).ToBits().BitsToFloat64()
}
// IfElse returns x but with elements set to y where mask is false.
func (x Float64x2) IfElse(mask Mask64x2, y Float64x2) Float64x2 {
im := mask.ToInt64x2().ToBits().ReshapeToUint8s().BitsToInt8()
ix := x.ToBits().ReshapeToUint8s().BitsToInt8()
iy := y.ToBits().ReshapeToUint8s().BitsToInt8()
return ix.bitSelect(iy, im).ToBits().ReshapeToUint64s().BitsToFloat64()
}
// String returns a string representation of SIMD mask x.
func (x Mask8x16) String() string {
var s [16]int8
x.ToInt8x16().Neg().StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD mask x.
func (x Mask16x8) String() string {
var s [8]int16
x.ToInt16x8().Neg().StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD mask x.
func (x Mask32x4) String() string {
var s [4]int32
x.ToInt32x4().Neg().StoreArray(&s)
return sliceToString(s[:])
}
// String returns a string representation of SIMD mask x.
func (x Mask64x2) String() string {
var s [2]int64
x.ToInt64x2().Neg().StoreArray(&s)
return sliceToString(s[:])
}