| // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch arm64 -arm64Path $ARM64_ISA_PATH go_arm64.yaml types.yaml categories.yaml'; DO NOT EDIT. |
| |
| //go:build goexperiment.simd |
| |
| package archsimd |
| |
| /* Abs */ |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VFABS, CPU Feature: NEON |
| func (x Float32x4) Abs() Float32x4 |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VFABS, CPU Feature: NEON |
| func (x Float64x2) Abs() Float64x2 |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VABS, CPU Feature: NEON |
| func (x Int8x16) Abs() Int8x16 |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VABS, CPU Feature: NEON |
| func (x Int16x8) Abs() Int16x8 |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VABS, CPU Feature: NEON |
| func (x Int32x4) Abs() Int32x4 |
| |
| // Abs computes the absolute value of each element. |
| // |
| // Asm: VABS, CPU Feature: NEON |
| func (x Int64x2) Abs() Int64x2 |
| |
| /* Add */ |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VFADD, CPU Feature: NEON |
| func (x Float32x4) Add(y Float32x4) Float32x4 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VFADD, CPU Feature: NEON |
| func (x Float64x2) Add(y Float64x2) Float64x2 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Int8x16) Add(y Int8x16) Int8x16 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Int16x8) Add(y Int16x8) Int16x8 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Int32x4) Add(y Int32x4) Int32x4 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Int64x2) Add(y Int64x2) Int64x2 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Uint8x16) Add(y Uint8x16) Uint8x16 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Uint16x8) Add(y Uint16x8) Uint16x8 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Uint32x4) Add(y Uint32x4) Uint32x4 |
| |
| // Add adds corresponding elements of two vectors. |
| // |
| // Asm: VADD, CPU Feature: NEON |
| func (x Uint64x2) Add(y Uint64x2) Uint64x2 |
| |
| /* AddSaturated */ |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQADD, CPU Feature: NEON |
| func (x Int8x16) AddSaturated(y Int8x16) Int8x16 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQADD, CPU Feature: NEON |
| func (x Int16x8) AddSaturated(y Int16x8) Int16x8 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQADD, CPU Feature: NEON |
| func (x Int32x4) AddSaturated(y Int32x4) Int32x4 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQADD, CPU Feature: NEON |
| func (x Int64x2) AddSaturated(y Int64x2) Int64x2 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQADD, CPU Feature: NEON |
| func (x Uint8x16) AddSaturated(y Uint8x16) Uint8x16 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQADD, CPU Feature: NEON |
| func (x Uint16x8) AddSaturated(y Uint16x8) Uint16x8 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQADD, CPU Feature: NEON |
| func (x Uint32x4) AddSaturated(y Uint32x4) Uint32x4 |
| |
| // AddSaturated adds corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQADD, CPU Feature: NEON |
| func (x Uint64x2) AddSaturated(y Uint64x2) Uint64x2 |
| |
| /* And */ |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Int8x16) And(y Int8x16) Int8x16 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Int16x8) And(y Int16x8) Int16x8 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Int32x4) And(y Int32x4) Int32x4 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Int64x2) And(y Int64x2) Int64x2 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Uint8x16) And(y Uint8x16) Uint8x16 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Uint16x8) And(y Uint16x8) Uint16x8 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Uint32x4) And(y Uint32x4) Uint32x4 |
| |
| // And performs a bitwise x & y. |
| // |
| // Asm: VAND, CPU Feature: NEON |
| func (x Uint64x2) And(y Uint64x2) Uint64x2 |
| |
| /* AndNot */ |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Int8x16) AndNot(y Int8x16) Int8x16 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Int16x8) AndNot(y Int16x8) Int16x8 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Int32x4) AndNot(y Int32x4) Int32x4 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Int64x2) AndNot(y Int64x2) Int64x2 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Uint8x16) AndNot(y Uint8x16) Uint8x16 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Uint16x8) AndNot(y Uint16x8) Uint16x8 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Uint32x4) AndNot(y Uint32x4) Uint32x4 |
| |
| // AndNot performs a bitwise x &^ y. |
| // |
| // Asm: VBIC, CPU Feature: NEON |
| func (x Uint64x2) AndNot(y Uint64x2) Uint64x2 |
| |
| /* Average */ |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VSRHADD, CPU Feature: NEON |
| func (x Int8x16) Average(y Int8x16) Int8x16 |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VSRHADD, CPU Feature: NEON |
| func (x Int16x8) Average(y Int16x8) Int16x8 |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VSRHADD, CPU Feature: NEON |
| func (x Int32x4) Average(y Int32x4) Int32x4 |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VURHADD, CPU Feature: NEON |
| func (x Uint8x16) Average(y Uint8x16) Uint8x16 |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VURHADD, CPU Feature: NEON |
| func (x Uint16x8) Average(y Uint16x8) Uint16x8 |
| |
| // Average computes the rounded average of corresponding elements. |
| // |
| // Asm: VURHADD, CPU Feature: NEON |
| func (x Uint32x4) Average(y Uint32x4) Uint32x4 |
| |
| /* Ceil */ |
| |
| // Ceil rounds elements up to the nearest integer. |
| // |
| // Asm: VFRINTP, CPU Feature: NEON |
| func (x Float32x4) Ceil() Float32x4 |
| |
| // Ceil rounds elements up to the nearest integer. |
| // |
| // Asm: VFRINTP, CPU Feature: NEON |
| func (x Float64x2) Ceil() Float64x2 |
| |
| /* ConcatAddPairs */ |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1, x2, x3, ...] and y = [y0, y1, y2, y3, ...], the result is [x0+x1, x2+x3, ..., y0+y1, y2+y3, ...]. |
| // |
| // Asm: VFADDP, CPU Feature: NEON |
| func (x Float32x4) ConcatAddPairs(y Float32x4) Float32x4 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1] and y = [y0, y1], the result is [x0+x1, y0+y1]. |
| // |
| // Asm: VFADDP, CPU Feature: NEON |
| func (x Float64x2) ConcatAddPairs(y Float64x2) Float64x2 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1, x2, x3, ...] and y = [y0, y1, y2, y3, ...], the result is [x0+x1, x2+x3, ..., y0+y1, y2+y3, ...]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Int16x8) ConcatAddPairs(y Int16x8) Int16x8 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1, x2, x3, ...] and y = [y0, y1, y2, y3, ...], the result is [x0+x1, x2+x3, ..., y0+y1, y2+y3, ...]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Int32x4) ConcatAddPairs(y Int32x4) Int32x4 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1] and y = [y0, y1], the result is [x0+x1, y0+y1]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Int64x2) ConcatAddPairs(y Int64x2) Int64x2 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1, x2, x3, ...] and y = [y0, y1, y2, y3, ...], the result is [x0+x1, x2+x3, ..., y0+y1, y2+y3, ...]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Uint16x8) ConcatAddPairs(y Uint16x8) Uint16x8 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1, x2, x3, ...] and y = [y0, y1, y2, y3, ...], the result is [x0+x1, x2+x3, ..., y0+y1, y2+y3, ...]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Uint32x4) ConcatAddPairs(y Uint32x4) Uint32x4 |
| |
| // ConcatAddPairs horizontally adds adjacent pairs of elements. |
| // For x = [x0, x1] and y = [y0, y1], the result is [x0+x1, y0+y1]. |
| // |
| // Asm: VADDP, CPU Feature: NEON |
| func (x Uint64x2) ConcatAddPairs(y Uint64x2) Uint64x2 |
| |
| /* ConcatEven */ |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Int8x16) ConcatEven(y Int8x16) Int8x16 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Int16x8) ConcatEven(y Int16x8) Int16x8 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Int32x4) ConcatEven(y Int32x4) Int32x4 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Int64x2) ConcatEven(y Int64x2) Int64x2 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Uint8x16) ConcatEven(y Uint8x16) Uint8x16 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Uint16x8) ConcatEven(y Uint16x8) Uint16x8 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Uint32x4) ConcatEven(y Uint32x4) Uint32x4 |
| |
| // ConcatEven concatenates even-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x0,x2,y0,y2]. |
| // |
| // Asm: VUZP1, CPU Feature: NEON |
| func (x Uint64x2) ConcatEven(y Uint64x2) Uint64x2 |
| |
| /* ConcatOdd */ |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Int8x16) ConcatOdd(y Int8x16) Int8x16 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Int16x8) ConcatOdd(y Int16x8) Int16x8 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Int32x4) ConcatOdd(y Int32x4) Int32x4 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Int64x2) ConcatOdd(y Int64x2) Int64x2 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Uint8x16) ConcatOdd(y Uint8x16) Uint8x16 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Uint16x8) ConcatOdd(y Uint16x8) Uint16x8 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Uint32x4) ConcatOdd(y Uint32x4) Uint32x4 |
| |
| // ConcatOdd concatenates odd-indexed elements from the concatenation of x and y. |
| // For x = [x0,x1,x2,x3] and y = [y0,y1,y2,y3], result = [x1,x3,y1,y3]. |
| // |
| // Asm: VUZP2, CPU Feature: NEON |
| func (x Uint64x2) ConcatOdd(y Uint64x2) Uint64x2 |
| |
| /* ConcatShiftBytesRight */ |
| |
| // ConcatShiftBytesRight concatenates x and y and shifts it right by shift bytes. |
| // The result vector will be the lower half of the concatenated vector. |
| // |
| // A non-constant value of shift may result in significantly worse performance for this operation. |
| // |
| // Asm: VEXT, CPU Feature: NEON |
| func (x Uint8x16) ConcatShiftBytesRight(y Uint8x16, shift uint64) Uint8x16 |
| |
| /* ConvertLo2ToFloat64 */ |
| |
| // ConvertLo2ToFloat64 converts low-indexed float32 element values to float64. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ConvertLo2ToFloat64(...) |
| // |
| // Asm: VFCVTL, CPU Feature: NEON |
| func (x Float32x4) ConvertLo2ToFloat64() Float64x2 |
| |
| /* ConvertToFloat32 */ |
| |
| // ConvertToFloat32 converts element values to float32. |
| // |
| // Asm: VFCVTN, CPU Feature: NEON |
| func (x Float64x2) ConvertToFloat32() Float32x4 |
| |
| // ConvertToFloat32 converts element values to float32. |
| // |
| // Asm: VSCVTF, CPU Feature: NEON |
| func (x Int32x4) ConvertToFloat32() Float32x4 |
| |
| // ConvertToFloat32 converts element values to float32. |
| // |
| // Asm: VUCVTF, CPU Feature: NEON |
| func (x Uint32x4) ConvertToFloat32() Float32x4 |
| |
| /* ConvertToFloat64 */ |
| |
| // ConvertToFloat64 converts element values to float64. |
| // |
| // Asm: VSCVTF, CPU Feature: NEON |
| func (x Int64x2) ConvertToFloat64() Float64x2 |
| |
| // ConvertToFloat64 converts element values to float64. |
| // |
| // Asm: VUCVTF, CPU Feature: NEON |
| func (x Uint64x2) ConvertToFloat64() Float64x2 |
| |
| /* ConvertToInt32 */ |
| |
| // ConvertToInt32 converts element values to int32. |
| // When a conversion is inexact, a truncated (round toward zero) value is returned. |
| // If a converted result cannot be represented in int32, an implementation-defined |
| // architecture-specific value is returned. |
| // |
| // Asm: VFCVTZS, CPU Feature: NEON |
| func (x Float32x4) ConvertToInt32() Int32x4 |
| |
| /* ConvertToInt64 */ |
| |
| // ConvertToInt64 converts element values to int64. |
| // When a conversion is inexact, a truncated (round toward zero) value is returned. |
| // If a converted result cannot be represented in int64, an implementation-defined |
| // architecture-specific value is returned. |
| // |
| // Asm: VFCVTZS, CPU Feature: NEON |
| func (x Float64x2) ConvertToInt64() Int64x2 |
| |
| /* ConvertToUint32 */ |
| |
| // ConvertToUint32 converts element values to uint32. |
| // When a conversion is inexact, a truncated (round toward zero) value is returned. |
| // If a converted result cannot be represented in uint32, an implementation-defined |
| // architecture-specific value is returned. |
| // |
| // Asm: VFCVTZU, CPU Feature: NEON |
| func (x Float32x4) ConvertToUint32() Uint32x4 |
| |
| /* ConvertToUint64 */ |
| |
| // ConvertToUint64 converts element values to uint64. |
| // When a conversion is inexact, a truncated (round toward zero) value is returned. |
| // If a converted result cannot be represented in uint64, an implementation-defined |
| // architecture-specific value is returned. |
| // |
| // Asm: VFCVTZU, CPU Feature: NEON |
| func (x Float64x2) ConvertToUint64() Uint64x2 |
| |
| /* Div */ |
| |
| // Div divides elements of two vectors. Division by zero follows IEEE 754 and does not panic. |
| // |
| // Asm: VFDIV, CPU Feature: NEON |
| func (x Float32x4) Div(y Float32x4) Float32x4 |
| |
| // Div divides elements of two vectors. Division by zero follows IEEE 754 and does not panic. |
| // |
| // Asm: VFDIV, CPU Feature: NEON |
| func (x Float64x2) Div(y Float64x2) Float64x2 |
| |
| /* Equal */ |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VFCMEQ, CPU Feature: NEON |
| func (x Float32x4) Equal(y Float32x4) Mask32x4 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VFCMEQ, CPU Feature: NEON |
| func (x Float64x2) Equal(y Float64x2) Mask64x2 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Int8x16) Equal(y Int8x16) Mask8x16 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Int16x8) Equal(y Int16x8) Mask16x8 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Int32x4) Equal(y Int32x4) Mask32x4 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Int64x2) Equal(y Int64x2) Mask64x2 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Uint8x16) Equal(y Uint8x16) Mask8x16 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Uint16x8) Equal(y Uint16x8) Mask16x8 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Uint32x4) Equal(y Uint32x4) Mask32x4 |
| |
| // Equal returns a mask whose elements indicate whether x == y. |
| // |
| // Asm: VCMEQ, CPU Feature: NEON |
| func (x Uint64x2) Equal(y Uint64x2) Mask64x2 |
| |
| /* ExtendLo2ToInt64 */ |
| |
| // ExtendLo2ToInt64 sign-extends 2 lowest vector element values to int64. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo2ToInt64(...) |
| // |
| // Asm: VSXTL, CPU Feature: NEON |
| func (x Int32x4) ExtendLo2ToInt64() Int64x2 |
| |
| /* ExtendLo2ToUint64 */ |
| |
| // ExtendLo2ToUint64 zero-extends 2 lowest vector element values to uint64. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo2ToUint64(...) |
| // |
| // Asm: VUXTL, CPU Feature: NEON |
| func (x Uint32x4) ExtendLo2ToUint64() Uint64x2 |
| |
| /* ExtendLo4ToInt32 */ |
| |
| // ExtendLo4ToInt32 sign-extends 4 lowest vector element values to int32. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo4ToInt32(...) |
| // |
| // Asm: VSXTL, CPU Feature: NEON |
| func (x Int16x8) ExtendLo4ToInt32() Int32x4 |
| |
| /* ExtendLo4ToUint32 */ |
| |
| // ExtendLo4ToUint32 zero-extends 4 lowest vector element values to uint32. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo4ToUint32(...) |
| // |
| // Asm: VUXTL, CPU Feature: NEON |
| func (x Uint16x8) ExtendLo4ToUint32() Uint32x4 |
| |
| /* ExtendLo8ToInt16 */ |
| |
| // ExtendLo8ToInt16 sign-extends 8 lowest vector element values to int16. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo8ToInt16(...) |
| // |
| // Asm: VSXTL, CPU Feature: NEON |
| func (x Int8x16) ExtendLo8ToInt16() Int16x8 |
| |
| /* ExtendLo8ToUint16 */ |
| |
| // ExtendLo8ToUint16 zero-extends 8 lowest vector element values to uint16. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().ExtendLo8ToUint16(...) |
| // |
| // Asm: VUXTL, CPU Feature: NEON |
| func (x Uint8x16) ExtendLo8ToUint16() Uint16x8 |
| |
| /* Floor */ |
| |
| // Floor rounds elements down to the nearest integer. |
| // |
| // Asm: VFRINTM, CPU Feature: NEON |
| func (x Float32x4) Floor() Float32x4 |
| |
| // Floor rounds elements down to the nearest integer. |
| // |
| // Asm: VFRINTM, CPU Feature: NEON |
| func (x Float64x2) Floor() Float64x2 |
| |
| /* GetElem */ |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VDUP, CPU Feature: NEON |
| func (x Float32x4) GetElem(index uint8) float32 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VDUP, CPU Feature: NEON |
| func (x Float64x2) GetElem(index uint8) float64 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int8x16) GetElem(index uint8) int8 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int16x8) GetElem(index uint8) int16 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int32x4) GetElem(index uint8) int32 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int64x2) GetElem(index uint8) int64 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint8x16) GetElem(index uint8) uint8 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint16x8) GetElem(index uint8) uint16 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint32x4) GetElem(index uint8) uint32 |
| |
| // GetElem returns the index'th element of x. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint64x2) GetElem(index uint8) uint64 |
| |
| /* Greater */ |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VFCMGT, CPU Feature: NEON |
| func (x Float32x4) Greater(y Float32x4) Mask32x4 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VFCMGT, CPU Feature: NEON |
| func (x Float64x2) Greater(y Float64x2) Mask64x2 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMGT, CPU Feature: NEON |
| func (x Int8x16) Greater(y Int8x16) Mask8x16 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMGT, CPU Feature: NEON |
| func (x Int16x8) Greater(y Int16x8) Mask16x8 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMGT, CPU Feature: NEON |
| func (x Int32x4) Greater(y Int32x4) Mask32x4 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMGT, CPU Feature: NEON |
| func (x Int64x2) Greater(y Int64x2) Mask64x2 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMHI, CPU Feature: NEON |
| func (x Uint8x16) Greater(y Uint8x16) Mask8x16 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMHI, CPU Feature: NEON |
| func (x Uint16x8) Greater(y Uint16x8) Mask16x8 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMHI, CPU Feature: NEON |
| func (x Uint32x4) Greater(y Uint32x4) Mask32x4 |
| |
| // Greater returns a mask whose elements indicate whether x > y. |
| // |
| // Asm: VCMHI, CPU Feature: NEON |
| func (x Uint64x2) Greater(y Uint64x2) Mask64x2 |
| |
| /* GreaterEqual */ |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VFCMGE, CPU Feature: NEON |
| func (x Float32x4) GreaterEqual(y Float32x4) Mask32x4 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VFCMGE, CPU Feature: NEON |
| func (x Float64x2) GreaterEqual(y Float64x2) Mask64x2 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMGE, CPU Feature: NEON |
| func (x Int8x16) GreaterEqual(y Int8x16) Mask8x16 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMGE, CPU Feature: NEON |
| func (x Int16x8) GreaterEqual(y Int16x8) Mask16x8 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMGE, CPU Feature: NEON |
| func (x Int32x4) GreaterEqual(y Int32x4) Mask32x4 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMGE, CPU Feature: NEON |
| func (x Int64x2) GreaterEqual(y Int64x2) Mask64x2 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMHS, CPU Feature: NEON |
| func (x Uint8x16) GreaterEqual(y Uint8x16) Mask8x16 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMHS, CPU Feature: NEON |
| func (x Uint16x8) GreaterEqual(y Uint16x8) Mask16x8 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMHS, CPU Feature: NEON |
| func (x Uint32x4) GreaterEqual(y Uint32x4) Mask32x4 |
| |
| // GreaterEqual returns a mask whose elements indicate whether x >= y. |
| // |
| // Asm: VCMHS, CPU Feature: NEON |
| func (x Uint64x2) GreaterEqual(y Uint64x2) Mask64x2 |
| |
| /* InterleaveEven */ |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Int8x16) InterleaveEven(y Int8x16) Int8x16 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Int16x8) InterleaveEven(y Int16x8) Int16x8 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Int32x4) InterleaveEven(y Int32x4) Int32x4 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Int64x2) InterleaveEven(y Int64x2) Int64x2 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Uint8x16) InterleaveEven(y Uint8x16) Uint8x16 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Uint16x8) InterleaveEven(y Uint16x8) Uint16x8 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Uint32x4) InterleaveEven(y Uint32x4) Uint32x4 |
| |
| // InterleaveEven interleaves even elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a0,b0,a2,b2]. |
| // |
| // Asm: VTRN1, CPU Feature: NEON |
| func (x Uint64x2) InterleaveEven(y Uint64x2) Uint64x2 |
| |
| /* InterleaveHi */ |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Int8x16) InterleaveHi(y Int8x16) Int8x16 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Int16x8) InterleaveHi(y Int16x8) Int16x8 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Int32x4) InterleaveHi(y Int32x4) Int32x4 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Int64x2) InterleaveHi(y Int64x2) Int64x2 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Uint8x16) InterleaveHi(y Uint8x16) Uint8x16 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Uint16x8) InterleaveHi(y Uint16x8) Uint16x8 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Uint32x4) InterleaveHi(y Uint32x4) Uint32x4 |
| |
| // InterleaveHi interleaves the elements of the high halves of x and y. |
| // |
| // Asm: VZIP2, CPU Feature: NEON |
| func (x Uint64x2) InterleaveHi(y Uint64x2) Uint64x2 |
| |
| /* InterleaveLo */ |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Int8x16) InterleaveLo(y Int8x16) Int8x16 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Int16x8) InterleaveLo(y Int16x8) Int16x8 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Int32x4) InterleaveLo(y Int32x4) Int32x4 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Int64x2) InterleaveLo(y Int64x2) Int64x2 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Uint8x16) InterleaveLo(y Uint8x16) Uint8x16 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Uint16x8) InterleaveLo(y Uint16x8) Uint16x8 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Uint32x4) InterleaveLo(y Uint32x4) Uint32x4 |
| |
| // InterleaveLo interleaves the elements of the low halves of x and y. |
| // |
| // Asm: VZIP1, CPU Feature: NEON |
| func (x Uint64x2) InterleaveLo(y Uint64x2) Uint64x2 |
| |
| /* InterleaveOdd */ |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Int8x16) InterleaveOdd(y Int8x16) Int8x16 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Int16x8) InterleaveOdd(y Int16x8) Int16x8 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Int32x4) InterleaveOdd(y Int32x4) Int32x4 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Int64x2) InterleaveOdd(y Int64x2) Int64x2 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Uint8x16) InterleaveOdd(y Uint8x16) Uint8x16 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Uint16x8) InterleaveOdd(y Uint16x8) Uint16x8 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Uint32x4) InterleaveOdd(y Uint32x4) Uint32x4 |
| |
| // InterleaveOdd interleaves odd elements from x and y. |
| // For x = [a0,a1,a2,a3] and y = [b0,b1,b2,b3], result = [a1,b1,a3,b3]. |
| // |
| // Asm: VTRN2, CPU Feature: NEON |
| func (x Uint64x2) InterleaveOdd(y Uint64x2) Uint64x2 |
| |
| /* LeadingSignBits */ |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Int8x16) LeadingSignBits() Int8x16 |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Int16x8) LeadingSignBits() Int16x8 |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Int32x4) LeadingSignBits() Int32x4 |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Uint8x16) LeadingSignBits() Uint8x16 |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Uint16x8) LeadingSignBits() Uint16x8 |
| |
| // LeadingSignBits counts the leading sign bits of each element in x. |
| // |
| // Asm: VCLS, CPU Feature: NEON |
| func (x Uint32x4) LeadingSignBits() Uint32x4 |
| |
| /* LeadingZeros */ |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Int8x16) LeadingZeros() Int8x16 |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Int16x8) LeadingZeros() Int16x8 |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Int32x4) LeadingZeros() Int32x4 |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Uint8x16) LeadingZeros() Uint8x16 |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Uint16x8) LeadingZeros() Uint16x8 |
| |
| // LeadingZeros counts the leading zeros of each element in x. |
| // |
| // Asm: VCLZ, CPU Feature: NEON |
| func (x Uint32x4) LeadingZeros() Uint32x4 |
| |
| /* LookupOrZero */ |
| |
| // LookupOrZero looks up table. If an index is out of range, the result is 0. |
| // |
| // if 0 <= indices[i] && indices[i] < len(table) { |
| // result[i] = table[indices[i]] |
| // } else { |
| // result[i] = 0 |
| // } |
| // |
| // Asm: VTBL, CPU Feature: NEON |
| func (table Int8x16) LookupOrZero(indices Int8x16) Int8x16 |
| |
| // LookupOrZero looks up table. If an index is out of range, the result is 0. |
| // |
| // if 0 <= indices[i] && indices[i] < len(table) { |
| // result[i] = table[indices[i]] |
| // } else { |
| // result[i] = 0 |
| // } |
| // |
| // Asm: VTBL, CPU Feature: NEON |
| func (table Uint8x16) LookupOrZero(indices Uint8x16) Uint8x16 |
| |
| /* Max */ |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VFMAX, CPU Feature: NEON |
| func (x Float32x4) Max(y Float32x4) Float32x4 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VFMAX, CPU Feature: NEON |
| func (x Float64x2) Max(y Float64x2) Float64x2 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMAX, CPU Feature: NEON |
| func (x Int8x16) Max(y Int8x16) Int8x16 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMAX, CPU Feature: NEON |
| func (x Int16x8) Max(y Int16x8) Int16x8 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMAX, CPU Feature: NEON |
| func (x Int32x4) Max(y Int32x4) Int32x4 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMAX, CPU Feature: NEON |
| func (x Uint8x16) Max(y Uint8x16) Uint8x16 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMAX, CPU Feature: NEON |
| func (x Uint16x8) Max(y Uint16x8) Uint16x8 |
| |
| // Max computes the maximum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMAX, CPU Feature: NEON |
| func (x Uint32x4) Max(y Uint32x4) Uint32x4 |
| |
| /* Min */ |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VFMIN, CPU Feature: NEON |
| func (x Float32x4) Min(y Float32x4) Float32x4 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VFMIN, CPU Feature: NEON |
| func (x Float64x2) Min(y Float64x2) Float64x2 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMIN, CPU Feature: NEON |
| func (x Int8x16) Min(y Int8x16) Int8x16 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMIN, CPU Feature: NEON |
| func (x Int16x8) Min(y Int16x8) Int16x8 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VSMIN, CPU Feature: NEON |
| func (x Int32x4) Min(y Int32x4) Int32x4 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMIN, CPU Feature: NEON |
| func (x Uint8x16) Min(y Uint8x16) Uint8x16 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMIN, CPU Feature: NEON |
| func (x Uint16x8) Min(y Uint16x8) Uint16x8 |
| |
| // Min computes the minimum of each pair of corresponding elements in x and y. |
| // |
| // Asm: VUMIN, CPU Feature: NEON |
| func (x Uint32x4) Min(y Uint32x4) Uint32x4 |
| |
| /* Mul */ |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VFMUL, CPU Feature: NEON |
| func (x Float32x4) Mul(y Float32x4) Float32x4 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VFMUL, CPU Feature: NEON |
| func (x Float64x2) Mul(y Float64x2) Float64x2 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Int8x16) Mul(y Int8x16) Int8x16 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Int16x8) Mul(y Int16x8) Int16x8 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Int32x4) Mul(y Int32x4) Int32x4 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Uint8x16) Mul(y Uint8x16) Uint8x16 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Uint16x8) Mul(y Uint16x8) Uint16x8 |
| |
| // Mul multiplies corresponding elements of two vectors, modulo 2ⁿ. |
| // |
| // Asm: VMUL, CPU Feature: NEON |
| func (x Uint32x4) Mul(y Uint32x4) Uint32x4 |
| |
| /* MulAdd */ |
| |
| // MulAdd performs a fused (x * y) + z. |
| // |
| // Asm: VFMLA, CPU Feature: NEON |
| func (x Float32x4) MulAdd(y Float32x4, z Float32x4) Float32x4 |
| |
| // MulAdd performs a fused (x * y) + z. |
| // |
| // Asm: VFMLA, CPU Feature: NEON |
| func (x Float64x2) MulAdd(y Float64x2, z Float64x2) Float64x2 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Int8x16) MulAdd(y Int8x16, z Int8x16) Int8x16 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Int16x8) MulAdd(y Int16x8, z Int16x8) Int16x8 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Int32x4) MulAdd(y Int32x4, z Int32x4) Int32x4 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Uint8x16) MulAdd(y Uint8x16, z Uint8x16) Uint8x16 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Uint16x8) MulAdd(y Uint16x8, z Uint16x8) Uint16x8 |
| |
| // MulAdd computes (x * y) + z. |
| // |
| // Asm: VMLA, CPU Feature: NEON |
| func (x Uint32x4) MulAdd(y Uint32x4, z Uint32x4) Uint32x4 |
| |
| /* MulWidenLo */ |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VSMULL, CPU Feature: NEON |
| func (x Int8x16) MulWidenLo(y Int8x16) Int16x8 |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VSMULL, CPU Feature: NEON |
| func (x Int16x8) MulWidenLo(y Int16x8) Int32x4 |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VSMULL, CPU Feature: NEON |
| func (x Int32x4) MulWidenLo(y Int32x4) Int64x2 |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VUMULL, CPU Feature: NEON |
| func (x Uint8x16) MulWidenLo(y Uint8x16) Uint16x8 |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VUMULL, CPU Feature: NEON |
| func (x Uint16x8) MulWidenLo(y Uint16x8) Uint32x4 |
| |
| // MulWidenLo multiplies corresponding low-indexed elements and produces a result with double the element width. |
| // For the high-indexed elements, use HiToLo: |
| // |
| // x.HiToLo().MulWidenLo(y.HiToLo()) |
| // |
| // Asm: VUMULL, CPU Feature: NEON |
| func (x Uint32x4) MulWidenLo(y Uint32x4) Uint64x2 |
| |
| /* Neg */ |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VFNEG, CPU Feature: NEON |
| func (x Float32x4) Neg() Float32x4 |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VFNEG, CPU Feature: NEON |
| func (x Float64x2) Neg() Float64x2 |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VNEG, CPU Feature: NEON |
| func (x Int8x16) Neg() Int8x16 |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VNEG, CPU Feature: NEON |
| func (x Int16x8) Neg() Int16x8 |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VNEG, CPU Feature: NEON |
| func (x Int32x4) Neg() Int32x4 |
| |
| // Neg returns the elementwise negation of x. |
| // |
| // Asm: VNEG, CPU Feature: NEON |
| func (x Int64x2) Neg() Int64x2 |
| |
| /* Not */ |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Int8x16) Not() Int8x16 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Int16x8) Not() Int16x8 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Int32x4) Not() Int32x4 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Int64x2) Not() Int64x2 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Uint8x16) Not() Uint8x16 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Uint16x8) Not() Uint16x8 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Uint32x4) Not() Uint32x4 |
| |
| // Not returns the bitwise complement of x. |
| // |
| // Asm: VNOT, CPU Feature: NEON |
| func (x Uint64x2) Not() Uint64x2 |
| |
| /* OnesCount */ |
| |
| // OnesCount counts the number of set bits in each element. |
| // |
| // Asm: VCNT, CPU Feature: NEON |
| func (x Int8x16) OnesCount() Int8x16 |
| |
| // OnesCount counts the number of set bits in each element. |
| // |
| // Asm: VCNT, CPU Feature: NEON |
| func (x Uint8x16) OnesCount() Uint8x16 |
| |
| /* Or */ |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Int8x16) Or(y Int8x16) Int8x16 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Int16x8) Or(y Int16x8) Int16x8 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Int32x4) Or(y Int32x4) Int32x4 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Int64x2) Or(y Int64x2) Int64x2 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Uint8x16) Or(y Uint8x16) Uint8x16 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Uint16x8) Or(y Uint16x8) Uint16x8 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Uint32x4) Or(y Uint32x4) Uint32x4 |
| |
| // Or performs a bitwise x | y. |
| // |
| // Asm: VORR, CPU Feature: NEON |
| func (x Uint64x2) Or(y Uint64x2) Uint64x2 |
| |
| /* OrNot */ |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Int8x16) OrNot(y Int8x16) Int8x16 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Int16x8) OrNot(y Int16x8) Int16x8 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Int32x4) OrNot(y Int32x4) Int32x4 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Int64x2) OrNot(y Int64x2) Int64x2 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Uint8x16) OrNot(y Uint8x16) Uint8x16 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Uint16x8) OrNot(y Uint16x8) Uint16x8 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Uint32x4) OrNot(y Uint32x4) Uint32x4 |
| |
| // OrNot performs a bitwise x | ^y. |
| // |
| // Asm: VORN, CPU Feature: NEON |
| func (x Uint64x2) OrNot(y Uint64x2) Uint64x2 |
| |
| /* Round */ |
| |
| // Round rounds elements to the nearest integer, rounding ties to even. |
| // |
| // Asm: VFRINTN, CPU Feature: NEON |
| func (x Float32x4) Round() Float32x4 |
| |
| // Round rounds elements to the nearest integer, rounding ties to even. |
| // |
| // Asm: VFRINTN, CPU Feature: NEON |
| func (x Float64x2) Round() Float64x2 |
| |
| /* SaturateToInt8 */ |
| |
| // 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: VSQXTN, CPU Feature: NEON |
| func (x Int16x8) SaturateToInt8() Int8x16 |
| |
| /* SaturateToInt16 */ |
| |
| // 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: VSQXTN, CPU Feature: NEON |
| func (x Int32x4) SaturateToInt16() Int16x8 |
| |
| /* SaturateToInt32 */ |
| |
| // 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: VSQXTN, CPU Feature: NEON |
| func (x Int64x2) SaturateToInt32() Int32x4 |
| |
| /* SaturateToUint8 */ |
| |
| // 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: VSQXTUN, CPU Feature: NEON |
| func (x Int16x8) SaturateToUint8() Uint8x16 |
| |
| // 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: VUQXTN, CPU Feature: NEON |
| func (x Uint16x8) SaturateToUint8() Uint8x16 |
| |
| /* SaturateToUint16 */ |
| |
| // 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: VSQXTUN, CPU Feature: NEON |
| func (x Int32x4) SaturateToUint16() Uint16x8 |
| |
| // 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: VUQXTN, CPU Feature: NEON |
| func (x Uint32x4) SaturateToUint16() Uint16x8 |
| |
| /* SaturateToUint32 */ |
| |
| // 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: VSQXTUN, CPU Feature: NEON |
| func (x Int64x2) SaturateToUint32() Uint32x4 |
| |
| // 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: VUQXTN, CPU Feature: NEON |
| func (x Uint64x2) SaturateToUint32() Uint32x4 |
| |
| /* SetElem */ |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int8x16) SetElem(index uint8, y int8) Int8x16 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int16x8) SetElem(index uint8, y int16) Int16x8 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int32x4) SetElem(index uint8, y int32) Int32x4 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Int64x2) SetElem(index uint8, y int64) Int64x2 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint8x16) SetElem(index uint8, y uint8) Uint8x16 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint16x8) SetElem(index uint8, y uint16) Uint16x8 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint32x4) SetElem(index uint8, y uint32) Uint32x4 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // A non-constant value of index may result in significantly worse performance for this operation. |
| // |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Uint64x2) SetElem(index uint8, y uint64) Uint64x2 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // index results in better performance when it's a constant, a non-constant value will be translated into a jump table. |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Float32x4) SetElem(index uint8, v float32) Float32x4 |
| |
| // SetElem returns x with the index'th element set to y. |
| // |
| // index results in better performance when it's a constant, a non-constant value will be translated into a jump table. |
| // Asm: VMOV, CPU Feature: NEON |
| func (x Float64x2) SetElem(index uint8, v float64) Float64x2 |
| |
| /* Shift */ |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int8x16) Shift(y Int8x16) Int8x16 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int16x8) Shift(y Int16x8) Int16x8 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int32x4) Shift(y Int32x4) Int32x4 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int64x2) Shift(y Int64x2) Int64x2 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint8x16) Shift(y Int8x16) Uint8x16 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint16x8) Shift(y Int16x8) Uint16x8 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint32x4) Shift(y Int32x4) Uint32x4 |
| |
| // Shift shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element: positive values shift left, negative values shift right. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint64x2) Shift(y Int64x2) Uint64x2 |
| |
| /* ShiftAllLeft */ |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int8x16) ShiftAllLeft(y uint64) Int8x16 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int16x8) ShiftAllLeft(y uint64) Int16x8 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int32x4) ShiftAllLeft(y uint64) Int32x4 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int64x2) ShiftAllLeft(y uint64) Int64x2 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint8x16) ShiftAllLeft(y uint64) Uint8x16 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint16x8) ShiftAllLeft(y uint64) Uint16x8 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint32x4) ShiftAllLeft(y uint64) Uint32x4 |
| |
| // ShiftAllLeft shifts each element of x left by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint64x2) ShiftAllLeft(y uint64) Uint64x2 |
| |
| /* ShiftAllRight */ |
| |
| // ShiftAllRight arithmetically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0 or -1. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int8x16) ShiftAllRight(y uint64) Int8x16 |
| |
| // ShiftAllRight arithmetically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0 or -1. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int16x8) ShiftAllRight(y uint64) Int16x8 |
| |
| // ShiftAllRight arithmetically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0 or -1. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int32x4) ShiftAllRight(y uint64) Int32x4 |
| |
| // ShiftAllRight arithmetically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0 or -1. |
| // |
| // Asm: VSSHL, CPU Feature: NEON |
| func (x Int64x2) ShiftAllRight(y uint64) Int64x2 |
| |
| // ShiftAllRight logically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint8x16) ShiftAllRight(y uint64) Uint8x16 |
| |
| // ShiftAllRight logically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint16x8) ShiftAllRight(y uint64) Uint16x8 |
| |
| // ShiftAllRight logically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint32x4) ShiftAllRight(y uint64) Uint32x4 |
| |
| // ShiftAllRight logically shifts each element of x right by y bits. |
| // If y is greater than the element width, the result is 0. |
| // |
| // Asm: VUSHL, CPU Feature: NEON |
| func (x Uint64x2) ShiftAllRight(y uint64) Uint64x2 |
| |
| /* ShiftSaturated */ |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the signed range on overflow. |
| // |
| // Asm: VSQSHL, CPU Feature: NEON |
| func (x Int8x16) ShiftSaturated(y Int8x16) Int8x16 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the signed range on overflow. |
| // |
| // Asm: VSQSHL, CPU Feature: NEON |
| func (x Int16x8) ShiftSaturated(y Int16x8) Int16x8 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the signed range on overflow. |
| // |
| // Asm: VSQSHL, CPU Feature: NEON |
| func (x Int32x4) ShiftSaturated(y Int32x4) Int32x4 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the signed range on overflow. |
| // |
| // Asm: VSQSHL, CPU Feature: NEON |
| func (x Int64x2) ShiftSaturated(y Int64x2) Int64x2 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the unsigned range on overflow. |
| // |
| // Asm: VUQSHL, CPU Feature: NEON |
| func (x Uint8x16) ShiftSaturated(y Int8x16) Uint8x16 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the unsigned range on overflow. |
| // |
| // Asm: VUQSHL, CPU Feature: NEON |
| func (x Uint16x8) ShiftSaturated(y Int16x8) Uint16x8 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the unsigned range on overflow. |
| // |
| // Asm: VUQSHL, CPU Feature: NEON |
| func (x Uint32x4) ShiftSaturated(y Int32x4) Uint32x4 |
| |
| // ShiftSaturated shifts each element in x by the signed value of the least significant byte |
| // of y's corresponding element (positive shifts left, negative shifts right). |
| // Results are saturated to the unsigned range on overflow. |
| // |
| // Asm: VUQSHL, CPU Feature: NEON |
| func (x Uint64x2) ShiftSaturated(y Int64x2) Uint64x2 |
| |
| /* Sqrt */ |
| |
| // Sqrt computes the square root of each element. |
| // |
| // Asm: VFSQRT, CPU Feature: NEON |
| func (x Float32x4) Sqrt() Float32x4 |
| |
| // Sqrt computes the square root of each element. |
| // |
| // Asm: VFSQRT, CPU Feature: NEON |
| func (x Float64x2) Sqrt() Float64x2 |
| |
| /* Sub */ |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VFSUB, CPU Feature: NEON |
| func (x Float32x4) Sub(y Float32x4) Float32x4 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VFSUB, CPU Feature: NEON |
| func (x Float64x2) Sub(y Float64x2) Float64x2 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Int8x16) Sub(y Int8x16) Int8x16 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Int16x8) Sub(y Int16x8) Int16x8 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Int32x4) Sub(y Int32x4) Int32x4 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Int64x2) Sub(y Int64x2) Int64x2 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Uint8x16) Sub(y Uint8x16) Uint8x16 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Uint16x8) Sub(y Uint16x8) Uint16x8 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Uint32x4) Sub(y Uint32x4) Uint32x4 |
| |
| // Sub subtracts corresponding elements of two vectors. |
| // |
| // Asm: VSUB, CPU Feature: NEON |
| func (x Uint64x2) Sub(y Uint64x2) Uint64x2 |
| |
| /* SubSaturated */ |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQSUB, CPU Feature: NEON |
| func (x Int8x16) SubSaturated(y Int8x16) Int8x16 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQSUB, CPU Feature: NEON |
| func (x Int16x8) SubSaturated(y Int16x8) Int16x8 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQSUB, CPU Feature: NEON |
| func (x Int32x4) SubSaturated(y Int32x4) Int32x4 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VSQSUB, CPU Feature: NEON |
| func (x Int64x2) SubSaturated(y Int64x2) Int64x2 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQSUB, CPU Feature: NEON |
| func (x Uint8x16) SubSaturated(y Uint8x16) Uint8x16 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQSUB, CPU Feature: NEON |
| func (x Uint16x8) SubSaturated(y Uint16x8) Uint16x8 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQSUB, CPU Feature: NEON |
| func (x Uint32x4) SubSaturated(y Uint32x4) Uint32x4 |
| |
| // SubSaturated subtracts corresponding elements of two vectors with saturation. |
| // |
| // Asm: VUQSUB, CPU Feature: NEON |
| func (x Uint64x2) SubSaturated(y Uint64x2) Uint64x2 |
| |
| /* Trunc */ |
| |
| // Trunc truncates elements towards zero. |
| // |
| // Asm: VFRINTZ, CPU Feature: NEON |
| func (x Float32x4) Trunc() Float32x4 |
| |
| // Trunc truncates elements towards zero. |
| // |
| // Asm: VFRINTZ, CPU Feature: NEON |
| func (x Float64x2) Trunc() Float64x2 |
| |
| /* TruncToInt8 */ |
| |
| // TruncToInt8 truncates element values to int8. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Int16x8) TruncToInt8() Int8x16 |
| |
| /* TruncToInt16 */ |
| |
| // TruncToInt16 truncates element values to int16. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Int32x4) TruncToInt16() Int16x8 |
| |
| /* TruncToInt32 */ |
| |
| // TruncToInt32 truncates element values to int32. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Int64x2) TruncToInt32() Int32x4 |
| |
| /* TruncToUint8 */ |
| |
| // TruncToUint8 truncates element values to uint8. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Uint16x8) TruncToUint8() Uint8x16 |
| |
| /* TruncToUint16 */ |
| |
| // TruncToUint16 truncates element values to uint16. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Uint32x4) TruncToUint16() Uint16x8 |
| |
| /* TruncToUint32 */ |
| |
| // TruncToUint32 truncates element values to uint32. |
| // Results are packed to low elements in the returned vector, its upper elements are zeroed. |
| // |
| // Asm: VXTN, CPU Feature: NEON |
| func (x Uint64x2) TruncToUint32() Uint32x4 |
| |
| /* Xor */ |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Int8x16) Xor(y Int8x16) Int8x16 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Int16x8) Xor(y Int16x8) Int16x8 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Int32x4) Xor(y Int32x4) Int32x4 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Int64x2) Xor(y Int64x2) Int64x2 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Uint8x16) Xor(y Uint8x16) Uint8x16 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Uint16x8) Xor(y Uint16x8) Uint16x8 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Uint32x4) Xor(y Uint32x4) Uint32x4 |
| |
| // Xor performs a bitwise x ^ y. |
| // |
| // Asm: VEOR, CPU Feature: NEON |
| func (x Uint64x2) Xor(y Uint64x2) Uint64x2 |
| |
| // BitsToInt8 reinterprets the bits of a Uint8x16 vector as a Int8x16 vector |
| func (x Uint8x16) BitsToInt8() Int8x16 |
| |
| // ConvertToInt8 converts a Uint8x16 vector to a Int8x16 vector |
| func (x Uint8x16) ConvertToInt8() Int8x16 |
| |
| // ConvertToUint8 converts a Int8x16 vector to a Uint8x16 vector |
| func (x Int8x16) ConvertToUint8() Uint8x16 |
| |
| // ToBits reinterprets the bits of a Int8x16 vector as a Uint8x16 vector |
| func (x Int8x16) ToBits() Uint8x16 |
| |
| // ReshapeToUint16s reinterprets the bits of a Uint8x16 vector as a Uint16x8 vector |
| func (x Uint8x16) ReshapeToUint16s() Uint16x8 |
| |
| // ReshapeToUint32s reinterprets the bits of a Uint8x16 vector as a Uint32x4 vector |
| func (x Uint8x16) ReshapeToUint32s() Uint32x4 |
| |
| // ReshapeToUint64s reinterprets the bits of a Uint8x16 vector as a Uint64x2 vector |
| func (x Uint8x16) ReshapeToUint64s() Uint64x2 |
| |
| // BitsToInt16 reinterprets the bits of a Uint16x8 vector as a Int16x8 vector |
| func (x Uint16x8) BitsToInt16() Int16x8 |
| |
| // ConvertToInt16 converts a Uint16x8 vector to a Int16x8 vector |
| func (x Uint16x8) ConvertToInt16() Int16x8 |
| |
| // ConvertToUint16 converts a Int16x8 vector to a Uint16x8 vector |
| func (x Int16x8) ConvertToUint16() Uint16x8 |
| |
| // ToBits reinterprets the bits of a Int16x8 vector as a Uint16x8 vector |
| func (x Int16x8) ToBits() Uint16x8 |
| |
| // ReshapeToUint8s reinterprets the bits of a Uint16x8 vector as a Uint8x16 vector |
| func (x Uint16x8) ReshapeToUint8s() Uint8x16 |
| |
| // ReshapeToUint32s reinterprets the bits of a Uint16x8 vector as a Uint32x4 vector |
| func (x Uint16x8) ReshapeToUint32s() Uint32x4 |
| |
| // ReshapeToUint64s reinterprets the bits of a Uint16x8 vector as a Uint64x2 vector |
| func (x Uint16x8) ReshapeToUint64s() Uint64x2 |
| |
| // BitsToFloat32 reinterprets the bits of a Uint32x4 vector as a Float32x4 vector |
| func (x Uint32x4) BitsToFloat32() Float32x4 |
| |
| // ToBits reinterprets the bits of a Float32x4 vector as a Uint32x4 vector |
| func (x Float32x4) ToBits() Uint32x4 |
| |
| // BitsToInt32 reinterprets the bits of a Uint32x4 vector as a Int32x4 vector |
| func (x Uint32x4) BitsToInt32() Int32x4 |
| |
| // ConvertToInt32 converts a Uint32x4 vector to a Int32x4 vector |
| func (x Uint32x4) ConvertToInt32() Int32x4 |
| |
| // ConvertToUint32 converts a Int32x4 vector to a Uint32x4 vector |
| func (x Int32x4) ConvertToUint32() Uint32x4 |
| |
| // ToBits reinterprets the bits of a Int32x4 vector as a Uint32x4 vector |
| func (x Int32x4) ToBits() Uint32x4 |
| |
| // ReshapeToUint8s reinterprets the bits of a Uint32x4 vector as a Uint8x16 vector |
| func (x Uint32x4) ReshapeToUint8s() Uint8x16 |
| |
| // ReshapeToUint16s reinterprets the bits of a Uint32x4 vector as a Uint16x8 vector |
| func (x Uint32x4) ReshapeToUint16s() Uint16x8 |
| |
| // ReshapeToUint64s reinterprets the bits of a Uint32x4 vector as a Uint64x2 vector |
| func (x Uint32x4) ReshapeToUint64s() Uint64x2 |
| |
| // BitsToFloat64 reinterprets the bits of a Uint64x2 vector as a Float64x2 vector |
| func (x Uint64x2) BitsToFloat64() Float64x2 |
| |
| // ToBits reinterprets the bits of a Float64x2 vector as a Uint64x2 vector |
| func (x Float64x2) ToBits() Uint64x2 |
| |
| // BitsToInt64 reinterprets the bits of a Uint64x2 vector as a Int64x2 vector |
| func (x Uint64x2) BitsToInt64() Int64x2 |
| |
| // ConvertToInt64 converts a Uint64x2 vector to a Int64x2 vector |
| func (x Uint64x2) ConvertToInt64() Int64x2 |
| |
| // ConvertToUint64 converts a Int64x2 vector to a Uint64x2 vector |
| func (x Int64x2) ConvertToUint64() Uint64x2 |
| |
| // ToBits reinterprets the bits of a Int64x2 vector as a Uint64x2 vector |
| func (x Int64x2) ToBits() Uint64x2 |
| |
| // ReshapeToUint8s reinterprets the bits of a Uint64x2 vector as a Uint8x16 vector |
| func (x Uint64x2) ReshapeToUint8s() Uint8x16 |
| |
| // ReshapeToUint16s reinterprets the bits of a Uint64x2 vector as a Uint16x8 vector |
| func (x Uint64x2) ReshapeToUint16s() Uint16x8 |
| |
| // ReshapeToUint32s reinterprets the bits of a Uint64x2 vector as a Uint32x4 vector |
| func (x Uint64x2) ReshapeToUint32s() Uint32x4 |
| |
| // ToInt8x16 converts from Mask8x16 to Int8x16. |
| // If element i in the mask is "true", all bits in element i of the resulting |
| // vector will be set. |
| func (from Mask8x16) ToInt8x16() (to Int8x16) |
| |
| // asMask converts from Int8x16 to Mask8x16. |
| func (from Int8x16) asMask() (to Mask8x16) |
| |
| func (x Mask8x16) And(y Mask8x16) Mask8x16 |
| |
| func (x Mask8x16) Or(y Mask8x16) Mask8x16 |
| |
| func (x Mask8x16) Not() Mask8x16 |
| |
| // ToInt16x8 converts from Mask16x8 to Int16x8. |
| // If element i in the mask is "true", all bits in element i of the resulting |
| // vector will be set. |
| func (from Mask16x8) ToInt16x8() (to Int16x8) |
| |
| // asMask converts from Int16x8 to Mask16x8. |
| func (from Int16x8) asMask() (to Mask16x8) |
| |
| func (x Mask16x8) And(y Mask16x8) Mask16x8 |
| |
| func (x Mask16x8) Or(y Mask16x8) Mask16x8 |
| |
| func (x Mask16x8) Not() Mask16x8 |
| |
| // ToInt32x4 converts from Mask32x4 to Int32x4. |
| // If element i in the mask is "true", all bits in element i of the resulting |
| // vector will be set. |
| func (from Mask32x4) ToInt32x4() (to Int32x4) |
| |
| // asMask converts from Int32x4 to Mask32x4. |
| func (from Int32x4) asMask() (to Mask32x4) |
| |
| func (x Mask32x4) And(y Mask32x4) Mask32x4 |
| |
| func (x Mask32x4) Or(y Mask32x4) Mask32x4 |
| |
| func (x Mask32x4) Not() Mask32x4 |
| |
| // ToInt64x2 converts from Mask64x2 to Int64x2. |
| // If element i in the mask is "true", all bits in element i of the resulting |
| // vector will be set. |
| func (from Mask64x2) ToInt64x2() (to Int64x2) |
| |
| // asMask converts from Int64x2 to Mask64x2. |
| func (from Int64x2) asMask() (to Mask64x2) |
| |
| func (x Mask64x2) And(y Mask64x2) Mask64x2 |
| |
| func (x Mask64x2) Or(y Mask64x2) Mask64x2 |
| |
| func (x Mask64x2) Not() Mask64x2 |