| // 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[:]) |
| } |