// Code generated by 'wasmgen'; DO NOT EDIT.

//go:build goexperiment.simd && wasm

package archsimd

// Abs returns the elementwise absolute value of x.
//
// Asm: I8x16Abs
func (x Int8x16) Abs() Int8x16

// Abs returns the elementwise absolute value of x.
//
// Asm: I16x8Abs
func (x Int16x8) Abs() Int16x8

// Abs returns the elementwise absolute value of x.
//
// Asm: I32x4Abs
func (x Int32x4) Abs() Int32x4

// Abs returns the elementwise absolute value of x.
//
// Asm: F32x4Abs
func (x Float32x4) Abs() Float32x4

// Abs returns the elementwise absolute value of x.
//
// Asm: I64x2Abs
func (x Int64x2) Abs() Int64x2

// Abs returns the elementwise absolute value of x.
//
// Asm: F64x2Abs
func (x Float64x2) Abs() Float64x2

// Add returns the result of adding x and y, elementwise.
//
// Asm: I8x16Add
func (x Int8x16) Add(y Int8x16) Int8x16

// Add returns the result of adding x and y, elementwise.
//
// Asm: I8x16Add
func (x Uint8x16) Add(y Uint8x16) Uint8x16

// Add returns the result of adding x and y, elementwise.
//
// Asm: I16x8Add
func (x Int16x8) Add(y Int16x8) Int16x8

// Add returns the result of adding x and y, elementwise.
//
// Asm: I16x8Add
func (x Uint16x8) Add(y Uint16x8) Uint16x8

// Add returns the result of adding x and y, elementwise.
//
// Asm: I32x4Add
func (x Int32x4) Add(y Int32x4) Int32x4

// Add returns the result of adding x and y, elementwise.
//
// Asm: I32x4Add
func (x Uint32x4) Add(y Uint32x4) Uint32x4

// Add returns the result of adding x and y, elementwise.
//
// Asm: F32x4Add
func (x Float32x4) Add(y Float32x4) Float32x4

// Add returns the result of adding x and y, elementwise.
//
// Asm: I64x2Add
func (x Int64x2) Add(y Int64x2) Int64x2

// Add returns the result of adding x and y, elementwise.
//
// Asm: I64x2Add
func (x Uint64x2) Add(y Uint64x2) Uint64x2

// Add returns the result of adding x and y, elementwise.
//
// Asm: F64x2Add
func (x Float64x2) Add(y Float64x2) Float64x2

// AddSaturated returns the result of adding x and y, saturating instead of overflowing, elementwise.
//
// Asm: I8x16AddSatS
func (x Int8x16) AddSaturated(y Int8x16) Int8x16

// AddSaturated returns the result of adding x and y, saturating instead of overflowing, elementwise.
//
// Asm: I8x16AddSatU
func (x Uint8x16) AddSaturated(y Uint8x16) Uint8x16

// AddSaturated returns the result of adding x and y, saturating instead of overflowing, elementwise.
//
// Asm: I16x8AddSatS
func (x Int16x8) AddSaturated(y Int16x8) Int16x8

// AddSaturated returns the result of adding x and y, saturating instead of overflowing, elementwise.
//
// Asm: I16x8AddSatU
func (x Uint16x8) AddSaturated(y Uint16x8) Uint16x8

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Int8x16) And(y Int8x16) Int8x16

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Uint8x16) And(y Uint8x16) Uint8x16

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Mask8x16) And(y Mask8x16) Mask8x16

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Int16x8) And(y Int16x8) Int16x8

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Uint16x8) And(y Uint16x8) Uint16x8

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Mask16x8) And(y Mask16x8) Mask16x8

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Int32x4) And(y Int32x4) Int32x4

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Uint32x4) And(y Uint32x4) Uint32x4

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Mask32x4) And(y Mask32x4) Mask32x4

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Int64x2) And(y Int64x2) Int64x2

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Uint64x2) And(y Uint64x2) Uint64x2

// And returns the bitwise AND of x and y.
//
// Asm: V128And
func (x Mask64x2) And(y Mask64x2) Mask64x2

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Int8x16) AndNot(y Int8x16) Int8x16

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Uint8x16) AndNot(y Uint8x16) Uint8x16

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Mask8x16) AndNot(y Mask8x16) Mask8x16

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Int16x8) AndNot(y Int16x8) Int16x8

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Uint16x8) AndNot(y Uint16x8) Uint16x8

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Mask16x8) AndNot(y Mask16x8) Mask16x8

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Int32x4) AndNot(y Int32x4) Int32x4

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Uint32x4) AndNot(y Uint32x4) Uint32x4

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Mask32x4) AndNot(y Mask32x4) Mask32x4

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Int64x2) AndNot(y Int64x2) Int64x2

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Uint64x2) AndNot(y Uint64x2) Uint64x2

// AndNot returns the bitwise AND NOT of x and y (x & ^y).
//
// Asm: V128Andnot
func (x Mask64x2) AndNot(y Mask64x2) Mask64x2

// Average returns the elementwise average of unsigned integers in x and y.
//
// Asm: I8x16AvgrU
func (x Uint8x16) Average(y Uint8x16) Uint8x16

