diff --git a/src/simd/archsimd/_gen/simdgen/godefs.go b/src/simd/archsimd/_gen/simdgen/godefs.go index 2c10377420..3ac74264e8 100644 --- a/src/simd/archsimd/_gen/simdgen/godefs.go +++ b/src/simd/archsimd/_gen/simdgen/godefs.go @@ -135,6 +135,19 @@ func (o *Operation) DecodeUnified(v *unify.Value) error { o.In = append(o.rawOperation.In, o.rawOperation.InVariant...) + // For down conversions, the high elements are zeroed if the result has more elements. + // TODO: we should encode this logic in the YAML file, instead of hardcoding it here. + if len(o.In) > 0 && len(o.Out) > 0 { + inLanes := o.In[0].Lanes + outLanes := o.Out[0].Lanes + if inLanes != nil && outLanes != nil && *inLanes < *outLanes { + if (strings.Contains(o.Go, "Saturate") || strings.Contains(o.Go, "Truncate")) && + !strings.HasSuffix(o.Go, "Concat") { + o.Documentation += "\n// Results are packed to low elements in the returned vector, its upper elements are zeroed." + } + } + } + return nil } diff --git a/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml b/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml index dd33284063..1e2a6a9b69 100644 --- a/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml +++ b/src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml @@ -44,124 +44,174 @@ // NAME converts element values to float64. # Int <-> Int conversions -- go: "(Extend|Saturate|Truncate)?ToInt8" +- go: "TruncateToInt8" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to int8. -- go: "(Extend|Saturate|Truncate)?ToInt16(Concat)?" + // NAME truncates element values to int8. +- go: "SaturateToInt8" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to int16. -- go: "(Extend|Saturate|Truncate)?ToInt32" + // NAME converts element values to int8 with signed saturation. +- go: "ExtendToInt16(Concat)?" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to int32. -- go: "(Extend|Saturate|Truncate)?ToInt64" + // NAME sign-extends element values to int16. +- go: "TruncateToInt16(Concat)?" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to int64. -- go: "(Extend|Saturate|Truncate)?ToUint8" + // NAME truncates element values to int16. +- go: "SaturateToInt16(Concat)?" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to uint8. -- go: "(Extend|Saturate|Truncate)?ToUint16(Concat)?" + // NAME converts element values to int16 with signed saturation. +- go: "ExtendToInt32" commutative: false regexpTag: "convert" documentation: !string |- - // NAME converts element values to uint16. -- go: "(Extend|Saturate|Truncate)?ToUint32" + // NAME sign-extends element values to int32. +- go: "TruncateToInt32" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME truncates element values to int32. +- go: "SaturateToInt32" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME converts element values to int32 with signed saturation. +- go: "ExtendToInt64" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME sign-extends element values to int64. +- go: "TruncateToUint8" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME truncates element values to uint8. +- go: "SaturateToUint8" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME converts element values to uint8 with unsigned saturation. +- go: "ExtendToUint16(Concat)?" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME zero-extends element values to uint16. +- go: "TruncateToUint16(Concat)?" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME truncates element values to uint16. +- go: "SaturateToUint16(Concat)?" + commutative: false + regexpTag: "convert" + documentation: !string |- + // NAME converts element values to uint16 with unsigned saturation. +- go: "ExtendToUint32" regexpTag: "convert" commutative: false documentation: !string |- - // NAME converts element values to uint32. -- go: "(Extend|Saturate|Truncate)?ToUint64" + // NAME zero-extends element values to uint32. +- go: "TruncateToUint32" regexpTag: "convert" commutative: false documentation: !string |- - // NAME converts element values to uint64. + // NAME truncates element values to uint32. +- go: "SaturateToUint32" + regexpTag: "convert" + commutative: false + documentation: !string |- + // NAME converts element values to uint32 with unsigned saturation. +- go: "ExtendToUint64" + regexpTag: "convert" + commutative: false + documentation: !string |- + // NAME zero-extends element values to uint64. # low-part only Int <-> Int conversions - go: ExtendLo8ToUint16x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to uint16. + // NAME zero-extends 8 lowest vector element values to uint16. - go: ExtendLo8ToInt16x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to int16. + // NAME sign-extends 8 lowest vector element values to int16. - go: ExtendLo4ToUint32x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to uint32. + // NAME zero-extends 4 lowest vector element values to uint32. - go: ExtendLo4ToInt32x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to int32. + // NAME sign-extends 4 lowest vector element values to int32. - go: ExtendLo2ToUint64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to uint64. + // NAME zero-extends 2 lowest vector element values to uint64. - go: ExtendLo2ToInt64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to int64. + // NAME sign-extends 2 lowest vector element values to int64. - go: ExtendLo2ToUint64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to uint64. + // NAME zero-extends 2 lowest vector element values to uint64. - go: ExtendLo4ToUint64x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to uint64. + // NAME zero-extends 4 lowest vector element values to uint64. - go: ExtendLo2ToInt64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to int64. + // NAME sign-extends 2 lowest vector element values to int64. - go: ExtendLo4ToInt64x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to int64. + // NAME sign-extends 4 lowest vector element values to int64. - go: ExtendLo4ToUint32x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to uint32. + // NAME zero-extends 4 lowest vector element values to uint32. - go: ExtendLo8ToUint32x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to uint32. + // NAME zero-extends 8 lowest vector element values to uint32. - go: ExtendLo4ToInt32x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to int32. + // NAME sign-extends 4 lowest vector element values to int32. - go: ExtendLo8ToInt32x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to int32. + // NAME sign-extends 8 lowest vector element values to int32. - go: ExtendLo2ToUint64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to uint64. + // NAME zero-extends 2 lowest vector element values to uint64. - go: ExtendLo4ToUint64x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to uint64. + // NAME zero-extends 4 lowest vector element values to uint64. - go: ExtendLo8ToUint64x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to uint64. + // NAME zero-extends 8 lowest vector element values to uint64. - go: ExtendLo2ToInt64x2 commutative: false documentation: !string |- - // NAME converts 2 lowest vector element values to int64. + // NAME sign-extends 2 lowest vector element values to int64. - go: ExtendLo4ToInt64x4 commutative: false documentation: !string |- - // NAME converts 4 lowest vector element values to int64. + // NAME sign-extends 4 lowest vector element values to int64. - go: ExtendLo8ToInt64x8 commutative: false documentation: !string |- - // NAME converts 8 lowest vector element values to int64. \ No newline at end of file + // NAME sign-extends 8 lowest vector element values to int64. diff --git a/src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml b/src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml index af058124fb..64cd4cb24e 100644 --- a/src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml +++ b/src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml @@ -138,9 +138,6 @@ # Widening integer conversions. # uint8 -> uint16 - go: ExtendToUint16 - addDoc: &zeroExtendDoc - !string |- - // The result vector's elements are zero-extended. regexpTag: "convert" asm: "VPMOVZXBW" in: @@ -156,7 +153,6 @@ - go: ExtendToUint16 regexpTag: "convert" asm: "VPMOVZXBW" - addDoc: *zeroExtendDoc in: - &u8x32 base: uint @@ -171,9 +167,6 @@ - go: ExtendToInt16 regexpTag: "convert" asm: "VPMOVSXBW" - addDoc: &signExtendDoc - !string |- - // The result vector's elements are sign-extended. in: - &i8x16 base: int @@ -187,7 +180,6 @@ - go: ExtendToInt16 regexpTag: "convert" asm: "VPMOVSXBW" - addDoc: *signExtendDoc in: - &i8x32 base: int @@ -202,7 +194,6 @@ - go: ExtendToUint32 regexpTag: "convert" asm: "VPMOVZXWD" - addDoc: *zeroExtendDoc in: - &u16x8 base: uint @@ -216,7 +207,6 @@ - go: ExtendToUint32 regexpTag: "convert" asm: "VPMOVZXWD" - addDoc: *zeroExtendDoc in: - *u16x16 out: @@ -228,7 +218,6 @@ - go: ExtendToInt32 regexpTag: "convert" asm: "VPMOVSXWD" - addDoc: *signExtendDoc in: - &i16x8 base: int @@ -242,7 +231,6 @@ - go: ExtendToInt32 regexpTag: "convert" asm: "VPMOVSXWD" - addDoc: *signExtendDoc in: - *i16x16 out: @@ -254,7 +242,6 @@ - go: ExtendToUint64 regexpTag: "convert" asm: "VPMOVZXDQ" - addDoc: *zeroExtendDoc in: - &u32x4 base: uint @@ -268,7 +255,6 @@ - go: ExtendToUint64 regexpTag: "convert" asm: "VPMOVZXDQ" - addDoc: *zeroExtendDoc in: - *u32x8 out: @@ -280,7 +266,6 @@ - go: ExtendToInt64 regexpTag: "convert" asm: "VPMOVSXDQ" - addDoc: *signExtendDoc in: - &i32x4 base: int @@ -294,7 +279,6 @@ - go: ExtendToInt64 regexpTag: "convert" asm: "VPMOVSXDQ" - addDoc: *signExtendDoc in: - *i32x8 out: @@ -306,7 +290,6 @@ - go: ExtendToUint64 regexpTag: "convert" asm: "VPMOVZXWQ" - addDoc: *zeroExtendDoc in: - *u16x8 out: @@ -315,7 +298,6 @@ - go: ExtendToInt64 regexpTag: "convert" asm: "VPMOVSXWQ" - addDoc: *signExtendDoc in: - *i16x8 out: @@ -324,7 +306,6 @@ - go: ExtendToUint32 regexpTag: "convert" asm: "VPMOVZXBD" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -333,7 +314,6 @@ - go: ExtendToInt32 regexpTag: "convert" asm: "VPMOVSXBD" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -342,10 +322,6 @@ - go: TruncateToInt8 regexpTag: "convert" asm: "VPMOV[WDQ]B" - addDoc: &truncDocZeroUpper - !string |- - // Conversion is done with truncation on the vector elements. - // Results are packed to low elements in the returned vector, its upper elements are zero-cleared. in: - base: int out: @@ -354,7 +330,6 @@ - go: TruncateToUint8 regexpTag: "convert" asm: "VPMOV[WDQ]B" - addDoc: *truncDocZeroUpper in: - base: uint out: @@ -363,9 +338,6 @@ - go: TruncateToInt8 regexpTag: "convert" asm: "VPMOV[WDQ]B" - addDoc: &truncDoc - !string |- - // Conversion is done with truncation on the vector elements. in: - base: int out: @@ -374,7 +346,6 @@ - go: TruncateToUint8 regexpTag: "convert" asm: "VPMOV[WDQ]B" - addDoc: *truncDoc in: - base: uint out: @@ -383,7 +354,6 @@ - go: TruncateToInt16 regexpTag: "convert" asm: "VPMOV[DQ]W" - addDoc: *truncDoc in: - base: int out: @@ -391,7 +361,6 @@ - go: TruncateToUint16 regexpTag: "convert" asm: "VPMOV[DQ]W" - addDoc: *truncDoc in: - base: uint out: @@ -399,7 +368,6 @@ - go: TruncateToInt32 regexpTag: "convert" asm: "VPMOVQD" - addDoc: *truncDoc in: - base: int out: @@ -407,7 +375,6 @@ - go: TruncateToUint32 regexpTag: "convert" asm: "VPMOVQD" - addDoc: *truncDoc in: - base: uint out: @@ -416,10 +383,6 @@ - go: SaturateToInt8 regexpTag: "convert" asm: "VPMOVS[WDQ]B" - addDoc: &satDocZeroUpper - !string |- - // Conversion is done with saturation on the vector elements. - // Results are packed to low elements in the returned vector, its upper elements are zero-cleared. in: - base: int out: @@ -428,7 +391,6 @@ - go: SaturateToUint8 regexpTag: "convert" asm: "VPMOVS[WDQ]B" - addDoc: *satDocZeroUpper in: - base: int out: @@ -437,9 +399,6 @@ - go: SaturateToInt8 regexpTag: "convert" asm: "VPMOVS[WDQ]B" - addDoc: &satDoc - !string |- - // Conversion is done with saturation on the vector elements. in: - base: int out: @@ -448,7 +407,6 @@ - go: SaturateToUint8 regexpTag: "convert" asm: "VPMOVUS[WDQ]B" - addDoc: *satDoc in: - base: uint out: @@ -457,7 +415,6 @@ - go: SaturateToInt16 regexpTag: "convert" asm: "VPMOVS[DQ]W" - addDoc: *satDoc in: - base: int out: @@ -465,7 +422,6 @@ - go: SaturateToUint16 regexpTag: "convert" asm: "VPMOVUS[DQ]W" - addDoc: *satDoc in: - base: uint out: @@ -473,7 +429,6 @@ - go: SaturateToInt32 regexpTag: "convert" asm: "VPMOVSQD" - addDoc: *satDoc in: - base: int out: @@ -481,7 +436,6 @@ - go: SaturateToUint32 regexpTag: "convert" asm: "VPMOVUSQD" - addDoc: *satDoc in: - base: uint out: @@ -495,7 +449,6 @@ // With each 128-bit as a group: // The converted group from the first input vector will be packed to the lower part of the result vector, // the converted group from the second input vector will be packed to the upper part of the result vector. - // Conversion is done with saturation on the vector elements. in: - base: int - base: int @@ -504,7 +457,6 @@ - go: SaturateToUint16Concat regexpTag: "convert" asm: "VPACKUSDW" - addDoc: *satDocConcat in: - base: uint - base: uint @@ -516,7 +468,6 @@ - go: ExtendLo8ToUint16x8 regexpTag: "convert" asm: "VPMOVZXBW" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -525,7 +476,6 @@ - go: ExtendLo8ToInt16x8 regexpTag: "convert" asm: "VPMOVSXBW" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -534,7 +484,6 @@ - go: ExtendLo4ToUint32x4 regexpTag: "convert" asm: "VPMOVZXWD" - addDoc: *zeroExtendDoc in: - *u16x8 out: @@ -543,7 +492,6 @@ - go: ExtendLo4ToInt32x4 regexpTag: "convert" asm: "VPMOVSXWD" - addDoc: *signExtendDoc in: - *i16x8 out: @@ -552,7 +500,6 @@ - go: ExtendLo2ToUint64x2 regexpTag: "convert" asm: "VPMOVZXDQ" - addDoc: *zeroExtendDoc in: - *u32x4 out: @@ -564,7 +511,6 @@ - go: ExtendLo2ToInt64x2 regexpTag: "convert" asm: "VPMOVSXDQ" - addDoc: *signExtendDoc in: - *i32x4 out: @@ -576,7 +522,6 @@ - go: ExtendLo2ToUint64x2 regexpTag: "convert" asm: "VPMOVZXWQ" - addDoc: *zeroExtendDoc in: - *u16x8 out: @@ -584,7 +529,6 @@ - go: ExtendLo4ToUint64x4 regexpTag: "convert" asm: "VPMOVZXWQ" - addDoc: *zeroExtendDoc in: - *u16x8 out: @@ -593,7 +537,6 @@ - go: ExtendLo2ToInt64x2 regexpTag: "convert" asm: "VPMOVSXWQ" - addDoc: *signExtendDoc in: - *i16x8 out: @@ -601,7 +544,6 @@ - go: ExtendLo4ToInt64x4 regexpTag: "convert" asm: "VPMOVSXWQ" - addDoc: *signExtendDoc in: - *i16x8 out: @@ -610,7 +552,6 @@ - go: ExtendLo4ToUint32x4 regexpTag: "convert" asm: "VPMOVZXBD" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -618,7 +559,6 @@ - go: ExtendLo8ToUint32x8 regexpTag: "convert" asm: "VPMOVZXBD" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -627,7 +567,6 @@ - go: ExtendLo4ToInt32x4 regexpTag: "convert" asm: "VPMOVSXBD" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -635,7 +574,6 @@ - go: ExtendLo8ToInt32x8 regexpTag: "convert" asm: "VPMOVSXBD" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -644,7 +582,6 @@ - go: ExtendLo2ToUint64x2 regexpTag: "convert" asm: "VPMOVZXBQ" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -652,7 +589,6 @@ - go: ExtendLo4ToUint64x4 regexpTag: "convert" asm: "VPMOVZXBQ" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -660,7 +596,6 @@ - go: ExtendLo8ToUint64x8 regexpTag: "convert" asm: "VPMOVZXBQ" - addDoc: *zeroExtendDoc in: - *u8x16 out: @@ -669,7 +604,6 @@ - go: ExtendLo2ToInt64x2 regexpTag: "convert" asm: "VPMOVSXBQ" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -677,7 +611,6 @@ - go: ExtendLo4ToInt64x4 regexpTag: "convert" asm: "VPMOVSXBQ" - addDoc: *signExtendDoc in: - *i8x16 out: @@ -685,8 +618,7 @@ - go: ExtendLo8ToInt64x8 regexpTag: "convert" asm: "VPMOVSXBQ" - addDoc: *signExtendDoc in: - *i8x16 out: - - *i64x8 \ No newline at end of file + - *i64x8 diff --git a/src/simd/archsimd/ops_amd64.go b/src/simd/archsimd/ops_amd64.go index d01f340d25..2d596ac5f3 100644 --- a/src/simd/archsimd/ops_amd64.go +++ b/src/simd/archsimd/ops_amd64.go @@ -2356,252 +2356,216 @@ func (x Uint64x8) Expand(mask Mask64x8) Uint64x8 /* ExtendLo2ToInt64x2 */ -// ExtendLo2ToInt64x2 converts 2 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo2ToInt64x2 sign-extends 2 lowest vector element values to int64. // // Asm: VPMOVSXBQ, CPU Feature: AVX func (x Int8x16) ExtendLo2ToInt64x2() Int64x2 -// ExtendLo2ToInt64x2 converts 2 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo2ToInt64x2 sign-extends 2 lowest vector element values to int64. // // Asm: VPMOVSXWQ, CPU Feature: AVX func (x Int16x8) ExtendLo2ToInt64x2() Int64x2 -// ExtendLo2ToInt64x2 converts 2 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo2ToInt64x2 sign-extends 2 lowest vector element values to int64. // // Asm: VPMOVSXDQ, CPU Feature: AVX func (x Int32x4) ExtendLo2ToInt64x2() Int64x2 /* ExtendLo2ToUint64x2 */ -// ExtendLo2ToUint64x2 converts 2 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo2ToUint64x2 zero-extends 2 lowest vector element values to uint64. // // Asm: VPMOVZXBQ, CPU Feature: AVX func (x Uint8x16) ExtendLo2ToUint64x2() Uint64x2 -// ExtendLo2ToUint64x2 converts 2 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo2ToUint64x2 zero-extends 2 lowest vector element values to uint64. // // Asm: VPMOVZXWQ, CPU Feature: AVX func (x Uint16x8) ExtendLo2ToUint64x2() Uint64x2 -// ExtendLo2ToUint64x2 converts 2 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo2ToUint64x2 zero-extends 2 lowest vector element values to uint64. // // Asm: VPMOVZXDQ, CPU Feature: AVX func (x Uint32x4) ExtendLo2ToUint64x2() Uint64x2 /* ExtendLo4ToInt32x4 */ -// ExtendLo4ToInt32x4 converts 4 lowest vector element values to int32. -// The result vector's elements are sign-extended. +// ExtendLo4ToInt32x4 sign-extends 4 lowest vector element values to int32. // // Asm: VPMOVSXBD, CPU Feature: AVX func (x Int8x16) ExtendLo4ToInt32x4() Int32x4 -// ExtendLo4ToInt32x4 converts 4 lowest vector element values to int32. -// The result vector's elements are sign-extended. +// ExtendLo4ToInt32x4 sign-extends 4 lowest vector element values to int32. // // Asm: VPMOVSXWD, CPU Feature: AVX func (x Int16x8) ExtendLo4ToInt32x4() Int32x4 /* ExtendLo4ToInt64x4 */ -// ExtendLo4ToInt64x4 converts 4 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo4ToInt64x4 sign-extends 4 lowest vector element values to int64. // // Asm: VPMOVSXBQ, CPU Feature: AVX2 func (x Int8x16) ExtendLo4ToInt64x4() Int64x4 -// ExtendLo4ToInt64x4 converts 4 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo4ToInt64x4 sign-extends 4 lowest vector element values to int64. // // Asm: VPMOVSXWQ, CPU Feature: AVX2 func (x Int16x8) ExtendLo4ToInt64x4() Int64x4 /* ExtendLo4ToUint32x4 */ -// ExtendLo4ToUint32x4 converts 4 lowest vector element values to uint32. -// The result vector's elements are zero-extended. +// ExtendLo4ToUint32x4 zero-extends 4 lowest vector element values to uint32. // // Asm: VPMOVZXBD, CPU Feature: AVX func (x Uint8x16) ExtendLo4ToUint32x4() Uint32x4 -// ExtendLo4ToUint32x4 converts 4 lowest vector element values to uint32. -// The result vector's elements are zero-extended. +// ExtendLo4ToUint32x4 zero-extends 4 lowest vector element values to uint32. // // Asm: VPMOVZXWD, CPU Feature: AVX func (x Uint16x8) ExtendLo4ToUint32x4() Uint32x4 /* ExtendLo4ToUint64x4 */ -// ExtendLo4ToUint64x4 converts 4 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo4ToUint64x4 zero-extends 4 lowest vector element values to uint64. // // Asm: VPMOVZXBQ, CPU Feature: AVX2 func (x Uint8x16) ExtendLo4ToUint64x4() Uint64x4 -// ExtendLo4ToUint64x4 converts 4 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo4ToUint64x4 zero-extends 4 lowest vector element values to uint64. // // Asm: VPMOVZXWQ, CPU Feature: AVX2 func (x Uint16x8) ExtendLo4ToUint64x4() Uint64x4 /* ExtendLo8ToInt16x8 */ -// ExtendLo8ToInt16x8 converts 8 lowest vector element values to int16. -// The result vector's elements are sign-extended. +// ExtendLo8ToInt16x8 sign-extends 8 lowest vector element values to int16. // // Asm: VPMOVSXBW, CPU Feature: AVX func (x Int8x16) ExtendLo8ToInt16x8() Int16x8 /* ExtendLo8ToInt32x8 */ -// ExtendLo8ToInt32x8 converts 8 lowest vector element values to int32. -// The result vector's elements are sign-extended. +// ExtendLo8ToInt32x8 sign-extends 8 lowest vector element values to int32. // // Asm: VPMOVSXBD, CPU Feature: AVX2 func (x Int8x16) ExtendLo8ToInt32x8() Int32x8 /* ExtendLo8ToInt64x8 */ -// ExtendLo8ToInt64x8 converts 8 lowest vector element values to int64. -// The result vector's elements are sign-extended. +// ExtendLo8ToInt64x8 sign-extends 8 lowest vector element values to int64. // // Asm: VPMOVSXBQ, CPU Feature: AVX512 func (x Int8x16) ExtendLo8ToInt64x8() Int64x8 /* ExtendLo8ToUint16x8 */ -// ExtendLo8ToUint16x8 converts 8 lowest vector element values to uint16. -// The result vector's elements are zero-extended. +// ExtendLo8ToUint16x8 zero-extends 8 lowest vector element values to uint16. // // Asm: VPMOVZXBW, CPU Feature: AVX func (x Uint8x16) ExtendLo8ToUint16x8() Uint16x8 /* ExtendLo8ToUint32x8 */ -// ExtendLo8ToUint32x8 converts 8 lowest vector element values to uint32. -// The result vector's elements are zero-extended. +// ExtendLo8ToUint32x8 zero-extends 8 lowest vector element values to uint32. // // Asm: VPMOVZXBD, CPU Feature: AVX2 func (x Uint8x16) ExtendLo8ToUint32x8() Uint32x8 /* ExtendLo8ToUint64x8 */ -// ExtendLo8ToUint64x8 converts 8 lowest vector element values to uint64. -// The result vector's elements are zero-extended. +// ExtendLo8ToUint64x8 zero-extends 8 lowest vector element values to uint64. // // Asm: VPMOVZXBQ, CPU Feature: AVX512 func (x Uint8x16) ExtendLo8ToUint64x8() Uint64x8 /* ExtendToInt16 */ -// ExtendToInt16 converts element values to int16. -// The result vector's elements are sign-extended. +// ExtendToInt16 sign-extends element values to int16. // // Asm: VPMOVSXBW, CPU Feature: AVX2 func (x Int8x16) ExtendToInt16() Int16x16 -// ExtendToInt16 converts element values to int16. -// The result vector's elements are sign-extended. +// ExtendToInt16 sign-extends element values to int16. // // Asm: VPMOVSXBW, CPU Feature: AVX512 func (x Int8x32) ExtendToInt16() Int16x32 /* ExtendToInt32 */ -// ExtendToInt32 converts element values to int32. -// The result vector's elements are sign-extended. +// ExtendToInt32 sign-extends element values to int32. // // Asm: VPMOVSXBD, CPU Feature: AVX512 func (x Int8x16) ExtendToInt32() Int32x16 -// ExtendToInt32 converts element values to int32. -// The result vector's elements are sign-extended. +// ExtendToInt32 sign-extends element values to int32. // // Asm: VPMOVSXWD, CPU Feature: AVX2 func (x Int16x8) ExtendToInt32() Int32x8 -// ExtendToInt32 converts element values to int32. -// The result vector's elements are sign-extended. +// ExtendToInt32 sign-extends element values to int32. // // Asm: VPMOVSXWD, CPU Feature: AVX512 func (x Int16x16) ExtendToInt32() Int32x16 /* ExtendToInt64 */ -// ExtendToInt64 converts element values to int64. -// The result vector's elements are sign-extended. +// ExtendToInt64 sign-extends element values to int64. // // Asm: VPMOVSXWQ, CPU Feature: AVX512 func (x Int16x8) ExtendToInt64() Int64x8 -// ExtendToInt64 converts element values to int64. -// The result vector's elements are sign-extended. +// ExtendToInt64 sign-extends element values to int64. // // Asm: VPMOVSXDQ, CPU Feature: AVX2 func (x Int32x4) ExtendToInt64() Int64x4 -// ExtendToInt64 converts element values to int64. -// The result vector's elements are sign-extended. +// ExtendToInt64 sign-extends element values to int64. // // Asm: VPMOVSXDQ, CPU Feature: AVX512 func (x Int32x8) ExtendToInt64() Int64x8 /* ExtendToUint16 */ -// ExtendToUint16 converts element values to uint16. -// The result vector's elements are zero-extended. +// ExtendToUint16 zero-extends element values to uint16. // // Asm: VPMOVZXBW, CPU Feature: AVX2 func (x Uint8x16) ExtendToUint16() Uint16x16 -// ExtendToUint16 converts element values to uint16. -// The result vector's elements are zero-extended. +// ExtendToUint16 zero-extends element values to uint16. // // Asm: VPMOVZXBW, CPU Feature: AVX512 func (x Uint8x32) ExtendToUint16() Uint16x32 /* ExtendToUint32 */ -// ExtendToUint32 converts element values to uint32. -// The result vector's elements are zero-extended. +// ExtendToUint32 zero-extends element values to uint32. // // Asm: VPMOVZXBD, CPU Feature: AVX512 func (x Uint8x16) ExtendToUint32() Uint32x16 -// ExtendToUint32 converts element values to uint32. -// The result vector's elements are zero-extended. +// ExtendToUint32 zero-extends element values to uint32. // // Asm: VPMOVZXWD, CPU Feature: AVX2 func (x Uint16x8) ExtendToUint32() Uint32x8 -// ExtendToUint32 converts element values to uint32. -// The result vector's elements are zero-extended. +// ExtendToUint32 zero-extends element values to uint32. // // Asm: VPMOVZXWD, CPU Feature: AVX512 func (x Uint16x16) ExtendToUint32() Uint32x16 /* ExtendToUint64 */ -// ExtendToUint64 converts element values to uint64. -// The result vector's elements are zero-extended. +// ExtendToUint64 zero-extends element values to uint64. // // Asm: VPMOVZXWQ, CPU Feature: AVX512 func (x Uint16x8) ExtendToUint64() Uint64x8 -// ExtendToUint64 converts element values to uint64. -// The result vector's elements are zero-extended. +// ExtendToUint64 zero-extends element values to uint64. // // Asm: VPMOVZXDQ, CPU Feature: AVX2 func (x Uint32x4) ExtendToUint64() Uint64x4 -// ExtendToUint64 converts element values to uint64. -// The result vector's elements are zero-extended. +// ExtendToUint64 zero-extends element values to uint64. // // Asm: VPMOVZXDQ, CPU Feature: AVX512 func (x Uint32x8) ExtendToUint64() Uint64x8 @@ -5365,302 +5329,255 @@ func (x Uint32x4) SHA256TwoRounds(y Uint32x4, z Uint32x4) Uint32x4 /* SaturateToInt8 */ -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSWB, CPU Feature: AVX512 func (x Int16x8) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. // // Asm: VPMOVSWB, CPU Feature: AVX512 func (x Int16x16) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. +// SaturateToInt8 converts element values to int8 with signed saturation. // // Asm: VPMOVSWB, CPU Feature: AVX512 func (x Int16x32) SaturateToInt8() Int8x32 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x4) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x8) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x16) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x2) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x4) SaturateToInt8() Int8x16 -// SaturateToInt8 converts element values to int8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToInt8 converts element values to int8 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x8) SaturateToInt8() Int8x16 /* SaturateToInt16 */ -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSDW, CPU Feature: AVX512 func (x Int32x4) SaturateToInt16() Int16x8 -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. // // Asm: VPMOVSDW, CPU Feature: AVX512 func (x Int32x8) SaturateToInt16() Int16x8 -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. // // Asm: VPMOVSDW, CPU Feature: AVX512 func (x Int32x16) SaturateToInt16() Int16x16 -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQW, CPU Feature: AVX512 func (x Int64x2) SaturateToInt16() Int16x8 -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQW, CPU Feature: AVX512 func (x Int64x4) SaturateToInt16() Int16x8 -// SaturateToInt16 converts element values to int16. -// Conversion is done with saturation on the vector elements. +// SaturateToInt16 converts element values to int16 with signed saturation. // // Asm: VPMOVSQW, CPU Feature: AVX512 func (x Int64x8) SaturateToInt16() Int16x8 /* SaturateToInt16Concat */ -// SaturateToInt16Concat converts element values to int16. +// SaturateToInt16Concat converts element values to int16 with signed saturation. // With each 128-bit as a group: // The converted group from the first input vector will be packed to the lower part of the result vector, // the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. // // Asm: VPACKSSDW, CPU Feature: AVX func (x Int32x4) SaturateToInt16Concat(y Int32x4) Int16x8 -// SaturateToInt16Concat converts element values to int16. +// SaturateToInt16Concat converts element values to int16 with signed saturation. // With each 128-bit as a group: // The converted group from the first input vector will be packed to the lower part of the result vector, // the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. // // Asm: VPACKSSDW, CPU Feature: AVX2 func (x Int32x8) SaturateToInt16Concat(y Int32x8) Int16x16 -// SaturateToInt16Concat converts element values to int16. +// SaturateToInt16Concat converts element values to int16 with signed saturation. // With each 128-bit as a group: // The converted group from the first input vector will be packed to the lower part of the result vector, // the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. // // Asm: VPACKSSDW, CPU Feature: AVX512 func (x Int32x16) SaturateToInt16Concat(y Int32x16) Int16x32 /* SaturateToInt32 */ -// SaturateToInt32 converts element values to int32. -// Conversion is done with saturation on the vector elements. +// SaturateToInt32 converts element values to int32 with signed saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQD, CPU Feature: AVX512 func (x Int64x2) SaturateToInt32() Int32x4 -// SaturateToInt32 converts element values to int32. -// Conversion is done with saturation on the vector elements. +// SaturateToInt32 converts element values to int32 with signed saturation. // // Asm: VPMOVSQD, CPU Feature: AVX512 func (x Int64x4) SaturateToInt32() Int32x4 -// SaturateToInt32 converts element values to int32. -// Conversion is done with saturation on the vector elements. +// SaturateToInt32 converts element values to int32 with signed saturation. // // Asm: VPMOVSQD, CPU Feature: AVX512 func (x Int64x8) SaturateToInt32() Int32x8 /* SaturateToUint8 */ -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSWB, CPU Feature: AVX512 func (x Int16x8) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. // // Asm: VPMOVSWB, CPU Feature: AVX512 func (x Int16x16) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x4) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x8) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. // // Asm: VPMOVSDB, CPU Feature: AVX512 func (x Int32x16) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x2) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x4) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVSQB, CPU Feature: AVX512 func (x Int64x8) SaturateToUint8() Int8x16 -// SaturateToUint8 converts element values to uint8. -// Conversion is done with saturation on the vector elements. +// SaturateToUint8 converts element values to uint8 with unsigned saturation. // // Asm: VPMOVUSWB, CPU Feature: AVX512 func (x Uint16x32) SaturateToUint8() Uint8x32 /* SaturateToUint16 */ -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVUSDW, CPU Feature: AVX512 func (x Uint32x4) SaturateToUint16() Uint16x8 -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. // // Asm: VPMOVUSDW, CPU Feature: AVX512 func (x Uint32x8) SaturateToUint16() Uint16x8 -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. // // Asm: VPMOVUSDW, CPU Feature: AVX512 func (x Uint32x16) SaturateToUint16() Uint16x16 -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVUSQW, CPU Feature: AVX512 func (x Uint64x2) SaturateToUint16() Uint16x8 -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVUSQW, CPU Feature: AVX512 func (x Uint64x4) SaturateToUint16() Uint16x8 -// SaturateToUint16 converts element values to uint16. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16 converts element values to uint16 with unsigned saturation. // // Asm: VPMOVUSQW, CPU Feature: AVX512 func (x Uint64x8) SaturateToUint16() Uint16x8 /* SaturateToUint16Concat */ -// SaturateToUint16Concat converts element values to uint16. -// With each 128-bit as a group: -// The converted group from the first input vector will be packed to the lower part of the result vector, -// the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16Concat converts element values to uint16 with unsigned saturation. // // Asm: VPACKUSDW, CPU Feature: AVX func (x Uint32x4) SaturateToUint16Concat(y Uint32x4) Uint16x8 -// SaturateToUint16Concat converts element values to uint16. -// With each 128-bit as a group: -// The converted group from the first input vector will be packed to the lower part of the result vector, -// the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16Concat converts element values to uint16 with unsigned saturation. // // Asm: VPACKUSDW, CPU Feature: AVX2 func (x Uint32x8) SaturateToUint16Concat(y Uint32x8) Uint16x16 -// SaturateToUint16Concat converts element values to uint16. -// With each 128-bit as a group: -// The converted group from the first input vector will be packed to the lower part of the result vector, -// the converted group from the second input vector will be packed to the upper part of the result vector. -// Conversion is done with saturation on the vector elements. +// SaturateToUint16Concat converts element values to uint16 with unsigned saturation. // // Asm: VPACKUSDW, CPU Feature: AVX512 func (x Uint32x16) SaturateToUint16Concat(y Uint32x16) Uint16x32 /* SaturateToUint32 */ -// SaturateToUint32 converts element values to uint32. -// Conversion is done with saturation on the vector elements. +// SaturateToUint32 converts element values to uint32 with unsigned saturation. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVUSQD, CPU Feature: AVX512 func (x Uint64x2) SaturateToUint32() Uint32x4 -// SaturateToUint32 converts element values to uint32. -// Conversion is done with saturation on the vector elements. +// SaturateToUint32 converts element values to uint32 with unsigned saturation. // // Asm: VPMOVUSQD, CPU Feature: AVX512 func (x Uint64x4) SaturateToUint32() Uint32x4 -// SaturateToUint32 converts element values to uint32. -// Conversion is done with saturation on the vector elements. +// SaturateToUint32 converts element values to uint32 with unsigned saturation. // // Asm: VPMOVUSQD, CPU Feature: AVX512 func (x Uint64x8) SaturateToUint32() Uint32x8 @@ -7478,244 +7395,212 @@ func (x Float64x8) TruncScaledResidue(prec uint8) Float64x8 /* TruncateToInt8 */ -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Int16x8) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Int16x16) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. +// TruncateToInt8 truncates element values to int8. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Int16x32) TruncateToInt8() Int8x32 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Int32x4) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Int32x8) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Int32x16) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Int64x2) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Int64x4) TruncateToInt8() Int8x16 -// TruncateToInt8 converts element values to int8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToInt8 truncates element values to int8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Int64x8) TruncateToInt8() Int8x16 /* TruncateToInt16 */ -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Int32x4) TruncateToInt16() Int16x8 -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Int32x8) TruncateToInt16() Int16x8 -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Int32x16) TruncateToInt16() Int16x16 -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Int64x2) TruncateToInt16() Int16x8 -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Int64x4) TruncateToInt16() Int16x8 -// TruncateToInt16 converts element values to int16. -// Conversion is done with truncation on the vector elements. +// TruncateToInt16 truncates element values to int16. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Int64x8) TruncateToInt16() Int16x8 /* TruncateToInt32 */ -// TruncateToInt32 converts element values to int32. -// Conversion is done with truncation on the vector elements. +// TruncateToInt32 truncates element values to int32. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Int64x2) TruncateToInt32() Int32x4 -// TruncateToInt32 converts element values to int32. -// Conversion is done with truncation on the vector elements. +// TruncateToInt32 truncates element values to int32. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Int64x4) TruncateToInt32() Int32x4 -// TruncateToInt32 converts element values to int32. -// Conversion is done with truncation on the vector elements. +// TruncateToInt32 truncates element values to int32. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Int64x8) TruncateToInt32() Int32x8 /* TruncateToUint8 */ -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Uint16x8) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Uint16x16) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. +// TruncateToUint8 truncates element values to uint8. // // Asm: VPMOVWB, CPU Feature: AVX512 func (x Uint16x32) TruncateToUint8() Uint8x32 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Uint32x4) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Uint32x8) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. // // Asm: VPMOVDB, CPU Feature: AVX512 func (x Uint32x16) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Uint64x2) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Uint64x4) TruncateToUint8() Uint8x16 -// TruncateToUint8 converts element values to uint8. -// Conversion is done with truncation on the vector elements. -// Results are packed to low elements in the returned vector, its upper elements are zero-cleared. +// TruncateToUint8 truncates element values to uint8. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQB, CPU Feature: AVX512 func (x Uint64x8) TruncateToUint8() Uint8x16 /* TruncateToUint16 */ -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Uint32x4) TruncateToUint16() Uint16x8 -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Uint32x8) TruncateToUint16() Uint16x8 -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. // // Asm: VPMOVDW, CPU Feature: AVX512 func (x Uint32x16) TruncateToUint16() Uint16x16 -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Uint64x2) TruncateToUint16() Uint16x8 -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Uint64x4) TruncateToUint16() Uint16x8 -// TruncateToUint16 converts element values to uint16. -// Conversion is done with truncation on the vector elements. +// TruncateToUint16 truncates element values to uint16. // // Asm: VPMOVQW, CPU Feature: AVX512 func (x Uint64x8) TruncateToUint16() Uint16x8 /* TruncateToUint32 */ -// TruncateToUint32 converts element values to uint32. -// Conversion is done with truncation on the vector elements. +// TruncateToUint32 truncates element values to uint32. +// Results are packed to low elements in the returned vector, its upper elements are zeroed. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Uint64x2) TruncateToUint32() Uint32x4 -// TruncateToUint32 converts element values to uint32. -// Conversion is done with truncation on the vector elements. +// TruncateToUint32 truncates element values to uint32. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Uint64x4) TruncateToUint32() Uint32x4 -// TruncateToUint32 converts element values to uint32. -// Conversion is done with truncation on the vector elements. +// TruncateToUint32 truncates element values to uint32. // // Asm: VPMOVQD, CPU Feature: AVX512 func (x Uint64x8) TruncateToUint32() Uint32x8