aboutsummaryrefslogtreecommitdiff
path: root/src/simd
diff options
context:
space:
mode:
Diffstat (limited to 'src/simd')
-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