// Average returns the elementwise average of unsigned integers in x and y.
//
// Asm: I16x8AvgrU
func (x Uint16x8) Average(y Uint16x8) Uint16x8

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Int8x16) BitSelect(y Int8x16, cond Int8x16) Int8x16

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Uint8x16) BitSelect(y Uint8x16, cond Uint8x16) Uint8x16

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Int16x8) BitSelect(y Int16x8, cond Int16x8) Int16x8

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Uint16x8) BitSelect(y Uint16x8, cond Uint16x8) Uint16x8

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Int32x4) BitSelect(y Int32x4, cond Int32x4) Int32x4

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Uint32x4) BitSelect(y Uint32x4, cond Uint32x4) Uint32x4

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Int64x2) BitSelect(y Int64x2, cond Int64x2) Int64x2

// BitSelect returns the bitwise selection if mask[i] then x[i] else y[i]
//
// Asm: V128Bitselect
func (x Uint64x2) BitSelect(y Uint64x2, cond Uint64x2) Uint64x2

// Ceil returns the elementwise ceiling of x.
//
// Asm: F32x4Ceil
func (x Float32x4) Ceil() Float32x4

// Ceil returns the elementwise ceiling of x.
//
// Asm: F64x2Ceil
func (x Float64x2) Ceil() Float64x2

// ConvertLo2ToFloat64 converts the first two elements of x to Float64x2.
//
// Asm: F64x2ConvertLowI32x4S
func (x Int32x4) ConvertLo2ToFloat64() Float64x2

// ConvertLo2ToFloat64 converts the first two elements of x to Float64x2.
//
// Asm: F64x2ConvertLowI32x4U
func (x Uint32x4) ConvertLo2ToFloat64() Float64x2

// ConvertToFloat32 converts elements of x to Float32x4.
//
// Asm: F32x4ConvertI32x4S
func (x Int32x4) ConvertToFloat32() Float32x4

// ConvertToFloat32 converts elements of x to Float32x4.
//
// Asm: F32x4ConvertI32x4U
func (x Uint32x4) ConvertToFloat32() Float32x4

// ConvertToInt32 converts elements of x to Int32x4.
//
// Asm: I32x4TruncSatF32x4S
func (x Float32x4) ConvertToInt32() Int32x4

// ConvertToUint32 converts elements of x to Uint32x4.
//
// Asm: I32x4TruncSatF32x4U
func (x Float32x4) ConvertToUint32() Uint32x4

// Div returns the result of dividing x by y, elementwise.
//
// Asm: F32x4Div
func (x Float32x4) Div(y Float32x4) Float32x4

// Div returns the result of dividing x by y, elementwise.
//
// Asm: F64x2Div
func (x Float64x2) Div(y Float64x2) Float64x2

// Equal returns true if x equals y, elementwise.
//
// Asm: I8x16Eq
func (x Int8x16) Equal(y Int8x16) Mask8x16

// Equal returns true if x equals y, elementwise.
//
// Asm: I8x16Eq
func (x Uint8x16) Equal(y Uint8x16) Mask8x16

// Equal returns true if x equals y, elementwise.
//
// Asm: I16x8Eq
func (x Int16x8) Equal(y Int16x8) Mask16x8

// Equal returns true if x equals y, elementwise.
//
// Asm: I16x8Eq
func (x Uint16x8) Equal(y Uint16x8) Mask16x8

// Equal returns true if x equals y, elementwise.
//
// Asm: I32x4Eq
func (x Int32x4) Equal(y Int32x4) Mask32x4

// Equal returns true if x equals y, elementwise.
//
// Asm: I32x4Eq
func (x Uint32x4) Equal(y Uint32x4) Mask32x4

// Equal returns true if x equals y, elementwise.
//
// Asm: F32x4Eq
func (x Float32x4) Equal(y Float32x4) Mask32x4

// Equal returns true if x equals y, elementwise.
//
// Asm: I64x2Eq
func (x Int64x2) Equal(y Int64x2) Mask64x2

// Equal returns true if x equals y, elementwise.
//
// Asm: I64x2Eq
func (x Uint64x2) Equal(y Uint64x2) Mask64x2

// Equal returns true if x equals y, elementwise.
//
// Asm: F64x2Eq
func (x Float64x2) Equal(y Float64x2) Mask64x2

// ExtendHi2ToInt64
//
// Asm: I64x2ExtendHighI32x4S
func (x Int32x4) ExtendHi2ToInt64() Int64x2

// ExtendHi2ToUint64
//
// Asm: I64x2ExtendHighI32x4U
func (x Uint32x4) ExtendHi2ToUint64() Uint64x2

// ExtendHi4ToInt32
//
// Asm: I32x4ExtendHighI16x8S
func (x Int16x8) ExtendHi4ToInt32() Int32x4

// ExtendHi4ToUint32
//
// Asm: I32x4ExtendHighI16x8U
func (x Uint16x8) ExtendHi4ToUint32() Uint32x4

// ExtendHi8ToInt16 extends the higher 8 elements of x to 16-bit integers.
//
// Asm: I16x8ExtendHighI8x16S
func (x Int8x16) ExtendHi8ToInt16() Int16x8

// ExtendHi8ToUint16 extends the higher 8 elements of x to 16-bit unsigned integers.
//
// Asm: I16x8ExtendHighI8x16U
func (x Uint8x16) ExtendHi8ToUint16() Uint16x8

// ExtendLo2ToInt64
//
// Asm: I64x2ExtendLowI32x4S
func (x Int32x4) ExtendLo2ToInt64() Int64x2

