]> git.feebdaed.xyz Git - 0xmirror/go.git/commitdiff
simd/archsimd: reword documentation for conversion ops
authorCherry Mui <cherryyz@google.com>
Wed, 17 Dec 2025 19:32:55 +0000 (14:32 -0500)
committerCherry Mui <cherryyz@google.com>
Thu, 18 Dec 2025 16:38:15 +0000 (08:38 -0800)
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>
src/simd/archsimd/_gen/simdgen/godefs.go
src/simd/archsimd/_gen/simdgen/ops/Converts/categories.yaml
src/simd/archsimd/_gen/simdgen/ops/Converts/go.yaml
src/simd/archsimd/ops_amd64.go

index 2c10377420e686516aac8649f0a8717cc7a96342..3ac74264e8333518f6aac6c50889e4ef859738be 100644 (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
 }
 
index dd33284063285654b3c29a60f68b63b5bb7af553..1e2a6a9b694de9330f69b03dc8b31f5ca5e1ba3d 100644 (file)
     // 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.
index af058124fb675c0f65bd10290833d136d1dcec28..64cd4cb24e1eb6d997b12150fd2bb99fcdef7387 100644 (file)
 # Widening integer conversions.
 # uint8 -> uint16
 - go: ExtendToUint16
-  addDoc: &zeroExtendDoc
-    !string |-
-    // The result vector's elements are zero-extended.
   regexpTag: "convert"
   asm: "VPMOVZXBW"
   in:
 - go: ExtendToUint16
   regexpTag: "convert"
   asm: "VPMOVZXBW"
-  addDoc: *zeroExtendDoc
   in:
   - &u8x32
     base: uint
 - go: ExtendToInt16
   regexpTag: "convert"
   asm: "VPMOVSXBW"
-  addDoc: &signExtendDoc
-    !string |-
-    // The result vector's elements are sign-extended.
   in:
   - &i8x16
     base: int
 - go: ExtendToInt16
   regexpTag: "convert"
   asm: "VPMOVSXBW"
-  addDoc: *signExtendDoc
   in:
   - &i8x32
     base: int
 - go: ExtendToUint32
   regexpTag: "convert"
   asm: "VPMOVZXWD"
-  addDoc: *zeroExtendDoc
   in:
   - &u16x8
     base: uint
 - go: ExtendToUint32
   regexpTag: "convert"
   asm: "VPMOVZXWD"
-  addDoc: *zeroExtendDoc
   in:
   - *u16x16
   out:
 - go: ExtendToInt32
   regexpTag: "convert"
   asm: "VPMOVSXWD"
-  addDoc: *signExtendDoc
   in:
   - &i16x8
     base: int
 - go: ExtendToInt32
   regexpTag: "convert"
   asm: "VPMOVSXWD"
-  addDoc: *signExtendDoc
   in:
   - *i16x16
   out:
 - go: ExtendToUint64
   regexpTag: "convert"
   asm: "VPMOVZXDQ"
-  addDoc: *zeroExtendDoc
   in:
   - &u32x4
     base: uint
 - go: ExtendToUint64
   regexpTag: "convert"
   asm: "VPMOVZXDQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u32x8
   out:
 - go: ExtendToInt64
   regexpTag: "convert"
   asm: "VPMOVSXDQ"
-  addDoc: *signExtendDoc
   in:
   - &i32x4
     base: int
 - go: ExtendToInt64
   regexpTag: "convert"
   asm: "VPMOVSXDQ"
-  addDoc: *signExtendDoc
   in:
   - *i32x8
   out:
 - go: ExtendToUint64
   regexpTag: "convert"
   asm: "VPMOVZXWQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u16x8
   out:
 - go: ExtendToInt64
   regexpTag: "convert"
   asm: "VPMOVSXWQ"
-  addDoc: *signExtendDoc
   in:
   - *i16x8
   out:
 - go: ExtendToUint32
   regexpTag: "convert"
   asm: "VPMOVZXBD"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendToInt32
   regexpTag: "convert"
   asm: "VPMOVSXBD"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - 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:
 - go: TruncateToUint8
   regexpTag: "convert"
   asm: "VPMOV[WDQ]B"
-  addDoc: *truncDocZeroUpper
   in:
     - base: uint
   out:
 - go: TruncateToInt8
   regexpTag: "convert"
   asm: "VPMOV[WDQ]B"
-  addDoc: &truncDoc
-    !string |-
-    // Conversion is done with truncation on the vector elements.
   in:
     - base: int
   out:
 - go: TruncateToUint8
   regexpTag: "convert"
   asm: "VPMOV[WDQ]B"
-  addDoc: *truncDoc
   in:
     - base: uint
   out:
 - go: TruncateToInt16
   regexpTag: "convert"
   asm: "VPMOV[DQ]W"
-  addDoc: *truncDoc
   in:
     - base: int
   out:
 - go: TruncateToUint16
   regexpTag: "convert"
   asm: "VPMOV[DQ]W"
