simd/archsimd: reword documentation for conversion ops

Use more compact wording for extension, truncation, and
saturation. Say that we pack the results to the low elements and
zero the high elements if and only if the result has more elements.

Change-Id: Iae98d3c6ea6b5b5fa0acd548471e8d6c70a26d2d
Reviewed-on: https://go-review.googlesource.com/c/go/+/730940
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Cherry Mui 2025-12-17 14:32:55 -05:00
parent ad91f5d241
commit cfc024daeb
4 changed files with 254 additions and 374 deletions

View File

@ -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
}

View File

@ -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.
// NAME sign-extends 8 lowest vector element values to int64.

View File

@ -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
- *i64x8

View File

@ -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