// ExtendLo2ToUint64
//
// Asm: I64x2ExtendLowI32x4U
func (x Uint32x4) ExtendLo2ToUint64() Uint64x2

// ExtendLo4ToInt32
//
// Asm: I32x4ExtendLowI16x8S
func (x Int16x8) ExtendLo4ToInt32() Int32x4

// ExtendLo4ToUint32
//
// Asm: I32x4ExtendLowI16x8U
func (x Uint16x8) ExtendLo4ToUint32() Uint32x4

// ExtendLo8ToInt16 extends the lower 8 elements of x to 16-bit integers.
//
// Asm: I16x8ExtendLowI8x16S
func (x Int8x16) ExtendLo8ToInt16() Int16x8

// ExtendLo8ToUint16 extends the lower 8 elements of x to 16-bit unsigned integers.
//
// Asm: I16x8ExtendLowI8x16U
func (x Uint8x16) ExtendLo8ToUint16() Uint16x8

// Floor returns the elementwise floor of x.
//
// Asm: F32x4Floor
func (x Float32x4) Floor() Float32x4

// Floor returns the elementwise floor of x.
//
// Asm: F64x2Floor
func (x Float64x2) Floor() Float64x2

// GetElem gets the lane value at the given index.
//
// Asm: I8x16ExtractLaneS
func (x Int8x16) GetElem(index uint8) int8

// GetElem gets the lane value at the given index.
//
// Asm: I8x16ExtractLaneU
func (x Uint8x16) GetElem(index uint8) uint8

// GetElem gets the lane value at the given index.
//
// Asm: I16x8ExtractLaneS
func (x Int16x8) GetElem(index uint8) int16

// GetElem gets the lane value at the given index.
//
// Asm: I16x8ExtractLaneU
func (x Uint16x8) GetElem(index uint8) uint16

// GetElem gets the lane value at the given index.
//
// Asm: I32x4ExtractLane
func (x Int32x4) GetElem(index uint8) int32

// GetElem gets the lane value at the given index.
//
// Asm: I32x4ExtractLane
func (x Uint32x4) GetElem(index uint8) uint32

// GetElem gets the lane value at the given index.
//
// Asm: F32x4ExtractLane
func (x Float32x4) GetElem(index uint8) float32

// GetElem gets the lane value at the given index.
//
// Asm: I64x2ExtractLane
func (x Int64x2) GetElem(index uint8) int64

// GetElem gets the lane value at the given index.
//
// Asm: I64x2ExtractLane
func (x Uint64x2) GetElem(index uint8) uint64

// GetElem gets the lane value at the given index.
//
// Asm: F64x2ExtractLane
func (x Float64x2) GetElem(index uint8) float64

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I8x16GtS
func (x Int8x16) Greater(y Int8x16) Mask8x16

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I8x16GtU
func (x Uint8x16) Greater(y Uint8x16) Mask8x16

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I16x8GtS
func (x Int16x8) Greater(y Int16x8) Mask16x8

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I16x8GtU
func (x Uint16x8) Greater(y Uint16x8) Mask16x8

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I32x4GtS
func (x Int32x4) Greater(y Int32x4) Mask32x4

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I32x4GtU
func (x Uint32x4) Greater(y Uint32x4) Mask32x4

// Greater returns true if x is greater than y, elementwise.
//
// Asm: F32x4Gt
func (x Float32x4) Greater(y Float32x4) Mask32x4

// Greater returns true if x is greater than y, elementwise.
//
// Asm: I64x2GtS
func (x Int64x2) Greater(y Int64x2) Mask64x2

// Greater returns true if x is greater than y, elementwise.
//
// Asm: F64x2Gt
func (x Float64x2) Greater(y Float64x2) Mask64x2

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I8x16GeS
func (x Int8x16) GreaterEqual(y Int8x16) Mask8x16

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I8x16GeU
func (x Uint8x16) GreaterEqual(y Uint8x16) Mask8x16

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I16x8GeS
func (x Int16x8) GreaterEqual(y Int16x8) Mask16x8

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I16x8GeU
func (x Uint16x8) GreaterEqual(y Uint16x8) Mask16x8

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I32x4GeS
func (x Int32x4) GreaterEqual(y Int32x4) Mask32x4

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I32x4GeU
func (x Uint32x4) GreaterEqual(y Uint32x4) Mask32x4

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: F32x4Ge
func (x Float32x4) GreaterEqual(y Float32x4) Mask32x4

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: I64x2GeS
func (x Int64x2) GreaterEqual(y Int64x2) Mask64x2

// GreaterEqual returns true if x is greater than or equal to y, elementwise.
//
// Asm: F64x2Ge
func (x Float64x2) GreaterEqual(y Float64x2) Mask64x2

// Less returns true if x is less than y, elementwise.
//
// Asm: I8x16LtS
func (x Int8x16) Less(y Int8x16) Mask8x16

// Less returns true if x is less than y, elementwise.
//
// Asm: I8x16LtU
func (x Uint8x16) Less(y Uint8x16) Mask8x16

// Less returns true if x is less than y, elementwise.
//
// Asm: I16x8LtS
func (x Int16x8) Less(y Int16x8) Mask16x8

// Less returns true if x is less than y, elementwise.
//
// Asm: I16x8LtU
func (x Uint16x8) Less(y Uint16x8) Mask16x8

