aboutsummaryrefslogtreecommitdiff
path: root/src/simd/archsimd
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2025-12-17 14:32:55 -0500
committerCherry Mui <cherryyz@google.com>2025-12-18 08:38:15 -0800
commitcfc024daebb84b1864f538d60659691ccf3acf30 (patch)
tree28e0096bbb13da07e59dac4db7939e90bacc7c11 /src/simd/archsimd
parentad91f5d241f3b8e85dc866d0087c3f13af96ef33 (diff)
downloadgo-cfc024daebb84b1864f538d60659691ccf3acf30.tar.xz
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>
Diffstat (limited to 'src/simd/archsimd')
-rw-r--r--src/simd/archsimd/_gen/simdgen/godefs.go13
-rw-r--r--src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml122
-rw-r--r--src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml70
-rw-r--r--src/simd/archsimd/ops_amd64.go423
4 files changed, 254 insertions, 374 deletions
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 uint32.
-- go: "(Extend|Saturate|Truncate)?ToUint64"
+ // 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 converts element values to uint64.
+ // 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 zero-extends element values to uint32.
+- go: "TruncateToUint32"
+ regexpTag: "convert"
+ commutative: false
+ documentation: !string |-
+ // 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