-  addDoc: *truncDoc
   in:
     - base: uint
   out:
 - go: TruncateToInt32
   regexpTag: "convert"
   asm: "VPMOVQD"
-  addDoc: *truncDoc
   in:
     - base: int
   out:
 - go: TruncateToUint32
   regexpTag: "convert"
   asm: "VPMOVQD"
-  addDoc: *truncDoc
   in:
     - base: uint
   out:
 - 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:
 - go: SaturateToUint8
   regexpTag: "convert"
   asm: "VPMOVS[WDQ]B"
-  addDoc: *satDocZeroUpper
   in:
     - base: int
   out:
 - go: SaturateToInt8
   regexpTag: "convert"
   asm: "VPMOVS[WDQ]B"
-  addDoc: &satDoc
-    !string |-
-    // Conversion is done with saturation on the vector elements.
   in:
     - base: int
   out:
 - go: SaturateToUint8
   regexpTag: "convert"
   asm: "VPMOVUS[WDQ]B"
-  addDoc: *satDoc
   in:
     - base: uint
   out:
 - go: SaturateToInt16
   regexpTag: "convert"
   asm: "VPMOVS[DQ]W"
-  addDoc: *satDoc
   in:
     - base: int
   out:
 - go: SaturateToUint16
   regexpTag: "convert"
   asm: "VPMOVUS[DQ]W"
-  addDoc: *satDoc
   in:
     - base: uint
   out:
 - go: SaturateToInt32
   regexpTag: "convert"
   asm: "VPMOVSQD"
-  addDoc: *satDoc
   in:
     - base: int
   out:
 - go: SaturateToUint32
   regexpTag: "convert"
   asm: "VPMOVUSQD"
-  addDoc: *satDoc
   in:
     - base: uint
   out:
     // 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
 - go: SaturateToUint16Concat
   regexpTag: "convert"
   asm: "VPACKUSDW"
-  addDoc: *satDocConcat
   in:
     - base: uint
     - base: uint
 - go: ExtendLo8ToUint16x8
   regexpTag: "convert"
   asm: "VPMOVZXBW"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo8ToInt16x8
   regexpTag: "convert"
   asm: "VPMOVSXBW"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - go: ExtendLo4ToUint32x4
   regexpTag: "convert"
   asm: "VPMOVZXWD"
-  addDoc: *zeroExtendDoc
   in:
   - *u16x8
   out:
 - go: ExtendLo4ToInt32x4
   regexpTag: "convert"
   asm: "VPMOVSXWD"
-  addDoc: *signExtendDoc
   in:
   - *i16x8
   out:
 - go: ExtendLo2ToUint64x2
   regexpTag: "convert"
   asm: "VPMOVZXDQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u32x4
   out:
 - go: ExtendLo2ToInt64x2
   regexpTag: "convert"
   asm: "VPMOVSXDQ"
-  addDoc: *signExtendDoc
   in:
   - *i32x4
   out:
 - go: ExtendLo2ToUint64x2
   regexpTag: "convert"
   asm: "VPMOVZXWQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u16x8
   out:
 - go: ExtendLo4ToUint64x4
   regexpTag: "convert"
   asm: "VPMOVZXWQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u16x8
   out:
 - go: ExtendLo2ToInt64x2
   regexpTag: "convert"
   asm: "VPMOVSXWQ"
-  addDoc: *signExtendDoc
   in:
   - *i16x8
   out:
 - go: ExtendLo4ToInt64x4
   regexpTag: "convert"
   asm: "VPMOVSXWQ"
-  addDoc: *signExtendDoc
   in:
   - *i16x8
   out:
 - go: ExtendLo4ToUint32x4
   regexpTag: "convert"
   asm: "VPMOVZXBD"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo8ToUint32x8
   regexpTag: "convert"
   asm: "VPMOVZXBD"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo4ToInt32x4
   regexpTag: "convert"
   asm: "VPMOVSXBD"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - go: ExtendLo8ToInt32x8
   regexpTag: "convert"
   asm: "VPMOVSXBD"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - go: ExtendLo2ToUint64x2
   regexpTag: "convert"
   asm: "VPMOVZXBQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo4ToUint64x4
   regexpTag: "convert"
   asm: "VPMOVZXBQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo8ToUint64x8
   regexpTag: "convert"
   asm: "VPMOVZXBQ"
-  addDoc: *zeroExtendDoc
   in:
   - *u8x16
   out:
 - go: ExtendLo2ToInt64x2
   regexpTag: "convert"
   asm: "VPMOVSXBQ"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - go: ExtendLo4ToInt64x4
   regexpTag: "convert"
   asm: "VPMOVSXBQ"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
 - go: ExtendLo8ToInt64x8
   regexpTag: "convert"
   asm: "VPMOVSXBQ"
-  addDoc: *signExtendDoc
   in:
   - *i8x16
   out:
-  - *i64x8
\ No newline at end of file
+  - *i64x8
index d01f340d250fcb6eb76c66d5c806e98a02b21c25..2d596ac5f397a979ab205b349fbb155807261396 100644 (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