// Less returns true if x is less than y, elementwise.
//
// Asm: I32x4LtS
func (x Int32x4) Less(y Int32x4) Mask32x4

// Less returns true if x is less than y, elementwise.
//
// Asm: I32x4LtU
func (x Uint32x4) Less(y Uint32x4) Mask32x4

// Less returns true if x is less than y, elementwise.
//
// Asm: F32x4Lt
func (x Float32x4) Less(y Float32x4) Mask32x4

// Less returns true if x is less than y, elementwise.
//
// Asm: I64x2LtS
func (x Int64x2) Less(y Int64x2) Mask64x2

// Less returns true if x is less than y, elementwise.
//
// Asm: F64x2Lt
func (x Float64x2) Less(y Float64x2) Mask64x2

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I8x16LeS
func (x Int8x16) LessEqual(y Int8x16) Mask8x16

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I8x16LeU
func (x Uint8x16) LessEqual(y Uint8x16) Mask8x16

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I16x8LeS
func (x Int16x8) LessEqual(y Int16x8) Mask16x8

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I16x8LeU
func (x Uint16x8) LessEqual(y Uint16x8) Mask16x8

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I32x4LeS
func (x Int32x4) LessEqual(y Int32x4) Mask32x4

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I32x4LeU
func (x Uint32x4) LessEqual(y Uint32x4) Mask32x4

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: F32x4Le
func (x Float32x4) LessEqual(y Float32x4) Mask32x4

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: I64x2LeS
func (x Int64x2) LessEqual(y Int64x2) Mask64x2

// LessEqual returns true if x is less than or equal to y, elementwise.
//
// Asm: F64x2Le
func (x Float64x2) LessEqual(y Float64x2) Mask64x2

// LookupOrZero returns the elements of x as indexed by the elements of i. If an index is out of range, its result is 0.
//
//	if 0 <= indices[i] && indices[i] < len(table) {
//	    result[i] = table[indices[i]]
//	} else {
//	    result[i] = 0
//	}
//
// Asm: I8x16Swizzle
func (x Int8x16) LookupOrZero(i Int8x16) Int8x16

// Max returns the elementwise maximum of x and y.
//
// Asm: I8x16MaxS
func (x Int8x16) Max(y Int8x16) Int8x16

// Max returns the elementwise maximum of x and y.
//
// Asm: I8x16MaxU
func (x Uint8x16) Max(y Uint8x16) Uint8x16

// Max returns the elementwise maximum of x and y.
//
// Asm: I16x8MaxS
func (x Int16x8) Max(y Int16x8) Int16x8

// Max returns the elementwise maximum of x and y.
//
// Asm: I16x8MaxU
func (x Uint16x8) Max(y Uint16x8) Uint16x8

// Max returns the elementwise maximum of x and y.
//
// Asm: I32x4MaxS
func (x Int32x4) Max(y Int32x4) Int32x4

// Max returns the elementwise maximum of x and y.
//
// Asm: I32x4MaxU
func (x Uint32x4) Max(y Uint32x4) Uint32x4

// Max returns the elementwise maximum of x and y.
//
// Asm: F32x4Max
func (x Float32x4) Max(y Float32x4) Float32x4

// Max returns the elementwise maximum of x and y.
//
// Asm: F64x2Max
func (x Float64x2) Max(y Float64x2) Float64x2

// Min returns the elementwise minimum of x and y.
//
// Asm: I8x16MinS
func (x Int8x16) Min(y Int8x16) Int8x16

// Min returns the elementwise minimum of x and y.
//
// Asm: I8x16MinU
func (x Uint8x16) Min(y Uint8x16) Uint8x16

// Min returns the elementwise minimum of x and y.
//
// Asm: I16x8MinS
func (x Int16x8) Min(y Int16x8) Int16x8

// Min returns the elementwise minimum of x and y.
//
// Asm: I16x8MinU
func (x Uint16x8) Min(y Uint16x8) Uint16x8

// Min returns the elementwise minimum of x and y.
//
// Asm: I32x4MinS
func (x Int32x4) Min(y Int32x4) Int32x4

// Min returns the elementwise minimum of x and y.
//
// Asm: I32x4MinU
func (x Uint32x4) Min(y Uint32x4) Uint32x4

// Min returns the elementwise minimum of x and y.
//
// Asm: F32x4Min
func (x Float32x4) Min(y Float32x4) Float32x4

// Min returns the elementwise minimum of x and y.
//
// Asm: F64x2Min
func (x Float64x2) Min(y Float64x2) Float64x2

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I16x8Mul
func (x Int16x8) Mul(y Int16x8) Int16x8

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I16x8Mul
func (x Uint16x8) Mul(y Uint16x8) Uint16x8

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I32x4Mul
func (x Int32x4) Mul(y Int32x4) Int32x4

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I32x4Mul
func (x Uint32x4) Mul(y Uint32x4) Uint32x4

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: F32x4Mul
func (x Float32x4) Mul(y Float32x4) Float32x4

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I64x2Mul
func (x Int64x2) Mul(y Int64x2) Int64x2

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: I64x2Mul
func (x Uint64x2) Mul(y Uint64x2) Uint64x2

// Mul returns the result of multiplying x and y, elementwise.
//
// Asm: F64x2Mul
func (x Float64x2) Mul(y Float64x2) Float64x2

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+8] * y[i+8], for 0 <= i < 8 == |x|/2.
//
// Asm: I16x8ExtmulHighI8x16S
func (x Int8x16) MulWidenHi(y Int8x16) Int16x8

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+8] * y[i+8], for 0 <= i < 8 == |x|/2.
//
// Asm: I16x8ExtmulHighI8x16U
func (x Uint8x16) MulWidenHi(y Uint8x16) Uint16x8

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+4] * y[i+4], for 0 <= i < 4 == |x|/2.
//
// Asm: I32x4ExtmulHighI16x8S
func (x Int16x8) MulWidenHi(y Int16x8) Int32x4

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+4] * y[i+4], for 0 <= i < 4 == |x|/2.
//
// Asm: I32x4ExtmulHighI16x8U
func (x Uint16x8) MulWidenHi(y Uint16x8) Uint32x4

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+2] * y[i+2], for 0 <= i < 2 == |x|/2.
//
// Asm: I64x2ExtmulHighI32x4S
func (x Int32x4) MulWidenHi(y Int32x4) Int64x2

// MulWidenHi returns the doubled-width product of respective elements of the upper halves of x and y.
//
//	Result[i] = x[i+2] * y[i+2], for 0 <= i < 2 == |x|/2.
//
// Asm: I64x2ExtmulHighI32x4U
func (x Uint32x4) MulWidenHi(y Uint32x4) Uint64x2

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 8 == |x|/2.
//
// Asm: I16x8ExtmulLowI8x16S
func (x Int8x16) MulWidenLo(y Int8x16) Int16x8

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 8 == |x|/2.
//
// Asm: I16x8ExtmulLowI8x16U
func (x Uint8x16) MulWidenLo(y Uint8x16) Uint16x8

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 4 == |x|/2.
//
// Asm: I32x4ExtmulLowI16x8S
func (x Int16x8) MulWidenLo(y Int16x8) Int32x4

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 4 == |x|/2.
//
// Asm: I32x4ExtmulLowI16x8U
func (x Uint16x8) MulWidenLo(y Uint16x8) Uint32x4

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 2 == |x|/2.
//
// Asm: I64x2ExtmulLowI32x4S
func (x Int32x4) MulWidenLo(y Int32x4) Int64x2

// MulWidenLo returns the doubled-width product of respective elements of the lower halves of x and y.
//
//	Result[i] = x[i] * y[i], for 0 <= i < 2 == |x|/2.
//
// Asm: I64x2ExtmulLowI32x4U
func (x Uint32x4) MulWidenLo(y Uint32x4) Uint64x2

// Neg returns the elementwise negation of x.
//
// Asm: I8x16Neg
func (x Int8x16) Neg() Int8x16

// Neg returns the elementwise negation of x.
//
// Asm: I16x8Neg
func (x Int16x8) Neg() Int16x8

// Neg returns the elementwise negation of x.
//
// Asm: I32x4Neg
func (x Int32x4) Neg() Int32x4

// Neg returns the elementwise negation of x.
//
// Asm: F32x4Neg
func (x Float32x4) Neg() Float32x4

// Neg returns the elementwise negation of x.
//
// Asm: I64x2Neg
func (x Int64x2) Neg() Int64x2

// Neg returns the elementwise negation of x.
//
// Asm: F64x2Neg
func (x Float64x2) Neg() Float64x2

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Int8x16) Not() Int8x16

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Uint8x16) Not() Uint8x16

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Int16x8) Not() Int16x8

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Uint16x8) Not() Uint16x8

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Int32x4) Not() Int32x4

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Uint32x4) Not() Uint32x4

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Int64x2) Not() Int64x2

// Not returns the bitwise NOT of x.
//
// Asm: V128Not
func (x Uint64x2) Not() Uint64x2

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I8x16Ne
func (x Int8x16) NotEqual(y Int8x16) Mask8x16

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I8x16Ne
func (x Uint8x16) NotEqual(y Uint8x16) Mask8x16

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I16x8Ne
func (x Int16x8) NotEqual(y Int16x8) Mask16x8

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I16x8Ne
func (x Uint16x8) NotEqual(y Uint16x8) Mask16x8

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I32x4Ne
func (x Int32x4) NotEqual(y Int32x4) Mask32x4

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I32x4Ne
func (x Uint32x4) NotEqual(y Uint32x4) Mask32x4

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: F32x4Ne
func (x Float32x4) NotEqual(y Float32x4) Mask32x4

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I64x2Ne
func (x Int64x2) NotEqual(y Int64x2) Mask64x2

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: I64x2Ne
func (x Uint64x2) NotEqual(y Uint64x2) Mask64x2

// NotEqual returns true if x does not equal y, elementwise.
//
// Asm: F64x2Ne
func (x Float64x2) NotEqual(y Float64x2) Mask64x2

// OnesCount returns the elementwise population count (number of bits set).
//
// Asm: I8x16Popcnt
func (x Int8x16) OnesCount() Int8x16

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Int8x16) Or(y Int8x16) Int8x16

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Uint8x16) Or(y Uint8x16) Uint8x16

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Mask8x16) Or(y Mask8x16) Mask8x16

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Int16x8) Or(y Int16x8) Int16x8

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Uint16x8) Or(y Uint16x8) Uint16x8

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Mask16x8) Or(y Mask16x8) Mask16x8

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Int32x4) Or(y Int32x4) Int32x4

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Uint32x4) Or(y Uint32x4) Uint32x4

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Mask32x4) Or(y Mask32x4) Mask32x4

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Int64x2) Or(y Int64x2) Int64x2

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Uint64x2) Or(y Uint64x2) Uint64x2

// Or returns the bitwise OR of x and y.
//
// Asm: V128Or
func (x Mask64x2) Or(y Mask64x2) Mask64x2

// RotateAllLeft
//
// Asm: I8x16RotateAllLeft
func (x Int8x16) RotateAllLeft(shift uint64) Int8x16

// RotateAllLeft
//
// Asm: I8x16RotateAllLeft
func (x Uint8x16) RotateAllLeft(shift uint64) Uint8x16

// RotateAllLeft
//
// Asm: I16x8RotateAllLeft
func (x Int16x8) RotateAllLeft(shift uint64) Int16x8

// RotateAllLeft
//
// Asm: I16x8RotateAllLeft
func (x Uint16x8) RotateAllLeft(shift uint64) Uint16x8

// RotateAllLeft
//
// Asm: I32x4RotateAllLeft
func (x Int32x4) RotateAllLeft(shift uint64) Int32x4

// RotateAllLeft
//
// Asm: I32x4RotateAllLeft
func (x Uint32x4) RotateAllLeft(shift uint64) Uint32x4

// RotateAllLeft
//
// Asm: I64x2RotateAllLeft
func (x Int64x2) RotateAllLeft(shift uint64) Int64x2

// RotateAllLeft
//
// Asm: I64x2RotateAllLeft
func (x Uint64x2) RotateAllLeft(shift uint64) Uint64x2

// RotateAllRight
//
// Asm: I8x16RotateAllRight
func (x Int8x16) RotateAllRight(shift uint64) Int8x16

// RotateAllRight
//
// Asm: I8x16RotateAllRight
func (x Uint8x16) RotateAllRight(shift uint64) Uint8x16

// RotateAllRight
//
// Asm: I16x8RotateAllRight
func (x Int16x8) RotateAllRight(shift uint64) Int16x8

// RotateAllRight
//
// Asm: I16x8RotateAllRight
func (x Uint16x8) RotateAllRight(shift uint64) Uint16x8

// RotateAllRight
//
// Asm: I32x4RotateAllRight
func (x Int32x4) RotateAllRight(shift uint64) Int32x4

// RotateAllRight
//
// Asm: I32x4RotateAllRight
func (x Uint32x4) RotateAllRight(shift uint64) Uint32x4

// RotateAllRight
//
// Asm: I64x2RotateAllRight
func (x Int64x2) RotateAllRight(shift uint64) Int64x2

// RotateAllRight
//
// Asm: I64x2RotateAllRight
func (x Uint64x2) RotateAllRight(shift uint64) Uint64x2

// Round returns the elementwise nearest integer, rounding ties to even.
//
// Asm: F32x4Nearest
func (x Float32x4) Round() Float32x4

// Round returns the elementwise nearest integer, rounding ties to even.
//
// Asm: F64x2Nearest
func (x Float64x2) Round() Float64x2

// SetElem sets the lane at the given index to y.
//
// Asm: I8x16ReplaceLane
func (x Int8x16) SetElem(index uint8, y int8) Int8x16

// SetElem sets the lane at the given index to y.
//
// Asm: I8x16ReplaceLane
func (x Uint8x16) SetElem(index uint8, y uint8) Uint8x16

// SetElem sets the lane at the given index to y.
//
// Asm: I16x8ReplaceLane
func (x Int16x8) SetElem(index uint8, y int16) Int16x8

// SetElem sets the lane at the given index to y.
//
// Asm: I16x8ReplaceLane
func (x Uint16x8) SetElem(index uint8, y uint16) Uint16x8

// SetElem sets the lane at the given index to y.
//
// Asm: I32x4ReplaceLane
func (x Int32x4) SetElem(index uint8, y int32) Int32x4

// SetElem sets the lane at the given index to y.
//
// Asm: I32x4ReplaceLane
func (x Uint32x4) SetElem(index uint8, y uint32) Uint32x4

// SetElem sets the lane at the given index to y.
//
// Asm: F32x4ReplaceLane
func (x Float32x4) SetElem(index uint8, y float32) Float32x4

// SetElem sets the lane at the given index to y.
//
// Asm: I64x2ReplaceLane
func (x Int64x2) SetElem(index uint8, y int64) Int64x2

// SetElem sets the lane at the given index to y.
//
// Asm: I64x2ReplaceLane
func (x Uint64x2) SetElem(index uint8, y uint64) Uint64x2

// SetElem sets the lane at the given index to y.
//
// Asm: F64x2ReplaceLane
func (x Float64x2) SetElem(index uint8, y float64) Float64x2

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I8x16Shl
func (x Int8x16) ShiftAllLeft(y uint64) Int8x16

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I8x16Shl
func (x Uint8x16) ShiftAllLeft(y uint64) Uint8x16

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I16x8Shl
func (x Int16x8) ShiftAllLeft(y uint64) Int16x8

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I16x8Shl
func (x Uint16x8) ShiftAllLeft(y uint64) Uint16x8

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I32x4Shl
func (x Int32x4) ShiftAllLeft(y uint64) Int32x4

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I32x4Shl
func (x Uint32x4) ShiftAllLeft(y uint64) Uint32x4

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I64x2Shl
func (x Int64x2) ShiftAllLeft(y uint64) Int64x2

// ShiftAllLeft returns the elementwise left shift of x by y bits.
//
// Asm: I64x2Shl
func (x Uint64x2) ShiftAllLeft(y uint64) Uint64x2

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I8x16ShrS
func (x Int8x16) ShiftAllRight(y uint64) Int8x16

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I8x16ShrU
func (x Uint8x16) ShiftAllRight(y uint64) Uint8x16

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I16x8ShrS
func (x Int16x8) ShiftAllRight(y uint64) Int16x8

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I16x8ShrU
func (x Uint16x8) ShiftAllRight(y uint64) Uint16x8

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I32x4ShrS
func (x Int32x4) ShiftAllRight(y uint64) Int32x4

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I32x4ShrU
func (x Uint32x4) ShiftAllRight(y uint64) Uint32x4

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I64x2ShrS
func (x Int64x2) ShiftAllRight(y uint64) Int64x2

// ShiftAllRight returns the elementwise right shift of x by y bits.
//
// Asm: I64x2ShrU
func (x Uint64x2) ShiftAllRight(y uint64) Uint64x2

// Sqrt returns the elementwise square root of x.
//
// Asm: F32x4Sqrt
func (x Float32x4) Sqrt() Float32x4

// Sqrt returns the elementwise square root of x.
//
// Asm: F64x2Sqrt
func (x Float64x2) Sqrt() Float64x2

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I8x16Sub
func (x Int8x16) Sub(y Int8x16) Int8x16

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I8x16Sub
func (x Uint8x16) Sub(y Uint8x16) Uint8x16

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I16x8Sub
func (x Int16x8) Sub(y Int16x8) Int16x8

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I16x8Sub
func (x Uint16x8) Sub(y Uint16x8) Uint16x8

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I32x4Sub
func (x Int32x4) Sub(y Int32x4) Int32x4

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I32x4Sub
func (x Uint32x4) Sub(y Uint32x4) Uint32x4

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: F32x4Sub
func (x Float32x4) Sub(y Float32x4) Float32x4

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I64x2Sub
func (x Int64x2) Sub(y Int64x2) Int64x2

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: I64x2Sub
func (x Uint64x2) Sub(y Uint64x2) Uint64x2

// Sub returns the result of subtracting y from x, elementwise.
//
// Asm: F64x2Sub
func (x Float64x2) Sub(y Float64x2) Float64x2

// SubSaturated returns the result of subtracting x and y, saturating instead of overflowing, elementwise.
//
// Asm: I8x16SubSatS
func (x Int8x16) SubSaturated(y Int8x16) Int8x16

// SubSaturated returns the result of subtracting x and y, saturating instead of overflowing, elementwise.
//
// Asm: I8x16SubSatU
func (x Uint8x16) SubSaturated(y Uint8x16) Uint8x16

// SubSaturated returns the result of subtracting x and y, saturating instead of overflowing, elementwise.
//
// Asm: I16x8SubSatS
func (x Int16x8) SubSaturated(y Int16x8) Int16x8

// SubSaturated returns the result of subtracting x and y, saturating instead of overflowing, elementwise.
//
// Asm: I16x8SubSatU
func (x Uint16x8) SubSaturated(y Uint16x8) Uint16x8

// Trunc returns the elementwise truncation of x.
//
// Asm: F32x4Trunc
func (x Float32x4) Trunc() Float32x4

// Trunc returns the elementwise truncation of x.
//
// Asm: F64x2Trunc
func (x Float64x2) Trunc() Float64x2

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Int8x16) Xor(y Int8x16) Int8x16

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Uint8x16) Xor(y Uint8x16) Uint8x16

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Mask8x16) Xor(y Mask8x16) Mask8x16

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Int16x8) Xor(y Int16x8) Int16x8

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Uint16x8) Xor(y Uint16x8) Uint16x8

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Mask16x8) Xor(y Mask16x8) Mask16x8

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Int32x4) Xor(y Int32x4) Int32x4

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Uint32x4) Xor(y Uint32x4) Uint32x4

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Mask32x4) Xor(y Mask32x4) Mask32x4

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Int64x2) Xor(y Int64x2) Int64x2

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Uint64x2) Xor(y Uint64x2) Uint64x2

// Xor returns the bitwise XOR of x and y.
//
// Asm: V128Xor
func (x Mask64x2) Xor(y Mask64x2) Mask64x2

// ToMask translates an Int8x16 vector to a Mask8x16 mask vector
// zero becomes false, not-zero becomes true
func (x Int8x16) ToMask() Mask8x16

// ToInt8x16 translates a Mask8x16 mask vector to an Int8x16 int vector
// false becomes zero, true becomes -1
func (x Mask8x16) ToInt8x16() Int8x16

// ToMask translates an Int16x8 vector to a Mask16x8 mask vector
// zero becomes false, not-zero becomes true
func (x Int16x8) ToMask() Mask16x8

// ToInt16x8 translates a Mask16x8 mask vector to an Int16x8 int vector
// false becomes zero, true becomes -1
func (x Mask16x8) ToInt16x8() Int16x8

// ToMask translates an Int32x4 vector to a Mask32x4 mask vector
// zero becomes false, not-zero becomes true
func (x Int32x4) ToMask() Mask32x4

// ToInt32x4 translates a Mask32x4 mask vector to an Int32x4 int vector
// false becomes zero, true becomes -1
func (x Mask32x4) ToInt32x4() Int32x4

// ToMask translates an Int64x2 vector to a Mask64x2 mask vector
// zero becomes false, not-zero becomes true
func (x Int64x2) ToMask() Mask64x2

// ToInt64x2 translates a Mask64x2 mask vector to an Int64x2 int vector
// false becomes zero, true becomes -1
func (x Mask64x2) ToInt64x2() Int64x2

// Masked returns x but with elements zeroed where mask is false.
func (x Int8x16) Masked(mask Mask8x16) Int8x16 {
	im := mask.ToInt8x16()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Int8x16) IfElse(mask Mask8x16, y Int8x16) Int8x16 {
	im := mask.ToInt8x16()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Int16x8) Masked(mask Mask16x8) Int16x8 {
	im := mask.ToInt16x8()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Int16x8) IfElse(mask Mask16x8, y Int16x8) Int16x8 {
	im := mask.ToInt16x8()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Int32x4) Masked(mask Mask32x4) Int32x4 {
	im := mask.ToInt32x4()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Int32x4) IfElse(mask Mask32x4, y Int32x4) Int32x4 {
	im := mask.ToInt32x4()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Int64x2) Masked(mask Mask64x2) Int64x2 {
	im := mask.ToInt64x2()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Int64x2) IfElse(mask Mask64x2, y Int64x2) Int64x2 {
	im := mask.ToInt64x2()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Uint8x16) Masked(mask Mask8x16) Uint8x16 {
	im := mask.ToInt8x16().ToBits()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Uint8x16) IfElse(mask Mask8x16, y Uint8x16) Uint8x16 {
	im := mask.ToInt8x16().ToBits()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Uint16x8) Masked(mask Mask16x8) Uint16x8 {
	im := mask.ToInt16x8().ToBits()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Uint16x8) IfElse(mask Mask16x8, y Uint16x8) Uint16x8 {
	im := mask.ToInt16x8().ToBits()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Uint32x4) Masked(mask Mask32x4) Uint32x4 {
	im := mask.ToInt32x4().ToBits()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Uint32x4) IfElse(mask Mask32x4, y Uint32x4) Uint32x4 {
	im := mask.ToInt32x4().ToBits()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Uint64x2) Masked(mask Mask64x2) Uint64x2 {
	im := mask.ToInt64x2().ToBits()
	return im.And(x)
}

// IfElse returns x but with elements set to y where mask is false.
func (x Uint64x2) IfElse(mask Mask64x2, y Uint64x2) Uint64x2 {
	im := mask.ToInt64x2().ToBits()
	return x.BitSelect(y, im)
}

// Masked returns x but with elements zeroed where mask is false.
func (x Float32x4) Masked(mask Mask32x4) Float32x4 {
	im := mask.ToInt32x4().ToBits()
	return im.And(x.ToBits()).BitsToFloat32()
}

// IfElse returns x but with elements set to y where mask is false.
func (x Float32x4) IfElse(mask Mask32x4, y Float32x4) Float32x4 {
	im := mask.ToInt32x4().ToBits()
	ix := x.ToBits()
	iy := y.ToBits()
	return ix.BitSelect(iy, im).BitsToFloat32()
}

// Masked returns x but with elements zeroed where mask is false.
func (x Float64x2) Masked(mask Mask64x2) Float64x2 {
	im := mask.ToInt64x2().ToBits()
	return im.And(x.ToBits()).BitsToFloat64()
}

// IfElse returns x but with elements set to y where mask is false.
func (x Float64x2) IfElse(mask Mask64x2, y Float64x2) Float64x2 {
	im := mask.ToInt64x2().ToBits()
	ix := x.ToBits()
	iy := y.ToBits()
	return ix.BitSelect(iy, im).BitsToFloat64()
}

// String returns a string representation of SIMD vector x.
func (x Int8x16) String() string {
	var s [16]int8
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Int16x8) String() string {
	var s [8]int16
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Int32x4) String() string {
	var s [4]int32
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Int64x2) String() string {
	var s [2]int64
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Uint8x16) String() string {
	var s [16]uint8
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Uint16x8) String() string {
	var s [8]uint16
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Uint32x4) String() string {
	var s [4]uint32
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Uint64x2) String() string {
	var s [2]uint64
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Float32x4) String() string {
	var s [4]float32
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD vector x.
func (x Float64x2) String() string {
	var s [2]float64
	x.StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD mask x.
func (x Mask8x16) String() string {
	var s [16]int8
	x.ToInt8x16().Neg().StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD mask x.
func (x Mask16x8) String() string {
	var s [8]int16
	x.ToInt16x8().Neg().StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD mask x.
func (x Mask32x4) String() string {
	var s [4]int32
	x.ToInt32x4().Neg().StoreArray(&s)
	return sliceToString(s[:])
}

// String returns a string representation of SIMD mask x.
func (x Mask64x2) String() string {
	var s [2]int64
	x.ToInt64x2().Neg().StoreArray(&s)
	return sliceToString(s[:])
}

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

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

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

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

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

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

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

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

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

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