// Code generated by 'go run -C $GOROOT/src/simd/archsimd/_gen/midway'; DO NOT EDIT.

//go:build goexperiment.simd && amd64

package bridge

import "simd/archsimd"

// These types/methods/functions forward calls to their counterparts in simd/archsimd.
// Interposing this package allows a clean separation of "simd" from "archsimd" and
// also allows additional useful exported declarations that would weirdly pollute archsimd.

type Float32x16 archsimd.Float32x16

func LoadFloat32x16(s []float32) Float32x16 {
	return Float32x16(archsimd.LoadFloat32x16(s))
}
func LoadFloat32x16Part(s []float32) (Float32x16, int) {
	v, n := archsimd.LoadFloat32x16Part(s)
	return Float32x16(v), n
}
func BroadcastFloat32x16(x float32) Float32x16 {
	return Float32x16(archsimd.BroadcastFloat32x16(x))
}

type Float32x4 archsimd.Float32x4

func LoadFloat32x4(s []float32) Float32x4 {
	return Float32x4(archsimd.LoadFloat32x4(s))
}
func LoadFloat32x4Part(s []float32) (Float32x4, int) {
	v, n := archsimd.LoadFloat32x4Part(s)
	return Float32x4(v), n
}
func BroadcastFloat32x4(x float32) Float32x4 {
	return Float32x4(archsimd.BroadcastFloat32x4(x))
}

type Float32x8 archsimd.Float32x8

func LoadFloat32x8(s []float32) Float32x8 {
	return Float32x8(archsimd.LoadFloat32x8(s))
}
func LoadFloat32x8Part(s []float32) (Float32x8, int) {
	v, n := archsimd.LoadFloat32x8Part(s)
	return Float32x8(v), n
}
func BroadcastFloat32x8(x float32) Float32x8 {
	return Float32x8(archsimd.BroadcastFloat32x8(x))
}

type Float64x2 archsimd.Float64x2

func LoadFloat64x2(s []float64) Float64x2 {
	return Float64x2(archsimd.LoadFloat64x2(s))
}
func LoadFloat64x2Part(s []float64) (Float64x2, int) {
	v, n := archsimd.LoadFloat64x2Part(s)
	return Float64x2(v), n
}
func BroadcastFloat64x2(x float64) Float64x2 {
	return Float64x2(archsimd.BroadcastFloat64x2(x))
}

type Float64x4 archsimd.Float64x4

func LoadFloat64x4(s []float64) Float64x4 {
	return Float64x4(archsimd.LoadFloat64x4(s))
}
func LoadFloat64x4Part(s []float64) (Float64x4, int) {
	v, n := archsimd.LoadFloat64x4Part(s)
	return Float64x4(v), n
}
func BroadcastFloat64x4(x float64) Float64x4 {
	return Float64x4(archsimd.BroadcastFloat64x4(x))
}

type Float64x8 archsimd.Float64x8

func LoadFloat64x8(s []float64) Float64x8 {
	return Float64x8(archsimd.LoadFloat64x8(s))
}
func LoadFloat64x8Part(s []float64) (Float64x8, int) {
	v, n := archsimd.LoadFloat64x8Part(s)
	return Float64x8(v), n
}
func BroadcastFloat64x8(x float64) Float64x8 {
	return Float64x8(archsimd.BroadcastFloat64x8(x))
}

type Int16x16 archsimd.Int16x16

func LoadInt16x16(s []int16) Int16x16 {
	return Int16x16(archsimd.LoadInt16x16(s))
}
func LoadInt16x16Part(s []int16) (Int16x16, int) {
	v, n := archsimd.LoadInt16x16Part(s)
	return Int16x16(v), n
}
func BroadcastInt16x16(x int16) Int16x16 {
	return Int16x16(archsimd.BroadcastInt16x16(x))
}

type Int16x32 archsimd.Int16x32

func LoadInt16x32(s []int16) Int16x32 {
	return Int16x32(archsimd.LoadInt16x32(s))
}
func LoadInt16x32Part(s []int16) (Int16x32, int) {
	v, n := archsimd.LoadInt16x32Part(s)
	return Int16x32(v), n
}
func BroadcastInt16x32(x int16) Int16x32 {
	return Int16x32(archsimd.BroadcastInt16x32(x))
}

type Int16x8 archsimd.Int16x8

func LoadInt16x8(s []int16) Int16x8 {
	return Int16x8(archsimd.LoadInt16x8(s))
}
func LoadInt16x8Part(s []int16) (Int16x8, int) {
	v, n := archsimd.LoadInt16x8Part(s)
	return Int16x8(v), n
}
func BroadcastInt16x8(x int16) Int16x8 {
	return Int16x8(archsimd.BroadcastInt16x8(x))
}

type Int32x16 archsimd.Int32x16

func LoadInt32x16(s []int32) Int32x16 {
	return Int32x16(archsimd.LoadInt32x16(s))
}
func LoadInt32x16Part(s []int32) (Int32x16, int) {
	v, n := archsimd.LoadInt32x16Part(s)
	return Int32x16(v), n
}
func BroadcastInt32x16(x int32) Int32x16 {
	return Int32x16(archsimd.BroadcastInt32x16(x))
}

type Int32x4 archsimd.Int32x4

func LoadInt32x4(s []int32) Int32x4 {
	return Int32x4(archsimd.LoadInt32x4(s))
}
func LoadInt32x4Part(s []int32) (Int32x4, int) {
	v, n := archsimd.LoadInt32x4Part(s)
	return Int32x4(v), n
}
func BroadcastInt32x4(x int32) Int32x4 {
	return Int32x4(archsimd.BroadcastInt32x4(x))
}

type Int32x8 archsimd.Int32x8

func LoadInt32x8(s []int32) Int32x8 {
	return Int32x8(archsimd.LoadInt32x8(s))
}
func LoadInt32x8Part(s []int32) (Int32x8, int) {
	v, n := archsimd.LoadInt32x8Part(s)
	return Int32x8(v), n
}
func BroadcastInt32x8(x int32) Int32x8 {
	return Int32x8(archsimd.BroadcastInt32x8(x))
}

type Int64x2 archsimd.Int64x2

func LoadInt64x2(s []int64) Int64x2 {
	return Int64x2(archsimd.LoadInt64x2(s))
}
func LoadInt64x2Part(s []int64) (Int64x2, int) {
	v, n := archsimd.LoadInt64x2Part(s)
	return Int64x2(v), n
}
func BroadcastInt64x2(x int64) Int64x2 {
	return Int64x2(archsimd.BroadcastInt64x2(x))
}

type Int64x4 archsimd.Int64x4

func LoadInt64x4(s []int64) Int64x4 {
	return Int64x4(archsimd.LoadInt64x4(s))
}
func LoadInt64x4Part(s []int64) (Int64x4, int) {
	v, n := archsimd.LoadInt64x4Part(s)
	return Int64x4(v), n
}
func BroadcastInt64x4(x int64) Int64x4 {
	return Int64x4(archsimd.BroadcastInt64x4(x))
}

type Int64x8 archsimd.Int64x8

func LoadInt64x8(s []int64) Int64x8 {
	return Int64x8(archsimd.LoadInt64x8(s))
}
func LoadInt64x8Part(s []int64) (Int64x8, int) {
	v, n := archsimd.LoadInt64x8Part(s)
	return Int64x8(v), n
}
func BroadcastInt64x8(x int64) Int64x8 {
	return Int64x8(archsimd.BroadcastInt64x8(x))
}

type Int8x16 archsimd.Int8x16

func LoadInt8x16(s []int8) Int8x16 {
	return Int8x16(archsimd.LoadInt8x16(s))
}
func LoadInt8x16Part(s []int8) (Int8x16, int) {
	v, n := archsimd.LoadInt8x16Part(s)
	return Int8x16(v), n
}
func BroadcastInt8x16(x int8) Int8x16 {
	return Int8x16(archsimd.BroadcastInt8x16(x))
}

type Int8x32 archsimd.Int8x32

func LoadInt8x32(s []int8) Int8x32 {
	return Int8x32(archsimd.LoadInt8x32(s))
}
func LoadInt8x32Part(s []int8) (Int8x32, int) {
	v, n := archsimd.LoadInt8x32Part(s)
	return Int8x32(v), n
}
func BroadcastInt8x32(x int8) Int8x32 {
	return Int8x32(archsimd.BroadcastInt8x32(x))
}

type Int8x64 archsimd.Int8x64

func LoadInt8x64(s []int8) Int8x64 {
	return Int8x64(archsimd.LoadInt8x64(s))
}
func LoadInt8x64Part(s []int8) (Int8x64, int) {
	v, n := archsimd.LoadInt8x64Part(s)
	return Int8x64(v), n
}
func BroadcastInt8x64(x int8) Int8x64 {
	return Int8x64(archsimd.BroadcastInt8x64(x))
}

type Mask16x16 archsimd.Mask16x16
type Mask16x32 archsimd.Mask16x32
type Mask16x8 archsimd.Mask16x8
type Mask32x16 archsimd.Mask32x16
type Mask32x4 archsimd.Mask32x4
type Mask32x8 archsimd.Mask32x8
type Mask64x2 archsimd.Mask64x2
type Mask64x4 archsimd.Mask64x4
type Mask64x8 archsimd.Mask64x8
type Mask8x16 archsimd.Mask8x16
type Mask8x32 archsimd.Mask8x32
type Mask8x64 archsimd.Mask8x64
type Uint16x16 archsimd.Uint16x16

func LoadUint16x16(s []uint16) Uint16x16 {
	return Uint16x16(archsimd.LoadUint16x16(s))
}
func LoadUint16x16Part(s []uint16) (Uint16x16, int) {
	v, n := archsimd.LoadUint16x16Part(s)
	return Uint16x16(v), n
}
func BroadcastUint16x16(x uint16) Uint16x16 {
	return Uint16x16(archsimd.BroadcastUint16x16(x))
}

type Uint16x32 archsimd.Uint16x32

func LoadUint16x32(s []uint16) Uint16x32 {
	return Uint16x32(archsimd.LoadUint16x32(s))
}
func LoadUint16x32Part(s []uint16) (Uint16x32, int) {
	v, n := archsimd.LoadUint16x32Part(s)
	return Uint16x32(v), n
}
func BroadcastUint16x32(x uint16) Uint16x32 {
	return Uint16x32(archsimd.BroadcastUint16x32(x))
}

type Uint16x8 archsimd.Uint16x8

func LoadUint16x8(s []uint16) Uint16x8 {
	return Uint16x8(archsimd.LoadUint16x8(s))
}
func LoadUint16x8Part(s []uint16) (Uint16x8, int) {
	v, n := archsimd.LoadUint16x8Part(s)
	return Uint16x8(v), n
}
func BroadcastUint16x8(x uint16) Uint16x8 {
	return Uint16x8(archsimd.BroadcastUint16x8(x))
}

type Uint32x16 archsimd.Uint32x16

func LoadUint32x16(s []uint32) Uint32x16 {
	return Uint32x16(archsimd.LoadUint32x16(s))
}
func LoadUint32x16Part(s []uint32) (Uint32x16, int) {
	v, n := archsimd.LoadUint32x16Part(s)
	return Uint32x16(v), n
}
func BroadcastUint32x16(x uint32) Uint32x16 {
	return Uint32x16(archsimd.BroadcastUint32x16(x))
}

type Uint32x4 archsimd.Uint32x4

func LoadUint32x4(s []uint32) Uint32x4 {
	return Uint32x4(archsimd.LoadUint32x4(s))
}
func LoadUint32x4Part(s []uint32) (Uint32x4, int) {
	v, n := archsimd.LoadUint32x4Part(s)
	return Uint32x4(v), n
}
func BroadcastUint32x4(x uint32) Uint32x4 {
	return Uint32x4(archsimd.BroadcastUint32x4(x))
}

type Uint32x8 archsimd.Uint32x8

func LoadUint32x8(s []uint32) Uint32x8 {
	return Uint32x8(archsimd.LoadUint32x8(s))
}
func LoadUint32x8Part(s []uint32) (Uint32x8, int) {
	v, n := archsimd.LoadUint32x8Part(s)
	return Uint32x8(v), n
}
func BroadcastUint32x8(x uint32) Uint32x8 {
	return Uint32x8(archsimd.BroadcastUint32x8(x))
}

type Uint64x2 archsimd.Uint64x2

func LoadUint64x2(s []uint64) Uint64x2 {
	return Uint64x2(archsimd.LoadUint64x2(s))
}
func LoadUint64x2Part(s []uint64) (Uint64x2, int) {
	v, n := archsimd.LoadUint64x2Part(s)
	return Uint64x2(v), n
}
func BroadcastUint64x2(x uint64) Uint64x2 {
	return Uint64x2(archsimd.BroadcastUint64x2(x))
}

type Uint64x4 archsimd.Uint64x4

func LoadUint64x4(s []uint64) Uint64x4 {
	return Uint64x4(archsimd.LoadUint64x4(s))
}
func LoadUint64x4Part(s []uint64) (Uint64x4, int) {
	v, n := archsimd.LoadUint64x4Part(s)
	return Uint64x4(v), n
}
func BroadcastUint64x4(x uint64) Uint64x4 {
	return Uint64x4(archsimd.BroadcastUint64x4(x))
}

type Uint64x8 archsimd.Uint64x8

func LoadUint64x8(s []uint64) Uint64x8 {
	return Uint64x8(archsimd.LoadUint64x8(s))
}
func LoadUint64x8Part(s []uint64) (Uint64x8, int) {
	v, n := archsimd.LoadUint64x8Part(s)
	return Uint64x8(v), n
}
func BroadcastUint64x8(x uint64) Uint64x8 {
	return Uint64x8(archsimd.BroadcastUint64x8(x))
}

type Uint8x16 archsimd.Uint8x16

func LoadUint8x16(s []uint8) Uint8x16 {
	return Uint8x16(archsimd.LoadUint8x16(s))
}
func LoadUint8x16Part(s []uint8) (Uint8x16, int) {
	v, n := archsimd.LoadUint8x16Part(s)
	return Uint8x16(v), n
}
func BroadcastUint8x16(x uint8) Uint8x16 {
	return Uint8x16(archsimd.BroadcastUint8x16(x))
}

type Uint8x32 archsimd.Uint8x32

func LoadUint8x32(s []uint8) Uint8x32 {
	return Uint8x32(archsimd.LoadUint8x32(s))
}
func LoadUint8x32Part(s []uint8) (Uint8x32, int) {
	v, n := archsimd.LoadUint8x32Part(s)
	return Uint8x32(v), n
}
func BroadcastUint8x32(x uint8) Uint8x32 {
	return Uint8x32(archsimd.BroadcastUint8x32(x))
}

type Uint8x64 archsimd.Uint8x64

func LoadUint8x64(s []uint8) Uint8x64 {
	return Uint8x64(archsimd.LoadUint8x64(s))
}
func LoadUint8x64Part(s []uint8) (Uint8x64, int) {
	v, n := archsimd.LoadUint8x64Part(s)
	return Uint8x64(v), n
}
func BroadcastUint8x64(x uint8) Uint8x64 {
	return Uint8x64(archsimd.BroadcastUint8x64(x))
}

func (x Int8x16) Abs() Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Abs())
}

func (x Int8x32) Abs() Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Abs())
}

func (x Int8x64) Abs() Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Abs())
}

func (x Int8x16) Add(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Add(archsimd.Int8x16(y)))
}

func (x Int8x32) Add(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Add(archsimd.Int8x32(y)))
}

func (x Int8x64) Add(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Add(archsimd.Int8x64(y)))
}

func (x Int8x16) AddSaturated(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).AddSaturated(archsimd.Int8x16(y)))
}

func (x Int8x32) AddSaturated(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).AddSaturated(archsimd.Int8x32(y)))
}

func (x Int8x64) AddSaturated(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).AddSaturated(archsimd.Int8x64(y)))
}

func (x Int8x16) And(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).And(archsimd.Int8x16(y)))
}

func (x Int8x32) And(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).And(archsimd.Int8x32(y)))
}

func (x Int8x64) And(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).And(archsimd.Int8x64(y)))
}

func (x Int8x16) AndNot(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).AndNot(archsimd.Int8x16(y)))
}

func (x Int8x32) AndNot(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).AndNot(archsimd.Int8x32(y)))
}

func (x Int8x64) AndNot(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).AndNot(archsimd.Int8x64(y)))
}

func (x Int8x16) ConvertToUint8() Uint8x16 {
	return Uint8x16((archsimd.Int8x16(x)).ConvertToUint8())
}

func (x Int8x32) ConvertToUint8() Uint8x32 {
	return Uint8x32((archsimd.Int8x32(x)).ConvertToUint8())
}

func (x Int8x64) ConvertToUint8() Uint8x64 {
	return Uint8x64((archsimd.Int8x64(x)).ConvertToUint8())
}

func (x Int8x16) Equal(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).Equal(archsimd.Int8x16(y)))
}

func (x Int8x32) Equal(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).Equal(archsimd.Int8x32(y)))
}

func (x Int8x64) Equal(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).Equal(archsimd.Int8x64(y)))
}

func (x Int8x16) Greater(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).Greater(archsimd.Int8x16(y)))
}

func (x Int8x32) Greater(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).Greater(archsimd.Int8x32(y)))
}

func (x Int8x64) Greater(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).Greater(archsimd.Int8x64(y)))
}

func (x Int8x16) GreaterEqual(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).GreaterEqual(archsimd.Int8x16(y)))
}

func (x Int8x32) GreaterEqual(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).GreaterEqual(archsimd.Int8x32(y)))
}

func (x Int8x64) GreaterEqual(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).GreaterEqual(archsimd.Int8x64(y)))
}

func (x Int8x16) IfElse(mask Mask8x16, y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).IfElse(archsimd.Mask8x16(mask), archsimd.Int8x16(y)))
}

func (x Int8x32) IfElse(mask Mask8x32, y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).IfElse(archsimd.Mask8x32(mask), archsimd.Int8x32(y)))
}

func (x Int8x64) IfElse(mask Mask8x64, y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).IfElse(archsimd.Mask8x64(mask), archsimd.Int8x64(y)))
}

func (x Int8x16) Len() int {
	return (archsimd.Int8x16(x)).Len()
}

func (x Int8x32) Len() int {
	return (archsimd.Int8x32(x)).Len()
}

func (x Int8x64) Len() int {
	return (archsimd.Int8x64(x)).Len()
}

func (x Int8x16) Less(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).Less(archsimd.Int8x16(y)))
}

func (x Int8x32) Less(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).Less(archsimd.Int8x32(y)))
}

func (x Int8x64) Less(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).Less(archsimd.Int8x64(y)))
}

func (x Int8x16) LessEqual(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).LessEqual(archsimd.Int8x16(y)))
}

func (x Int8x32) LessEqual(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).LessEqual(archsimd.Int8x32(y)))
}

func (x Int8x64) LessEqual(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).LessEqual(archsimd.Int8x64(y)))
}

func (x Int8x16) Masked(mask Mask8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Masked(archsimd.Mask8x16(mask)))
}

func (x Int8x32) Masked(mask Mask8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Masked(archsimd.Mask8x32(mask)))
}

func (x Int8x64) Masked(mask Mask8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Masked(archsimd.Mask8x64(mask)))
}

func (x Int8x16) Max(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Max(archsimd.Int8x16(y)))
}

func (x Int8x32) Max(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Max(archsimd.Int8x32(y)))
}

func (x Int8x64) Max(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Max(archsimd.Int8x64(y)))
}

func (x Int8x16) Min(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Min(archsimd.Int8x16(y)))
}

func (x Int8x32) Min(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Min(archsimd.Int8x32(y)))
}

func (x Int8x64) Min(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Min(archsimd.Int8x64(y)))
}

func (x Int8x16) Mul(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Mul(archsimd.Int8x16(y)))
}

func (x Int8x32) Mul(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Mul(archsimd.Int8x32(y)))
}

func (x Int8x64) Mul(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Mul(archsimd.Int8x64(y)))
}

func (x Int8x16) Neg() Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Neg())
}

func (x Int8x32) Neg() Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Neg())
}

func (x Int8x64) Neg() Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Neg())
}

func (x Int8x16) Not() Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Not())
}

func (x Int8x32) Not() Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Not())
}

func (x Int8x64) Not() Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Not())
}

func (x Int8x16) NotEqual(y Int8x16) Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).NotEqual(archsimd.Int8x16(y)))
}

func (x Int8x32) NotEqual(y Int8x32) Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).NotEqual(archsimd.Int8x32(y)))
}

func (x Int8x64) NotEqual(y Int8x64) Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).NotEqual(archsimd.Int8x64(y)))
}

func (x Int8x16) Or(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Or(archsimd.Int8x16(y)))
}

func (x Int8x32) Or(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Or(archsimd.Int8x32(y)))
}

func (x Int8x64) Or(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Or(archsimd.Int8x64(y)))
}

func (x Int8x16) Store(s []int8) {
	(archsimd.Int8x16(x)).Store(s)
}

func (x Int8x32) Store(s []int8) {
	(archsimd.Int8x32(x)).Store(s)
}

func (x Int8x64) Store(s []int8) {
	(archsimd.Int8x64(x)).Store(s)
}

func (x Int8x16) StorePart(s []int8) int {
	return (archsimd.Int8x16(x)).StorePart(s)
}

func (x Int8x32) StorePart(s []int8) int {
	return (archsimd.Int8x32(x)).StorePart(s)
}

func (x Int8x64) StorePart(s []int8) int {
	return (archsimd.Int8x64(x)).StorePart(s)
}

func (x Int8x16) String() string {
	return (archsimd.Int8x16(x)).String()
}

func (x Int8x32) String() string {
	return (archsimd.Int8x32(x)).String()
}

func (x Int8x64) String() string {
	return (archsimd.Int8x64(x)).String()
}

func (x Int8x16) Sub(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Sub(archsimd.Int8x16(y)))
}

func (x Int8x32) Sub(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Sub(archsimd.Int8x32(y)))
}

func (x Int8x64) Sub(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Sub(archsimd.Int8x64(y)))
}

func (x Int8x16) SubSaturated(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).SubSaturated(archsimd.Int8x16(y)))
}

func (x Int8x32) SubSaturated(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).SubSaturated(archsimd.Int8x32(y)))
}

func (x Int8x64) SubSaturated(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).SubSaturated(archsimd.Int8x64(y)))
}

func (x Int8x16) ToBits() Uint8x16 {
	return Uint8x16((archsimd.Int8x16(x)).ToBits())
}

func (x Int8x32) ToBits() Uint8x32 {
	return Uint8x32((archsimd.Int8x32(x)).ToBits())
}

func (x Int8x64) ToBits() Uint8x64 {
	return Uint8x64((archsimd.Int8x64(x)).ToBits())
}

func (x Int8x16) ToMask() Mask8x16 {
	return Mask8x16((archsimd.Int8x16(x)).ToMask())
}

func (x Int8x32) ToMask() Mask8x32 {
	return Mask8x32((archsimd.Int8x32(x)).ToMask())
}

func (x Int8x64) ToMask() Mask8x64 {
	return Mask8x64((archsimd.Int8x64(x)).ToMask())
}

func (x Int8x16) Xor(y Int8x16) Int8x16 {
	return Int8x16((archsimd.Int8x16(x)).Xor(archsimd.Int8x16(y)))
}

func (x Int8x32) Xor(y Int8x32) Int8x32 {
	return Int8x32((archsimd.Int8x32(x)).Xor(archsimd.Int8x32(y)))
}

func (x Int8x64) Xor(y Int8x64) Int8x64 {
	return Int8x64((archsimd.Int8x64(x)).Xor(archsimd.Int8x64(y)))
}

func (x Int16x16) Abs() Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Abs())
}

func (x Int16x32) Abs() Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Abs())
}

func (x Int16x8) Abs() Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Abs())
}

func (x Int16x16) Add(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Add(archsimd.Int16x16(y)))
}

func (x Int16x32) Add(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Add(archsimd.Int16x32(y)))
}

func (x Int16x8) Add(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Add(archsimd.Int16x8(y)))
}

func (x Int16x16) AddSaturated(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).AddSaturated(archsimd.Int16x16(y)))
}

func (x Int16x32) AddSaturated(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).AddSaturated(archsimd.Int16x32(y)))
}

func (x Int16x8) AddSaturated(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).AddSaturated(archsimd.Int16x8(y)))
}

func (x Int16x16) And(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).And(archsimd.Int16x16(y)))
}

func (x Int16x32) And(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).And(archsimd.Int16x32(y)))
}

func (x Int16x8) And(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).And(archsimd.Int16x8(y)))
}

func (x Int16x16) AndNot(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).AndNot(archsimd.Int16x16(y)))
}

func (x Int16x32) AndNot(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).AndNot(archsimd.Int16x32(y)))
}

func (x Int16x8) AndNot(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).AndNot(archsimd.Int16x8(y)))
}

func (x Int16x16) ConvertToUint16() Uint16x16 {
	return Uint16x16((archsimd.Int16x16(x)).ConvertToUint16())
}

func (x Int16x32) ConvertToUint16() Uint16x32 {
	return Uint16x32((archsimd.Int16x32(x)).ConvertToUint16())
}

func (x Int16x8) ConvertToUint16() Uint16x8 {
	return Uint16x8((archsimd.Int16x8(x)).ConvertToUint16())
}

func (x Int16x16) Equal(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).Equal(archsimd.Int16x16(y)))
}

func (x Int16x32) Equal(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).Equal(archsimd.Int16x32(y)))
}

func (x Int16x8) Equal(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).Equal(archsimd.Int16x8(y)))
}

func (x Int16x16) Greater(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).Greater(archsimd.Int16x16(y)))
}

func (x Int16x32) Greater(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).Greater(archsimd.Int16x32(y)))
}

func (x Int16x8) Greater(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).Greater(archsimd.Int16x8(y)))
}

func (x Int16x16) GreaterEqual(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).GreaterEqual(archsimd.Int16x16(y)))
}

func (x Int16x32) GreaterEqual(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).GreaterEqual(archsimd.Int16x32(y)))
}

func (x Int16x8) GreaterEqual(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).GreaterEqual(archsimd.Int16x8(y)))
}

func (x Int16x16) IfElse(mask Mask16x16, y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).IfElse(archsimd.Mask16x16(mask), archsimd.Int16x16(y)))
}

func (x Int16x32) IfElse(mask Mask16x32, y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).IfElse(archsimd.Mask16x32(mask), archsimd.Int16x32(y)))
}

func (x Int16x8) IfElse(mask Mask16x8, y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).IfElse(archsimd.Mask16x8(mask), archsimd.Int16x8(y)))
}

func (x Int16x16) Len() int {
	return (archsimd.Int16x16(x)).Len()
}

func (x Int16x32) Len() int {
	return (archsimd.Int16x32(x)).Len()
}

func (x Int16x8) Len() int {
	return (archsimd.Int16x8(x)).Len()
}

func (x Int16x16) Less(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).Less(archsimd.Int16x16(y)))
}

func (x Int16x32) Less(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).Less(archsimd.Int16x32(y)))
}

func (x Int16x8) Less(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).Less(archsimd.Int16x8(y)))
}

func (x Int16x16) LessEqual(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).LessEqual(archsimd.Int16x16(y)))
}

func (x Int16x32) LessEqual(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).LessEqual(archsimd.Int16x32(y)))
}

func (x Int16x8) LessEqual(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).LessEqual(archsimd.Int16x8(y)))
}

func (x Int16x16) Masked(mask Mask16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Masked(archsimd.Mask16x16(mask)))
}

func (x Int16x32) Masked(mask Mask16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Masked(archsimd.Mask16x32(mask)))
}

func (x Int16x8) Masked(mask Mask16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Masked(archsimd.Mask16x8(mask)))
}

func (x Int16x16) Max(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Max(archsimd.Int16x16(y)))
}

func (x Int16x32) Max(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Max(archsimd.Int16x32(y)))
}

func (x Int16x8) Max(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Max(archsimd.Int16x8(y)))
}

func (x Int16x16) Min(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Min(archsimd.Int16x16(y)))
}

func (x Int16x32) Min(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Min(archsimd.Int16x32(y)))
}

func (x Int16x8) Min(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Min(archsimd.Int16x8(y)))
}

func (x Int16x16) Mul(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Mul(archsimd.Int16x16(y)))
}

func (x Int16x32) Mul(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Mul(archsimd.Int16x32(y)))
}

func (x Int16x8) Mul(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Mul(archsimd.Int16x8(y)))
}

func (x Int16x16) Neg() Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Neg())
}

func (x Int16x32) Neg() Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Neg())
}

func (x Int16x8) Neg() Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Neg())
}

func (x Int16x16) Not() Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Not())
}

func (x Int16x32) Not() Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Not())
}

func (x Int16x8) Not() Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Not())
}

func (x Int16x16) NotEqual(y Int16x16) Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).NotEqual(archsimd.Int16x16(y)))
}

func (x Int16x32) NotEqual(y Int16x32) Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).NotEqual(archsimd.Int16x32(y)))
}

func (x Int16x8) NotEqual(y Int16x8) Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).NotEqual(archsimd.Int16x8(y)))
}

func (x Int16x16) Or(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Or(archsimd.Int16x16(y)))
}

func (x Int16x32) Or(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Or(archsimd.Int16x32(y)))
}

func (x Int16x8) Or(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Or(archsimd.Int16x8(y)))
}

func (x Int16x16) RotateAllLeft(dist uint64) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).RotateAllLeft(dist))
}

func (x Int16x32) RotateAllLeft(dist uint64) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).RotateAllLeft(dist))
}

func (x Int16x8) RotateAllLeft(dist uint64) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).RotateAllLeft(dist))
}

func (x Int16x16) RotateAllRight(dist uint64) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).RotateAllRight(dist))
}

func (x Int16x32) RotateAllRight(dist uint64) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).RotateAllRight(dist))
}

func (x Int16x8) RotateAllRight(dist uint64) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).RotateAllRight(dist))
}

func (x Int16x16) ShiftAllLeft(shift uint64) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).ShiftAllLeft(shift))
}

func (x Int16x32) ShiftAllLeft(shift uint64) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).ShiftAllLeft(shift))
}

func (x Int16x8) ShiftAllLeft(shift uint64) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).ShiftAllLeft(shift))
}

func (x Int16x16) ShiftAllRight(shift uint64) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).ShiftAllRight(shift))
}

func (x Int16x32) ShiftAllRight(shift uint64) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).ShiftAllRight(shift))
}

func (x Int16x8) ShiftAllRight(shift uint64) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).ShiftAllRight(shift))
}

func (x Int16x16) Store(s []int16) {
	(archsimd.Int16x16(x)).Store(s)
}

func (x Int16x32) Store(s []int16) {
	(archsimd.Int16x32(x)).Store(s)
}

func (x Int16x8) Store(s []int16) {
	(archsimd.Int16x8(x)).Store(s)
}

func (x Int16x16) StorePart(s []int16) int {
	return (archsimd.Int16x16(x)).StorePart(s)
}

func (x Int16x32) StorePart(s []int16) int {
	return (archsimd.Int16x32(x)).StorePart(s)
}

func (x Int16x8) StorePart(s []int16) int {
	return (archsimd.Int16x8(x)).StorePart(s)
}

func (x Int16x16) String() string {
	return (archsimd.Int16x16(x)).String()
}

func (x Int16x32) String() string {
	return (archsimd.Int16x32(x)).String()
}

func (x Int16x8) String() string {
	return (archsimd.Int16x8(x)).String()
}

func (x Int16x16) Sub(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Sub(archsimd.Int16x16(y)))
}

func (x Int16x32) Sub(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Sub(archsimd.Int16x32(y)))
}

func (x Int16x8) Sub(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Sub(archsimd.Int16x8(y)))
}

func (x Int16x16) SubSaturated(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).SubSaturated(archsimd.Int16x16(y)))
}

func (x Int16x32) SubSaturated(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).SubSaturated(archsimd.Int16x32(y)))
}

func (x Int16x8) SubSaturated(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).SubSaturated(archsimd.Int16x8(y)))
}

func (x Int16x16) ToBits() Uint16x16 {
	return Uint16x16((archsimd.Int16x16(x)).ToBits())
}

func (x Int16x32) ToBits() Uint16x32 {
	return Uint16x32((archsimd.Int16x32(x)).ToBits())
}

func (x Int16x8) ToBits() Uint16x8 {
	return Uint16x8((archsimd.Int16x8(x)).ToBits())
}

func (x Int16x16) ToMask() Mask16x16 {
	return Mask16x16((archsimd.Int16x16(x)).ToMask())
}

func (x Int16x32) ToMask() Mask16x32 {
	return Mask16x32((archsimd.Int16x32(x)).ToMask())
}

func (x Int16x8) ToMask() Mask16x8 {
	return Mask16x8((archsimd.Int16x8(x)).ToMask())
}

func (x Int16x16) Xor(y Int16x16) Int16x16 {
	return Int16x16((archsimd.Int16x16(x)).Xor(archsimd.Int16x16(y)))
}

func (x Int16x32) Xor(y Int16x32) Int16x32 {
	return Int16x32((archsimd.Int16x32(x)).Xor(archsimd.Int16x32(y)))
}

func (x Int16x8) Xor(y Int16x8) Int16x8 {
	return Int16x8((archsimd.Int16x8(x)).Xor(archsimd.Int16x8(y)))
}

func (x Int32x16) Abs() Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Abs())
}

func (x Int32x4) Abs() Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Abs())
}

func (x Int32x8) Abs() Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Abs())
}

func (x Int32x16) Add(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Add(archsimd.Int32x16(y)))
}

func (x Int32x4) Add(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Add(archsimd.Int32x4(y)))
}

func (x Int32x8) Add(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Add(archsimd.Int32x8(y)))
}

func (x Int32x16) And(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).And(archsimd.Int32x16(y)))
}

func (x Int32x4) And(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).And(archsimd.Int32x4(y)))
}

func (x Int32x8) And(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).And(archsimd.Int32x8(y)))
}

func (x Int32x16) AndNot(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).AndNot(archsimd.Int32x16(y)))
}

func (x Int32x4) AndNot(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).AndNot(archsimd.Int32x4(y)))
}

func (x Int32x8) AndNot(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).AndNot(archsimd.Int32x8(y)))
}

func (x Int32x16) ConvertToFloat32() Float32x16 {
	return Float32x16((archsimd.Int32x16(x)).ConvertToFloat32())
}

func (x Int32x4) ConvertToFloat32() Float32x4 {
	return Float32x4((archsimd.Int32x4(x)).ConvertToFloat32())
}

func (x Int32x8) ConvertToFloat32() Float32x8 {
	return Float32x8((archsimd.Int32x8(x)).ConvertToFloat32())
}

func (x Int32x16) ConvertToUint32() Uint32x16 {
	return Uint32x16((archsimd.Int32x16(x)).ConvertToUint32())
}

func (x Int32x4) ConvertToUint32() Uint32x4 {
	return Uint32x4((archsimd.Int32x4(x)).ConvertToUint32())
}

func (x Int32x8) ConvertToUint32() Uint32x8 {
	return Uint32x8((archsimd.Int32x8(x)).ConvertToUint32())
}

func (x Int32x16) Equal(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).Equal(archsimd.Int32x16(y)))
}

func (x Int32x4) Equal(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).Equal(archsimd.Int32x4(y)))
}

func (x Int32x8) Equal(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).Equal(archsimd.Int32x8(y)))
}

func (x Int32x16) Greater(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).Greater(archsimd.Int32x16(y)))
}

func (x Int32x4) Greater(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).Greater(archsimd.Int32x4(y)))
}

func (x Int32x8) Greater(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).Greater(archsimd.Int32x8(y)))
}

func (x Int32x16) GreaterEqual(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).GreaterEqual(archsimd.Int32x16(y)))
}

func (x Int32x4) GreaterEqual(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).GreaterEqual(archsimd.Int32x4(y)))
}

func (x Int32x8) GreaterEqual(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).GreaterEqual(archsimd.Int32x8(y)))
}

func (x Int32x16) IfElse(mask Mask32x16, y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).IfElse(archsimd.Mask32x16(mask), archsimd.Int32x16(y)))
}

func (x Int32x4) IfElse(mask Mask32x4, y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).IfElse(archsimd.Mask32x4(mask), archsimd.Int32x4(y)))
}

func (x Int32x8) IfElse(mask Mask32x8, y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).IfElse(archsimd.Mask32x8(mask), archsimd.Int32x8(y)))
}

func (x Int32x16) Len() int {
	return (archsimd.Int32x16(x)).Len()
}

func (x Int32x4) Len() int {
	return (archsimd.Int32x4(x)).Len()
}

func (x Int32x8) Len() int {
	return (archsimd.Int32x8(x)).Len()
}

func (x Int32x16) Less(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).Less(archsimd.Int32x16(y)))
}

func (x Int32x4) Less(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).Less(archsimd.Int32x4(y)))
}

func (x Int32x8) Less(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).Less(archsimd.Int32x8(y)))
}

func (x Int32x16) LessEqual(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).LessEqual(archsimd.Int32x16(y)))
}

func (x Int32x4) LessEqual(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).LessEqual(archsimd.Int32x4(y)))
}

func (x Int32x8) LessEqual(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).LessEqual(archsimd.Int32x8(y)))
}

func (x Int32x16) Masked(mask Mask32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Masked(archsimd.Mask32x16(mask)))
}

func (x Int32x4) Masked(mask Mask32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Masked(archsimd.Mask32x4(mask)))
}

func (x Int32x8) Masked(mask Mask32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Masked(archsimd.Mask32x8(mask)))
}

func (x Int32x16) Max(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Max(archsimd.Int32x16(y)))
}

func (x Int32x4) Max(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Max(archsimd.Int32x4(y)))
}

func (x Int32x8) Max(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Max(archsimd.Int32x8(y)))
}

func (x Int32x16) Min(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Min(archsimd.Int32x16(y)))
}

func (x Int32x4) Min(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Min(archsimd.Int32x4(y)))
}

func (x Int32x8) Min(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Min(archsimd.Int32x8(y)))
}

func (x Int32x16) Mul(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Mul(archsimd.Int32x16(y)))
}

func (x Int32x4) Mul(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Mul(archsimd.Int32x4(y)))
}

func (x Int32x8) Mul(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Mul(archsimd.Int32x8(y)))
}

func (x Int32x16) Neg() Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Neg())
}

func (x Int32x4) Neg() Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Neg())
}

func (x Int32x8) Neg() Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Neg())
}

func (x Int32x16) Not() Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Not())
}

func (x Int32x4) Not() Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Not())
}

func (x Int32x8) Not() Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Not())
}

func (x Int32x16) NotEqual(y Int32x16) Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).NotEqual(archsimd.Int32x16(y)))
}

func (x Int32x4) NotEqual(y Int32x4) Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).NotEqual(archsimd.Int32x4(y)))
}

func (x Int32x8) NotEqual(y Int32x8) Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).NotEqual(archsimd.Int32x8(y)))
}

func (x Int32x16) Or(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Or(archsimd.Int32x16(y)))
}

func (x Int32x4) Or(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Or(archsimd.Int32x4(y)))
}

func (x Int32x8) Or(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Or(archsimd.Int32x8(y)))
}

func (x Int32x16) RotateAllLeft(dist uint64) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).RotateAllLeft(dist))
}

func (x Int32x4) RotateAllLeft(dist uint64) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).RotateAllLeft(dist))
}

func (x Int32x8) RotateAllLeft(dist uint64) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).RotateAllLeft(dist))
}

func (x Int32x16) RotateAllRight(dist uint64) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).RotateAllRight(dist))
}

func (x Int32x4) RotateAllRight(dist uint64) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).RotateAllRight(dist))
}

func (x Int32x8) RotateAllRight(dist uint64) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).RotateAllRight(dist))
}

func (x Int32x16) ShiftAllLeft(shift uint64) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).ShiftAllLeft(shift))
}

func (x Int32x4) ShiftAllLeft(shift uint64) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).ShiftAllLeft(shift))
}

func (x Int32x8) ShiftAllLeft(shift uint64) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).ShiftAllLeft(shift))
}

func (x Int32x16) ShiftAllRight(shift uint64) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).ShiftAllRight(shift))
}

func (x Int32x4) ShiftAllRight(shift uint64) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).ShiftAllRight(shift))
}

func (x Int32x8) ShiftAllRight(shift uint64) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).ShiftAllRight(shift))
}

func (x Int32x16) Store(s []int32) {
	(archsimd.Int32x16(x)).Store(s)
}

func (x Int32x4) Store(s []int32) {
	(archsimd.Int32x4(x)).Store(s)
}

func (x Int32x8) Store(s []int32) {
	(archsimd.Int32x8(x)).Store(s)
}

func (x Int32x16) StorePart(s []int32) int {
	return (archsimd.Int32x16(x)).StorePart(s)
}

func (x Int32x4) StorePart(s []int32) int {
	return (archsimd.Int32x4(x)).StorePart(s)
}

func (x Int32x8) StorePart(s []int32) int {
	return (archsimd.Int32x8(x)).StorePart(s)
}

func (x Int32x16) String() string {
	return (archsimd.Int32x16(x)).String()
}

func (x Int32x4) String() string {
	return (archsimd.Int32x4(x)).String()
}

func (x Int32x8) String() string {
	return (archsimd.Int32x8(x)).String()
}

func (x Int32x16) Sub(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Sub(archsimd.Int32x16(y)))
}

func (x Int32x4) Sub(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Sub(archsimd.Int32x4(y)))
}

func (x Int32x8) Sub(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Sub(archsimd.Int32x8(y)))
}

func (x Int32x16) ToBits() Uint32x16 {
	return Uint32x16((archsimd.Int32x16(x)).ToBits())
}

func (x Int32x4) ToBits() Uint32x4 {
	return Uint32x4((archsimd.Int32x4(x)).ToBits())
}

func (x Int32x8) ToBits() Uint32x8 {
	return Uint32x8((archsimd.Int32x8(x)).ToBits())
}

func (x Int32x16) ToMask() Mask32x16 {
	return Mask32x16((archsimd.Int32x16(x)).ToMask())
}

func (x Int32x4) ToMask() Mask32x4 {
	return Mask32x4((archsimd.Int32x4(x)).ToMask())
}

func (x Int32x8) ToMask() Mask32x8 {
	return Mask32x8((archsimd.Int32x8(x)).ToMask())
}

func (x Int32x16) Xor(y Int32x16) Int32x16 {
	return Int32x16((archsimd.Int32x16(x)).Xor(archsimd.Int32x16(y)))
}

func (x Int32x4) Xor(y Int32x4) Int32x4 {
	return Int32x4((archsimd.Int32x4(x)).Xor(archsimd.Int32x4(y)))
}

func (x Int32x8) Xor(y Int32x8) Int32x8 {
	return Int32x8((archsimd.Int32x8(x)).Xor(archsimd.Int32x8(y)))
}

func (x Int64x2) Add(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Add(archsimd.Int64x2(y)))
}

func (x Int64x4) Add(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Add(archsimd.Int64x4(y)))
}

func (x Int64x8) Add(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Add(archsimd.Int64x8(y)))
}

func (x Int64x2) And(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).And(archsimd.Int64x2(y)))
}

func (x Int64x4) And(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).And(archsimd.Int64x4(y)))
}

func (x Int64x8) And(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).And(archsimd.Int64x8(y)))
}

func (x Int64x2) AndNot(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).AndNot(archsimd.Int64x2(y)))
}

func (x Int64x4) AndNot(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).AndNot(archsimd.Int64x4(y)))
}

func (x Int64x8) AndNot(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).AndNot(archsimd.Int64x8(y)))
}

func (x Int64x2) ConvertToUint64() Uint64x2 {
	return Uint64x2((archsimd.Int64x2(x)).ConvertToUint64())
}

func (x Int64x4) ConvertToUint64() Uint64x4 {
	return Uint64x4((archsimd.Int64x4(x)).ConvertToUint64())
}

func (x Int64x8) ConvertToUint64() Uint64x8 {
	return Uint64x8((archsimd.Int64x8(x)).ConvertToUint64())
}

func (x Int64x2) Equal(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).Equal(archsimd.Int64x2(y)))
}

func (x Int64x4) Equal(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).Equal(archsimd.Int64x4(y)))
}

func (x Int64x8) Equal(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).Equal(archsimd.Int64x8(y)))
}

func (x Int64x2) Greater(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).Greater(archsimd.Int64x2(y)))
}

func (x Int64x4) Greater(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).Greater(archsimd.Int64x4(y)))
}

func (x Int64x8) Greater(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).Greater(archsimd.Int64x8(y)))
}

func (x Int64x2) GreaterEqual(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).GreaterEqual(archsimd.Int64x2(y)))
}

func (x Int64x4) GreaterEqual(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).GreaterEqual(archsimd.Int64x4(y)))
}

func (x Int64x8) GreaterEqual(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).GreaterEqual(archsimd.Int64x8(y)))
}

func (x Int64x2) IfElse(mask Mask64x2, y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).IfElse(archsimd.Mask64x2(mask), archsimd.Int64x2(y)))
}

func (x Int64x4) IfElse(mask Mask64x4, y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).IfElse(archsimd.Mask64x4(mask), archsimd.Int64x4(y)))
}

func (x Int64x8) IfElse(mask Mask64x8, y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).IfElse(archsimd.Mask64x8(mask), archsimd.Int64x8(y)))
}

func (x Int64x2) Len() int {
	return (archsimd.Int64x2(x)).Len()
}

func (x Int64x4) Len() int {
	return (archsimd.Int64x4(x)).Len()
}

func (x Int64x8) Len() int {
	return (archsimd.Int64x8(x)).Len()
}

func (x Int64x2) Less(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).Less(archsimd.Int64x2(y)))
}

func (x Int64x4) Less(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).Less(archsimd.Int64x4(y)))
}

func (x Int64x8) Less(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).Less(archsimd.Int64x8(y)))
}

func (x Int64x2) LessEqual(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).LessEqual(archsimd.Int64x2(y)))
}

func (x Int64x4) LessEqual(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).LessEqual(archsimd.Int64x4(y)))
}

func (x Int64x8) LessEqual(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).LessEqual(archsimd.Int64x8(y)))
}

func (x Int64x2) Masked(mask Mask64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Masked(archsimd.Mask64x2(mask)))
}

func (x Int64x4) Masked(mask Mask64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Masked(archsimd.Mask64x4(mask)))
}

func (x Int64x8) Masked(mask Mask64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Masked(archsimd.Mask64x8(mask)))
}

func (x Int64x2) Neg() Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Neg())
}

func (x Int64x4) Neg() Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Neg())
}

func (x Int64x8) Neg() Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Neg())
}

func (x Int64x2) Not() Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Not())
}

func (x Int64x4) Not() Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Not())
}

func (x Int64x8) Not() Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Not())
}

func (x Int64x2) NotEqual(y Int64x2) Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).NotEqual(archsimd.Int64x2(y)))
}

func (x Int64x4) NotEqual(y Int64x4) Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).NotEqual(archsimd.Int64x4(y)))
}

func (x Int64x8) NotEqual(y Int64x8) Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).NotEqual(archsimd.Int64x8(y)))
}

func (x Int64x2) Or(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Or(archsimd.Int64x2(y)))
}

func (x Int64x4) Or(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Or(archsimd.Int64x4(y)))
}

func (x Int64x8) Or(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Or(archsimd.Int64x8(y)))
}

func (x Int64x2) RotateAllLeft(dist uint64) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).RotateAllLeft(dist))
}

func (x Int64x4) RotateAllLeft(dist uint64) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).RotateAllLeft(dist))
}

func (x Int64x8) RotateAllLeft(dist uint64) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).RotateAllLeft(dist))
}

func (x Int64x2) RotateAllRight(dist uint64) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).RotateAllRight(dist))
}

func (x Int64x4) RotateAllRight(dist uint64) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).RotateAllRight(dist))
}

func (x Int64x8) RotateAllRight(dist uint64) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).RotateAllRight(dist))
}

func (x Int64x2) ShiftAllLeft(shift uint64) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).ShiftAllLeft(shift))
}

func (x Int64x4) ShiftAllLeft(shift uint64) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).ShiftAllLeft(shift))
}

func (x Int64x8) ShiftAllLeft(shift uint64) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).ShiftAllLeft(shift))
}

func (x Int64x2) Store(s []int64) {
	(archsimd.Int64x2(x)).Store(s)
}

func (x Int64x4) Store(s []int64) {
	(archsimd.Int64x4(x)).Store(s)
}

func (x Int64x8) Store(s []int64) {
	(archsimd.Int64x8(x)).Store(s)
}

func (x Int64x2) StorePart(s []int64) int {
	return (archsimd.Int64x2(x)).StorePart(s)
}

func (x Int64x4) StorePart(s []int64) int {
	return (archsimd.Int64x4(x)).StorePart(s)
}

func (x Int64x8) StorePart(s []int64) int {
	return (archsimd.Int64x8(x)).StorePart(s)
}

func (x Int64x2) String() string {
	return (archsimd.Int64x2(x)).String()
}

func (x Int64x4) String() string {
	return (archsimd.Int64x4(x)).String()
}

func (x Int64x8) String() string {
	return (archsimd.Int64x8(x)).String()
}

func (x Int64x2) Sub(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Sub(archsimd.Int64x2(y)))
}

func (x Int64x4) Sub(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Sub(archsimd.Int64x4(y)))
}

func (x Int64x8) Sub(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Sub(archsimd.Int64x8(y)))
}

func (x Int64x2) ToBits() Uint64x2 {
	return Uint64x2((archsimd.Int64x2(x)).ToBits())
}

func (x Int64x4) ToBits() Uint64x4 {
	return Uint64x4((archsimd.Int64x4(x)).ToBits())
}

func (x Int64x8) ToBits() Uint64x8 {
	return Uint64x8((archsimd.Int64x8(x)).ToBits())
}

func (x Int64x2) ToMask() Mask64x2 {
	return Mask64x2((archsimd.Int64x2(x)).ToMask())
}

func (x Int64x4) ToMask() Mask64x4 {
	return Mask64x4((archsimd.Int64x4(x)).ToMask())
}

func (x Int64x8) ToMask() Mask64x8 {
	return Mask64x8((archsimd.Int64x8(x)).ToMask())
}

func (x Int64x2) Xor(y Int64x2) Int64x2 {
	return Int64x2((archsimd.Int64x2(x)).Xor(archsimd.Int64x2(y)))
}

func (x Int64x4) Xor(y Int64x4) Int64x4 {
	return Int64x4((archsimd.Int64x4(x)).Xor(archsimd.Int64x4(y)))
}

func (x Int64x8) Xor(y Int64x8) Int64x8 {
	return Int64x8((archsimd.Int64x8(x)).Xor(archsimd.Int64x8(y)))
}

func (x Uint8x16) Add(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Add(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Add(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Add(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Add(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Add(archsimd.Uint8x64(y)))
}

func (x Uint8x16) AddSaturated(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).AddSaturated(archsimd.Uint8x16(y)))
}

func (x Uint8x32) AddSaturated(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).AddSaturated(archsimd.Uint8x32(y)))
}

func (x Uint8x64) AddSaturated(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).AddSaturated(archsimd.Uint8x64(y)))
}

func (x Uint8x16) And(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).And(archsimd.Uint8x16(y)))
}

func (x Uint8x32) And(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).And(archsimd.Uint8x32(y)))
}

func (x Uint8x64) And(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).And(archsimd.Uint8x64(y)))
}

func (x Uint8x16) AndNot(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).AndNot(archsimd.Uint8x16(y)))
}

func (x Uint8x32) AndNot(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).AndNot(archsimd.Uint8x32(y)))
}

func (x Uint8x64) AndNot(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).AndNot(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Average(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Average(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Average(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Average(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Average(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Average(archsimd.Uint8x64(y)))
}

func (x Uint8x16) BitsToInt8() Int8x16 {
	return Int8x16((archsimd.Uint8x16(x)).BitsToInt8())
}

func (x Uint8x32) BitsToInt8() Int8x32 {
	return Int8x32((archsimd.Uint8x32(x)).BitsToInt8())
}

func (x Uint8x64) BitsToInt8() Int8x64 {
	return Int8x64((archsimd.Uint8x64(x)).BitsToInt8())
}

func (x Uint8x16) ConvertToInt8() Int8x16 {
	return Int8x16((archsimd.Uint8x16(x)).ConvertToInt8())
}

func (x Uint8x32) ConvertToInt8() Int8x32 {
	return Int8x32((archsimd.Uint8x32(x)).ConvertToInt8())
}

func (x Uint8x64) ConvertToInt8() Int8x64 {
	return Int8x64((archsimd.Uint8x64(x)).ConvertToInt8())
}

func (x Uint8x16) Equal(y Uint8x16) Mask8x16 {
	return Mask8x16((archsimd.Uint8x16(x)).Equal(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Equal(y Uint8x32) Mask8x32 {
	return Mask8x32((archsimd.Uint8x32(x)).Equal(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Equal(y Uint8x64) Mask8x64 {
	return Mask8x64((archsimd.Uint8x64(x)).Equal(archsimd.Uint8x64(y)))
}

func (x Uint8x16) IfElse(mask Mask8x16, y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).IfElse(archsimd.Mask8x16(mask), archsimd.Uint8x16(y)))
}

func (x Uint8x32) IfElse(mask Mask8x32, y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).IfElse(archsimd.Mask8x32(mask), archsimd.Uint8x32(y)))
}

func (x Uint8x64) IfElse(mask Mask8x64, y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).IfElse(archsimd.Mask8x64(mask), archsimd.Uint8x64(y)))
}

func (x Uint8x16) Len() int {
	return (archsimd.Uint8x16(x)).Len()
}

func (x Uint8x32) Len() int {
	return (archsimd.Uint8x32(x)).Len()
}

func (x Uint8x64) Len() int {
	return (archsimd.Uint8x64(x)).Len()
}

func (x Uint8x16) Masked(mask Mask8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Masked(archsimd.Mask8x16(mask)))
}

func (x Uint8x32) Masked(mask Mask8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Masked(archsimd.Mask8x32(mask)))
}

func (x Uint8x64) Masked(mask Mask8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Masked(archsimd.Mask8x64(mask)))
}

func (x Uint8x16) Max(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Max(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Max(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Max(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Max(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Max(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Min(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Min(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Min(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Min(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Min(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Min(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Mul(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Mul(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Mul(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Mul(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Mul(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Mul(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Not() Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Not())
}

func (x Uint8x32) Not() Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Not())
}

func (x Uint8x64) Not() Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Not())
}

func (x Uint8x16) NotEqual(y Uint8x16) Mask8x16 {
	return Mask8x16((archsimd.Uint8x16(x)).NotEqual(archsimd.Uint8x16(y)))
}

func (x Uint8x32) NotEqual(y Uint8x32) Mask8x32 {
	return Mask8x32((archsimd.Uint8x32(x)).NotEqual(archsimd.Uint8x32(y)))
}

func (x Uint8x64) NotEqual(y Uint8x64) Mask8x64 {
	return Mask8x64((archsimd.Uint8x64(x)).NotEqual(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Or(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Or(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Or(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Or(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Or(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Or(archsimd.Uint8x64(y)))
}

func (x Uint8x16) ReshapeToUint16s() Uint16x8 {
	return Uint16x8((archsimd.Uint8x16(x)).ReshapeToUint16s())
}

func (x Uint8x32) ReshapeToUint16s() Uint16x16 {
	return Uint16x16((archsimd.Uint8x32(x)).ReshapeToUint16s())
}

func (x Uint8x64) ReshapeToUint16s() Uint16x32 {
	return Uint16x32((archsimd.Uint8x64(x)).ReshapeToUint16s())
}

func (x Uint8x16) ReshapeToUint32s() Uint32x4 {
	return Uint32x4((archsimd.Uint8x16(x)).ReshapeToUint32s())
}

func (x Uint8x32) ReshapeToUint32s() Uint32x8 {
	return Uint32x8((archsimd.Uint8x32(x)).ReshapeToUint32s())
}

func (x Uint8x64) ReshapeToUint32s() Uint32x16 {
	return Uint32x16((archsimd.Uint8x64(x)).ReshapeToUint32s())
}

func (x Uint8x16) ReshapeToUint64s() Uint64x2 {
	return Uint64x2((archsimd.Uint8x16(x)).ReshapeToUint64s())
}

func (x Uint8x32) ReshapeToUint64s() Uint64x4 {
	return Uint64x4((archsimd.Uint8x32(x)).ReshapeToUint64s())
}

func (x Uint8x64) ReshapeToUint64s() Uint64x8 {
	return Uint64x8((archsimd.Uint8x64(x)).ReshapeToUint64s())
}

func (x Uint8x16) Store(s []uint8) {
	(archsimd.Uint8x16(x)).Store(s)
}

func (x Uint8x32) Store(s []uint8) {
	(archsimd.Uint8x32(x)).Store(s)
}

func (x Uint8x64) Store(s []uint8) {
	(archsimd.Uint8x64(x)).Store(s)
}

func (x Uint8x16) StorePart(s []uint8) int {
	return (archsimd.Uint8x16(x)).StorePart(s)
}

func (x Uint8x32) StorePart(s []uint8) int {
	return (archsimd.Uint8x32(x)).StorePart(s)
}

func (x Uint8x64) StorePart(s []uint8) int {
	return (archsimd.Uint8x64(x)).StorePart(s)
}

func (x Uint8x16) String() string {
	return (archsimd.Uint8x16(x)).String()
}

func (x Uint8x32) String() string {
	return (archsimd.Uint8x32(x)).String()
}

func (x Uint8x64) String() string {
	return (archsimd.Uint8x64(x)).String()
}

func (x Uint8x16) Sub(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Sub(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Sub(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Sub(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Sub(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Sub(archsimd.Uint8x64(y)))
}

func (x Uint8x16) SubSaturated(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).SubSaturated(archsimd.Uint8x16(y)))
}

func (x Uint8x32) SubSaturated(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).SubSaturated(archsimd.Uint8x32(y)))
}

func (x Uint8x64) SubSaturated(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).SubSaturated(archsimd.Uint8x64(y)))
}

func (x Uint8x16) Xor(y Uint8x16) Uint8x16 {
	return Uint8x16((archsimd.Uint8x16(x)).Xor(archsimd.Uint8x16(y)))
}

func (x Uint8x32) Xor(y Uint8x32) Uint8x32 {
	return Uint8x32((archsimd.Uint8x32(x)).Xor(archsimd.Uint8x32(y)))
}

func (x Uint8x64) Xor(y Uint8x64) Uint8x64 {
	return Uint8x64((archsimd.Uint8x64(x)).Xor(archsimd.Uint8x64(y)))
}

func (x Uint16x16) Add(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Add(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Add(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Add(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Add(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Add(archsimd.Uint16x8(y)))
}

func (x Uint16x16) AddSaturated(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).AddSaturated(archsimd.Uint16x16(y)))
}

func (x Uint16x32) AddSaturated(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).AddSaturated(archsimd.Uint16x32(y)))
}

func (x Uint16x8) AddSaturated(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).AddSaturated(archsimd.Uint16x8(y)))
}

func (x Uint16x16) And(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).And(archsimd.Uint16x16(y)))
}

func (x Uint16x32) And(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).And(archsimd.Uint16x32(y)))
}

func (x Uint16x8) And(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).And(archsimd.Uint16x8(y)))
}

func (x Uint16x16) AndNot(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).AndNot(archsimd.Uint16x16(y)))
}

func (x Uint16x32) AndNot(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).AndNot(archsimd.Uint16x32(y)))
}

func (x Uint16x8) AndNot(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).AndNot(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Average(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Average(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Average(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Average(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Average(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Average(archsimd.Uint16x8(y)))
}

func (x Uint16x16) BitsToInt16() Int16x16 {
	return Int16x16((archsimd.Uint16x16(x)).BitsToInt16())
}

func (x Uint16x32) BitsToInt16() Int16x32 {
	return Int16x32((archsimd.Uint16x32(x)).BitsToInt16())
}

func (x Uint16x8) BitsToInt16() Int16x8 {
	return Int16x8((archsimd.Uint16x8(x)).BitsToInt16())
}

func (x Uint16x16) ConvertToInt16() Int16x16 {
	return Int16x16((archsimd.Uint16x16(x)).ConvertToInt16())
}

func (x Uint16x32) ConvertToInt16() Int16x32 {
	return Int16x32((archsimd.Uint16x32(x)).ConvertToInt16())
}

func (x Uint16x8) ConvertToInt16() Int16x8 {
	return Int16x8((archsimd.Uint16x8(x)).ConvertToInt16())
}

func (x Uint16x16) Equal(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).Equal(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Equal(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).Equal(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Equal(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).Equal(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Greater(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).Greater(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Greater(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).Greater(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Greater(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).Greater(archsimd.Uint16x8(y)))
}

func (x Uint16x16) GreaterEqual(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).GreaterEqual(archsimd.Uint16x16(y)))
}

func (x Uint16x32) GreaterEqual(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).GreaterEqual(archsimd.Uint16x32(y)))
}

func (x Uint16x8) GreaterEqual(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).GreaterEqual(archsimd.Uint16x8(y)))
}

func (x Uint16x16) IfElse(mask Mask16x16, y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).IfElse(archsimd.Mask16x16(mask), archsimd.Uint16x16(y)))
}

func (x Uint16x32) IfElse(mask Mask16x32, y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).IfElse(archsimd.Mask16x32(mask), archsimd.Uint16x32(y)))
}

func (x Uint16x8) IfElse(mask Mask16x8, y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).IfElse(archsimd.Mask16x8(mask), archsimd.Uint16x8(y)))
}

func (x Uint16x16) Len() int {
	return (archsimd.Uint16x16(x)).Len()
}

func (x Uint16x32) Len() int {
	return (archsimd.Uint16x32(x)).Len()
}

func (x Uint16x8) Len() int {
	return (archsimd.Uint16x8(x)).Len()
}

func (x Uint16x16) Less(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).Less(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Less(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).Less(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Less(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).Less(archsimd.Uint16x8(y)))
}

func (x Uint16x16) LessEqual(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).LessEqual(archsimd.Uint16x16(y)))
}

func (x Uint16x32) LessEqual(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).LessEqual(archsimd.Uint16x32(y)))
}

func (x Uint16x8) LessEqual(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).LessEqual(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Masked(mask Mask16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Masked(archsimd.Mask16x16(mask)))
}

func (x Uint16x32) Masked(mask Mask16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Masked(archsimd.Mask16x32(mask)))
}

func (x Uint16x8) Masked(mask Mask16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Masked(archsimd.Mask16x8(mask)))
}

func (x Uint16x16) Max(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Max(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Max(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Max(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Max(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Max(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Min(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Min(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Min(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Min(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Min(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Min(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Mul(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Mul(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Mul(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Mul(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Mul(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Mul(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Not() Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Not())
}

func (x Uint16x32) Not() Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Not())
}

func (x Uint16x8) Not() Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Not())
}

func (x Uint16x16) NotEqual(y Uint16x16) Mask16x16 {
	return Mask16x16((archsimd.Uint16x16(x)).NotEqual(archsimd.Uint16x16(y)))
}

func (x Uint16x32) NotEqual(y Uint16x32) Mask16x32 {
	return Mask16x32((archsimd.Uint16x32(x)).NotEqual(archsimd.Uint16x32(y)))
}

func (x Uint16x8) NotEqual(y Uint16x8) Mask16x8 {
	return Mask16x8((archsimd.Uint16x8(x)).NotEqual(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Or(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Or(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Or(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Or(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Or(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Or(archsimd.Uint16x8(y)))
}

func (x Uint16x16) ReshapeToUint32s() Uint32x8 {
	return Uint32x8((archsimd.Uint16x16(x)).ReshapeToUint32s())
}

func (x Uint16x32) ReshapeToUint32s() Uint32x16 {
	return Uint32x16((archsimd.Uint16x32(x)).ReshapeToUint32s())
}

func (x Uint16x8) ReshapeToUint32s() Uint32x4 {
	return Uint32x4((archsimd.Uint16x8(x)).ReshapeToUint32s())
}

func (x Uint16x16) ReshapeToUint64s() Uint64x4 {
	return Uint64x4((archsimd.Uint16x16(x)).ReshapeToUint64s())
}

func (x Uint16x32) ReshapeToUint64s() Uint64x8 {
	return Uint64x8((archsimd.Uint16x32(x)).ReshapeToUint64s())
}

func (x Uint16x8) ReshapeToUint64s() Uint64x2 {
	return Uint64x2((archsimd.Uint16x8(x)).ReshapeToUint64s())
}

func (x Uint16x16) ReshapeToUint8s() Uint8x32 {
	return Uint8x32((archsimd.Uint16x16(x)).ReshapeToUint8s())
}

func (x Uint16x32) ReshapeToUint8s() Uint8x64 {
	return Uint8x64((archsimd.Uint16x32(x)).ReshapeToUint8s())
}

func (x Uint16x8) ReshapeToUint8s() Uint8x16 {
	return Uint8x16((archsimd.Uint16x8(x)).ReshapeToUint8s())
}

func (x Uint16x16) RotateAllLeft(dist uint64) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).RotateAllLeft(dist))
}

func (x Uint16x32) RotateAllLeft(dist uint64) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).RotateAllLeft(dist))
}

func (x Uint16x8) RotateAllLeft(dist uint64) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).RotateAllLeft(dist))
}

func (x Uint16x16) RotateAllRight(dist uint64) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).RotateAllRight(dist))
}

func (x Uint16x32) RotateAllRight(dist uint64) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).RotateAllRight(dist))
}

func (x Uint16x8) RotateAllRight(dist uint64) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).RotateAllRight(dist))
}

func (x Uint16x16) ShiftAllLeft(shift uint64) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).ShiftAllLeft(shift))
}

func (x Uint16x32) ShiftAllLeft(shift uint64) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).ShiftAllLeft(shift))
}

func (x Uint16x8) ShiftAllLeft(shift uint64) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).ShiftAllLeft(shift))
}

func (x Uint16x16) ShiftAllRight(shift uint64) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).ShiftAllRight(shift))
}

func (x Uint16x32) ShiftAllRight(shift uint64) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).ShiftAllRight(shift))
}

func (x Uint16x8) ShiftAllRight(shift uint64) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).ShiftAllRight(shift))
}

func (x Uint16x16) Store(s []uint16) {
	(archsimd.Uint16x16(x)).Store(s)
}

func (x Uint16x32) Store(s []uint16) {
	(archsimd.Uint16x32(x)).Store(s)
}

func (x Uint16x8) Store(s []uint16) {
	(archsimd.Uint16x8(x)).Store(s)
}

func (x Uint16x16) StorePart(s []uint16) int {
	return (archsimd.Uint16x16(x)).StorePart(s)
}

func (x Uint16x32) StorePart(s []uint16) int {
	return (archsimd.Uint16x32(x)).StorePart(s)
}

func (x Uint16x8) StorePart(s []uint16) int {
	return (archsimd.Uint16x8(x)).StorePart(s)
}

func (x Uint16x16) String() string {
	return (archsimd.Uint16x16(x)).String()
}

func (x Uint16x32) String() string {
	return (archsimd.Uint16x32(x)).String()
}

func (x Uint16x8) String() string {
	return (archsimd.Uint16x8(x)).String()
}

func (x Uint16x16) Sub(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Sub(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Sub(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Sub(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Sub(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Sub(archsimd.Uint16x8(y)))
}

func (x Uint16x16) SubSaturated(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).SubSaturated(archsimd.Uint16x16(y)))
}

func (x Uint16x32) SubSaturated(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).SubSaturated(archsimd.Uint16x32(y)))
}

func (x Uint16x8) SubSaturated(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).SubSaturated(archsimd.Uint16x8(y)))
}

func (x Uint16x16) Xor(y Uint16x16) Uint16x16 {
	return Uint16x16((archsimd.Uint16x16(x)).Xor(archsimd.Uint16x16(y)))
}

func (x Uint16x32) Xor(y Uint16x32) Uint16x32 {
	return Uint16x32((archsimd.Uint16x32(x)).Xor(archsimd.Uint16x32(y)))
}

func (x Uint16x8) Xor(y Uint16x8) Uint16x8 {
	return Uint16x8((archsimd.Uint16x8(x)).Xor(archsimd.Uint16x8(y)))
}

func (x Uint32x16) Add(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Add(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Add(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Add(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Add(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Add(archsimd.Uint32x8(y)))
}

func (x Uint32x16) And(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).And(archsimd.Uint32x16(y)))
}

func (x Uint32x4) And(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).And(archsimd.Uint32x4(y)))
}

func (x Uint32x8) And(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).And(archsimd.Uint32x8(y)))
}

func (x Uint32x16) AndNot(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).AndNot(archsimd.Uint32x16(y)))
}

func (x Uint32x4) AndNot(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).AndNot(archsimd.Uint32x4(y)))
}

func (x Uint32x8) AndNot(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).AndNot(archsimd.Uint32x8(y)))
}

func (x Uint32x16) BitsToFloat32() Float32x16 {
	return Float32x16((archsimd.Uint32x16(x)).BitsToFloat32())
}

func (x Uint32x4) BitsToFloat32() Float32x4 {
	return Float32x4((archsimd.Uint32x4(x)).BitsToFloat32())
}

func (x Uint32x8) BitsToFloat32() Float32x8 {
	return Float32x8((archsimd.Uint32x8(x)).BitsToFloat32())
}

func (x Uint32x16) BitsToInt32() Int32x16 {
	return Int32x16((archsimd.Uint32x16(x)).BitsToInt32())
}

func (x Uint32x4) BitsToInt32() Int32x4 {
	return Int32x4((archsimd.Uint32x4(x)).BitsToInt32())
}

func (x Uint32x8) BitsToInt32() Int32x8 {
	return Int32x8((archsimd.Uint32x8(x)).BitsToInt32())
}

func (x Uint32x16) ConvertToInt32() Int32x16 {
	return Int32x16((archsimd.Uint32x16(x)).ConvertToInt32())
}

func (x Uint32x4) ConvertToInt32() Int32x4 {
	return Int32x4((archsimd.Uint32x4(x)).ConvertToInt32())
}

func (x Uint32x8) ConvertToInt32() Int32x8 {
	return Int32x8((archsimd.Uint32x8(x)).ConvertToInt32())
}

func (x Uint32x16) Equal(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).Equal(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Equal(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).Equal(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Equal(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).Equal(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Greater(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).Greater(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Greater(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).Greater(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Greater(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).Greater(archsimd.Uint32x8(y)))
}

func (x Uint32x16) GreaterEqual(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).GreaterEqual(archsimd.Uint32x16(y)))
}

func (x Uint32x4) GreaterEqual(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).GreaterEqual(archsimd.Uint32x4(y)))
}

func (x Uint32x8) GreaterEqual(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).GreaterEqual(archsimd.Uint32x8(y)))
}

func (x Uint32x16) IfElse(mask Mask32x16, y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).IfElse(archsimd.Mask32x16(mask), archsimd.Uint32x16(y)))
}

func (x Uint32x4) IfElse(mask Mask32x4, y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).IfElse(archsimd.Mask32x4(mask), archsimd.Uint32x4(y)))
}

func (x Uint32x8) IfElse(mask Mask32x8, y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).IfElse(archsimd.Mask32x8(mask), archsimd.Uint32x8(y)))
}

func (x Uint32x16) Len() int {
	return (archsimd.Uint32x16(x)).Len()
}

func (x Uint32x4) Len() int {
	return (archsimd.Uint32x4(x)).Len()
}

func (x Uint32x8) Len() int {
	return (archsimd.Uint32x8(x)).Len()
}

func (x Uint32x16) Less(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).Less(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Less(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).Less(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Less(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).Less(archsimd.Uint32x8(y)))
}

func (x Uint32x16) LessEqual(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).LessEqual(archsimd.Uint32x16(y)))
}

func (x Uint32x4) LessEqual(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).LessEqual(archsimd.Uint32x4(y)))
}

func (x Uint32x8) LessEqual(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).LessEqual(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Masked(mask Mask32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Masked(archsimd.Mask32x16(mask)))
}

func (x Uint32x4) Masked(mask Mask32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Masked(archsimd.Mask32x4(mask)))
}

func (x Uint32x8) Masked(mask Mask32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Masked(archsimd.Mask32x8(mask)))
}

func (x Uint32x16) Max(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Max(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Max(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Max(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Max(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Max(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Min(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Min(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Min(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Min(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Min(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Min(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Mul(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Mul(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Mul(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Mul(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Mul(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Mul(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Not() Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Not())
}

func (x Uint32x4) Not() Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Not())
}

func (x Uint32x8) Not() Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Not())
}

func (x Uint32x16) NotEqual(y Uint32x16) Mask32x16 {
	return Mask32x16((archsimd.Uint32x16(x)).NotEqual(archsimd.Uint32x16(y)))
}

func (x Uint32x4) NotEqual(y Uint32x4) Mask32x4 {
	return Mask32x4((archsimd.Uint32x4(x)).NotEqual(archsimd.Uint32x4(y)))
}

func (x Uint32x8) NotEqual(y Uint32x8) Mask32x8 {
	return Mask32x8((archsimd.Uint32x8(x)).NotEqual(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Or(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Or(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Or(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Or(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Or(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Or(archsimd.Uint32x8(y)))
}

func (x Uint32x16) ReshapeToUint16s() Uint16x32 {
	return Uint16x32((archsimd.Uint32x16(x)).ReshapeToUint16s())
}

func (x Uint32x4) ReshapeToUint16s() Uint16x8 {
	return Uint16x8((archsimd.Uint32x4(x)).ReshapeToUint16s())
}

func (x Uint32x8) ReshapeToUint16s() Uint16x16 {
	return Uint16x16((archsimd.Uint32x8(x)).ReshapeToUint16s())
}

func (x Uint32x16) ReshapeToUint64s() Uint64x8 {
	return Uint64x8((archsimd.Uint32x16(x)).ReshapeToUint64s())
}

func (x Uint32x4) ReshapeToUint64s() Uint64x2 {
	return Uint64x2((archsimd.Uint32x4(x)).ReshapeToUint64s())
}

func (x Uint32x8) ReshapeToUint64s() Uint64x4 {
	return Uint64x4((archsimd.Uint32x8(x)).ReshapeToUint64s())
}

func (x Uint32x16) ReshapeToUint8s() Uint8x64 {
	return Uint8x64((archsimd.Uint32x16(x)).ReshapeToUint8s())
}

func (x Uint32x4) ReshapeToUint8s() Uint8x16 {
	return Uint8x16((archsimd.Uint32x4(x)).ReshapeToUint8s())
}

func (x Uint32x8) ReshapeToUint8s() Uint8x32 {
	return Uint8x32((archsimd.Uint32x8(x)).ReshapeToUint8s())
}

func (x Uint32x16) RotateAllLeft(dist uint64) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).RotateAllLeft(dist))
}

func (x Uint32x4) RotateAllLeft(dist uint64) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).RotateAllLeft(dist))
}

func (x Uint32x8) RotateAllLeft(dist uint64) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).RotateAllLeft(dist))
}

func (x Uint32x16) RotateAllRight(dist uint64) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).RotateAllRight(dist))
}

func (x Uint32x4) RotateAllRight(dist uint64) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).RotateAllRight(dist))
}

func (x Uint32x8) RotateAllRight(dist uint64) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).RotateAllRight(dist))
}

func (x Uint32x16) ShiftAllLeft(shift uint64) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).ShiftAllLeft(shift))
}

func (x Uint32x4) ShiftAllLeft(shift uint64) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).ShiftAllLeft(shift))
}

func (x Uint32x8) ShiftAllLeft(shift uint64) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).ShiftAllLeft(shift))
}

func (x Uint32x16) ShiftAllRight(shift uint64) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).ShiftAllRight(shift))
}

func (x Uint32x4) ShiftAllRight(shift uint64) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).ShiftAllRight(shift))
}

func (x Uint32x8) ShiftAllRight(shift uint64) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).ShiftAllRight(shift))
}

func (x Uint32x16) Store(s []uint32) {
	(archsimd.Uint32x16(x)).Store(s)
}

func (x Uint32x4) Store(s []uint32) {
	(archsimd.Uint32x4(x)).Store(s)
}

func (x Uint32x8) Store(s []uint32) {
	(archsimd.Uint32x8(x)).Store(s)
}

func (x Uint32x16) StorePart(s []uint32) int {
	return (archsimd.Uint32x16(x)).StorePart(s)
}

func (x Uint32x4) StorePart(s []uint32) int {
	return (archsimd.Uint32x4(x)).StorePart(s)
}

func (x Uint32x8) StorePart(s []uint32) int {
	return (archsimd.Uint32x8(x)).StorePart(s)
}

func (x Uint32x16) String() string {
	return (archsimd.Uint32x16(x)).String()
}

func (x Uint32x4) String() string {
	return (archsimd.Uint32x4(x)).String()
}

func (x Uint32x8) String() string {
	return (archsimd.Uint32x8(x)).String()
}

func (x Uint32x16) Sub(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Sub(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Sub(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Sub(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Sub(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Sub(archsimd.Uint32x8(y)))
}

func (x Uint32x16) Xor(y Uint32x16) Uint32x16 {
	return Uint32x16((archsimd.Uint32x16(x)).Xor(archsimd.Uint32x16(y)))
}

func (x Uint32x4) Xor(y Uint32x4) Uint32x4 {
	return Uint32x4((archsimd.Uint32x4(x)).Xor(archsimd.Uint32x4(y)))
}

func (x Uint32x8) Xor(y Uint32x8) Uint32x8 {
	return Uint32x8((archsimd.Uint32x8(x)).Xor(archsimd.Uint32x8(y)))
}

func (x Uint64x2) Add(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Add(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Add(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Add(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Add(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Add(archsimd.Uint64x8(y)))
}

func (x Uint64x2) And(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).And(archsimd.Uint64x2(y)))
}

func (x Uint64x4) And(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).And(archsimd.Uint64x4(y)))
}

func (x Uint64x8) And(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).And(archsimd.Uint64x8(y)))
}

func (x Uint64x2) AndNot(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).AndNot(archsimd.Uint64x2(y)))
}

func (x Uint64x4) AndNot(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).AndNot(archsimd.Uint64x4(y)))
}

func (x Uint64x8) AndNot(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).AndNot(archsimd.Uint64x8(y)))
}

func (x Uint64x2) BitsToFloat64() Float64x2 {
	return Float64x2((archsimd.Uint64x2(x)).BitsToFloat64())
}

func (x Uint64x4) BitsToFloat64() Float64x4 {
	return Float64x4((archsimd.Uint64x4(x)).BitsToFloat64())
}

func (x Uint64x8) BitsToFloat64() Float64x8 {
	return Float64x8((archsimd.Uint64x8(x)).BitsToFloat64())
}

func (x Uint64x2) BitsToInt64() Int64x2 {
	return Int64x2((archsimd.Uint64x2(x)).BitsToInt64())
}

func (x Uint64x4) BitsToInt64() Int64x4 {
	return Int64x4((archsimd.Uint64x4(x)).BitsToInt64())
}

func (x Uint64x8) BitsToInt64() Int64x8 {
	return Int64x8((archsimd.Uint64x8(x)).BitsToInt64())
}

func (x Uint64x2) CarrylessMultiplyEven(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).CarrylessMultiplyEven(archsimd.Uint64x2(y)))
}

func (x Uint64x4) CarrylessMultiplyEven(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).CarrylessMultiplyEven(archsimd.Uint64x4(y)))
}

func (x Uint64x8) CarrylessMultiplyEven(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).CarrylessMultiplyEven(archsimd.Uint64x8(y)))
}

func (x Uint64x2) CarrylessMultiplyOdd(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).CarrylessMultiplyOdd(archsimd.Uint64x2(y)))
}

func (x Uint64x4) CarrylessMultiplyOdd(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).CarrylessMultiplyOdd(archsimd.Uint64x4(y)))
}

func (x Uint64x8) CarrylessMultiplyOdd(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).CarrylessMultiplyOdd(archsimd.Uint64x8(y)))
}

func (x Uint64x2) ConvertToInt64() Int64x2 {
	return Int64x2((archsimd.Uint64x2(x)).ConvertToInt64())
}

func (x Uint64x4) ConvertToInt64() Int64x4 {
	return Int64x4((archsimd.Uint64x4(x)).ConvertToInt64())
}

func (x Uint64x8) ConvertToInt64() Int64x8 {
	return Int64x8((archsimd.Uint64x8(x)).ConvertToInt64())
}

func (x Uint64x2) Equal(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).Equal(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Equal(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).Equal(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Equal(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).Equal(archsimd.Uint64x8(y)))
}

func (x Uint64x2) Greater(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).Greater(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Greater(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).Greater(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Greater(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).Greater(archsimd.Uint64x8(y)))
}

func (x Uint64x2) GreaterEqual(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).GreaterEqual(archsimd.Uint64x2(y)))
}

func (x Uint64x4) GreaterEqual(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).GreaterEqual(archsimd.Uint64x4(y)))
}

func (x Uint64x8) GreaterEqual(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).GreaterEqual(archsimd.Uint64x8(y)))
}

func (x Uint64x2) IfElse(mask Mask64x2, y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).IfElse(archsimd.Mask64x2(mask), archsimd.Uint64x2(y)))
}

func (x Uint64x4) IfElse(mask Mask64x4, y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).IfElse(archsimd.Mask64x4(mask), archsimd.Uint64x4(y)))
}

func (x Uint64x8) IfElse(mask Mask64x8, y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).IfElse(archsimd.Mask64x8(mask), archsimd.Uint64x8(y)))
}

func (x Uint64x2) Len() int {
	return (archsimd.Uint64x2(x)).Len()
}

func (x Uint64x4) Len() int {
	return (archsimd.Uint64x4(x)).Len()
}

func (x Uint64x8) Len() int {
	return (archsimd.Uint64x8(x)).Len()
}

func (x Uint64x2) Less(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).Less(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Less(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).Less(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Less(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).Less(archsimd.Uint64x8(y)))
}

func (x Uint64x2) LessEqual(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).LessEqual(archsimd.Uint64x2(y)))
}

func (x Uint64x4) LessEqual(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).LessEqual(archsimd.Uint64x4(y)))
}

func (x Uint64x8) LessEqual(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).LessEqual(archsimd.Uint64x8(y)))
}

func (x Uint64x2) Masked(mask Mask64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Masked(archsimd.Mask64x2(mask)))
}

func (x Uint64x4) Masked(mask Mask64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Masked(archsimd.Mask64x4(mask)))
}

func (x Uint64x8) Masked(mask Mask64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Masked(archsimd.Mask64x8(mask)))
}

func (x Uint64x2) Not() Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Not())
}

func (x Uint64x4) Not() Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Not())
}

func (x Uint64x8) Not() Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Not())
}

func (x Uint64x2) NotEqual(y Uint64x2) Mask64x2 {
	return Mask64x2((archsimd.Uint64x2(x)).NotEqual(archsimd.Uint64x2(y)))
}

func (x Uint64x4) NotEqual(y Uint64x4) Mask64x4 {
	return Mask64x4((archsimd.Uint64x4(x)).NotEqual(archsimd.Uint64x4(y)))
}

func (x Uint64x8) NotEqual(y Uint64x8) Mask64x8 {
	return Mask64x8((archsimd.Uint64x8(x)).NotEqual(archsimd.Uint64x8(y)))
}

func (x Uint64x2) Or(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Or(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Or(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Or(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Or(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Or(archsimd.Uint64x8(y)))
}

func (x Uint64x2) ReshapeToUint16s() Uint16x8 {
	return Uint16x8((archsimd.Uint64x2(x)).ReshapeToUint16s())
}

func (x Uint64x4) ReshapeToUint16s() Uint16x16 {
	return Uint16x16((archsimd.Uint64x4(x)).ReshapeToUint16s())
}

func (x Uint64x8) ReshapeToUint16s() Uint16x32 {
	return Uint16x32((archsimd.Uint64x8(x)).ReshapeToUint16s())
}

func (x Uint64x2) ReshapeToUint32s() Uint32x4 {
	return Uint32x4((archsimd.Uint64x2(x)).ReshapeToUint32s())
}

func (x Uint64x4) ReshapeToUint32s() Uint32x8 {
	return Uint32x8((archsimd.Uint64x4(x)).ReshapeToUint32s())
}

func (x Uint64x8) ReshapeToUint32s() Uint32x16 {
	return Uint32x16((archsimd.Uint64x8(x)).ReshapeToUint32s())
}

func (x Uint64x2) ReshapeToUint8s() Uint8x16 {
	return Uint8x16((archsimd.Uint64x2(x)).ReshapeToUint8s())
}

func (x Uint64x4) ReshapeToUint8s() Uint8x32 {
	return Uint8x32((archsimd.Uint64x4(x)).ReshapeToUint8s())
}

func (x Uint64x8) ReshapeToUint8s() Uint8x64 {
	return Uint8x64((archsimd.Uint64x8(x)).ReshapeToUint8s())
}

func (x Uint64x2) RotateAllLeft(dist uint64) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).RotateAllLeft(dist))
}

func (x Uint64x4) RotateAllLeft(dist uint64) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).RotateAllLeft(dist))
}

func (x Uint64x8) RotateAllLeft(dist uint64) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).RotateAllLeft(dist))
}

func (x Uint64x2) RotateAllRight(dist uint64) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).RotateAllRight(dist))
}

func (x Uint64x4) RotateAllRight(dist uint64) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).RotateAllRight(dist))
}

func (x Uint64x8) RotateAllRight(dist uint64) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).RotateAllRight(dist))
}

func (x Uint64x2) ShiftAllLeft(shift uint64) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).ShiftAllLeft(shift))
}

func (x Uint64x4) ShiftAllLeft(shift uint64) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).ShiftAllLeft(shift))
}

func (x Uint64x8) ShiftAllLeft(shift uint64) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).ShiftAllLeft(shift))
}

func (x Uint64x2) ShiftAllRight(shift uint64) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).ShiftAllRight(shift))
}

func (x Uint64x4) ShiftAllRight(shift uint64) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).ShiftAllRight(shift))
}

func (x Uint64x8) ShiftAllRight(shift uint64) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).ShiftAllRight(shift))
}

func (x Uint64x2) Store(s []uint64) {
	(archsimd.Uint64x2(x)).Store(s)
}

func (x Uint64x4) Store(s []uint64) {
	(archsimd.Uint64x4(x)).Store(s)
}

func (x Uint64x8) Store(s []uint64) {
	(archsimd.Uint64x8(x)).Store(s)
}

func (x Uint64x2) StorePart(s []uint64) int {
	return (archsimd.Uint64x2(x)).StorePart(s)
}

func (x Uint64x4) StorePart(s []uint64) int {
	return (archsimd.Uint64x4(x)).StorePart(s)
}

func (x Uint64x8) StorePart(s []uint64) int {
	return (archsimd.Uint64x8(x)).StorePart(s)
}

func (x Uint64x2) String() string {
	return (archsimd.Uint64x2(x)).String()
}

func (x Uint64x4) String() string {
	return (archsimd.Uint64x4(x)).String()
}

func (x Uint64x8) String() string {
	return (archsimd.Uint64x8(x)).String()
}

func (x Uint64x2) Sub(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Sub(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Sub(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Sub(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Sub(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Sub(archsimd.Uint64x8(y)))
}

func (x Uint64x2) Xor(y Uint64x2) Uint64x2 {
	return Uint64x2((archsimd.Uint64x2(x)).Xor(archsimd.Uint64x2(y)))
}

func (x Uint64x4) Xor(y Uint64x4) Uint64x4 {
	return Uint64x4((archsimd.Uint64x4(x)).Xor(archsimd.Uint64x4(y)))
}

func (x Uint64x8) Xor(y Uint64x8) Uint64x8 {
	return Uint64x8((archsimd.Uint64x8(x)).Xor(archsimd.Uint64x8(y)))
}

func (x Float32x16) Abs() Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Abs())
}

func (x Float32x4) Abs() Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Abs())
}

func (x Float32x8) Abs() Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Abs())
}

func (x Float32x16) Add(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Add(archsimd.Float32x16(y)))
}

func (x Float32x4) Add(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Add(archsimd.Float32x4(y)))
}

func (x Float32x8) Add(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Add(archsimd.Float32x8(y)))
}

func (x Float32x16) ConvertToInt32() Int32x16 {
	return Int32x16((archsimd.Float32x16(x)).ConvertToInt32())
}

func (x Float32x4) ConvertToInt32() Int32x4 {
	return Int32x4((archsimd.Float32x4(x)).ConvertToInt32())
}

func (x Float32x8) ConvertToInt32() Int32x8 {
	return Int32x8((archsimd.Float32x8(x)).ConvertToInt32())
}

func (x Float32x16) Div(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Div(archsimd.Float32x16(y)))
}

func (x Float32x4) Div(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Div(archsimd.Float32x4(y)))
}

func (x Float32x8) Div(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Div(archsimd.Float32x8(y)))
}

func (x Float32x16) Equal(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).Equal(archsimd.Float32x16(y)))
}

func (x Float32x4) Equal(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).Equal(archsimd.Float32x4(y)))
}

func (x Float32x8) Equal(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).Equal(archsimd.Float32x8(y)))
}

func (x Float32x16) Greater(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).Greater(archsimd.Float32x16(y)))
}

func (x Float32x4) Greater(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).Greater(archsimd.Float32x4(y)))
}

func (x Float32x8) Greater(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).Greater(archsimd.Float32x8(y)))
}

func (x Float32x16) GreaterEqual(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).GreaterEqual(archsimd.Float32x16(y)))
}

func (x Float32x4) GreaterEqual(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).GreaterEqual(archsimd.Float32x4(y)))
}

func (x Float32x8) GreaterEqual(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).GreaterEqual(archsimd.Float32x8(y)))
}

func (x Float32x16) IfElse(mask Mask32x16, y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).IfElse(archsimd.Mask32x16(mask), archsimd.Float32x16(y)))
}

func (x Float32x4) IfElse(mask Mask32x4, y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).IfElse(archsimd.Mask32x4(mask), archsimd.Float32x4(y)))
}

func (x Float32x8) IfElse(mask Mask32x8, y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).IfElse(archsimd.Mask32x8(mask), archsimd.Float32x8(y)))
}

func (x Float32x16) Len() int {
	return (archsimd.Float32x16(x)).Len()
}

func (x Float32x4) Len() int {
	return (archsimd.Float32x4(x)).Len()
}

func (x Float32x8) Len() int {
	return (archsimd.Float32x8(x)).Len()
}

func (x Float32x16) Less(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).Less(archsimd.Float32x16(y)))
}

func (x Float32x4) Less(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).Less(archsimd.Float32x4(y)))
}

func (x Float32x8) Less(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).Less(archsimd.Float32x8(y)))
}

func (x Float32x16) LessEqual(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).LessEqual(archsimd.Float32x16(y)))
}

func (x Float32x4) LessEqual(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).LessEqual(archsimd.Float32x4(y)))
}

func (x Float32x8) LessEqual(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).LessEqual(archsimd.Float32x8(y)))
}

func (x Float32x16) Masked(mask Mask32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Masked(archsimd.Mask32x16(mask)))
}

func (x Float32x4) Masked(mask Mask32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Masked(archsimd.Mask32x4(mask)))
}

func (x Float32x8) Masked(mask Mask32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Masked(archsimd.Mask32x8(mask)))
}

func (x Float32x16) Max(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Max(archsimd.Float32x16(y)))
}

func (x Float32x4) Max(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Max(archsimd.Float32x4(y)))
}

func (x Float32x8) Max(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Max(archsimd.Float32x8(y)))
}

func (x Float32x16) Min(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Min(archsimd.Float32x16(y)))
}

func (x Float32x4) Min(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Min(archsimd.Float32x4(y)))
}

func (x Float32x8) Min(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Min(archsimd.Float32x8(y)))
}

func (x Float32x16) Mul(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Mul(archsimd.Float32x16(y)))
}

func (x Float32x4) Mul(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Mul(archsimd.Float32x4(y)))
}

func (x Float32x8) Mul(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Mul(archsimd.Float32x8(y)))
}

func (x Float32x16) MulAdd(y Float32x16, z Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).MulAdd(archsimd.Float32x16(y), archsimd.Float32x16(z)))
}

func (x Float32x4) MulAdd(y Float32x4, z Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).MulAdd(archsimd.Float32x4(y), archsimd.Float32x4(z)))
}

func (x Float32x8) MulAdd(y Float32x8, z Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).MulAdd(archsimd.Float32x8(y), archsimd.Float32x8(z)))
}

func (x Float32x16) Neg() Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Neg())
}

func (x Float32x4) Neg() Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Neg())
}

func (x Float32x8) Neg() Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Neg())
}

func (x Float32x16) NotEqual(y Float32x16) Mask32x16 {
	return Mask32x16((archsimd.Float32x16(x)).NotEqual(archsimd.Float32x16(y)))
}

func (x Float32x4) NotEqual(y Float32x4) Mask32x4 {
	return Mask32x4((archsimd.Float32x4(x)).NotEqual(archsimd.Float32x4(y)))
}

func (x Float32x8) NotEqual(y Float32x8) Mask32x8 {
	return Mask32x8((archsimd.Float32x8(x)).NotEqual(archsimd.Float32x8(y)))
}

func (x Float32x16) Sqrt() Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Sqrt())
}

func (x Float32x4) Sqrt() Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Sqrt())
}

func (x Float32x8) Sqrt() Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Sqrt())
}

func (x Float32x16) Store(s []float32) {
	(archsimd.Float32x16(x)).Store(s)
}

func (x Float32x4) Store(s []float32) {
	(archsimd.Float32x4(x)).Store(s)
}

func (x Float32x8) Store(s []float32) {
	(archsimd.Float32x8(x)).Store(s)
}

func (x Float32x16) StorePart(s []float32) int {
	return (archsimd.Float32x16(x)).StorePart(s)
}

func (x Float32x4) StorePart(s []float32) int {
	return (archsimd.Float32x4(x)).StorePart(s)
}

func (x Float32x8) StorePart(s []float32) int {
	return (archsimd.Float32x8(x)).StorePart(s)
}

func (x Float32x16) String() string {
	return (archsimd.Float32x16(x)).String()
}

func (x Float32x4) String() string {
	return (archsimd.Float32x4(x)).String()
}

func (x Float32x8) String() string {
	return (archsimd.Float32x8(x)).String()
}

func (x Float32x16) Sub(y Float32x16) Float32x16 {
	return Float32x16((archsimd.Float32x16(x)).Sub(archsimd.Float32x16(y)))
}

func (x Float32x4) Sub(y Float32x4) Float32x4 {
	return Float32x4((archsimd.Float32x4(x)).Sub(archsimd.Float32x4(y)))
}

func (x Float32x8) Sub(y Float32x8) Float32x8 {
	return Float32x8((archsimd.Float32x8(x)).Sub(archsimd.Float32x8(y)))
}

func (x Float32x16) ToBits() Uint32x16 {
	return Uint32x16((archsimd.Float32x16(x)).ToBits())
}

func (x Float32x4) ToBits() Uint32x4 {
	return Uint32x4((archsimd.Float32x4(x)).ToBits())
}

func (x Float32x8) ToBits() Uint32x8 {
	return Uint32x8((archsimd.Float32x8(x)).ToBits())
}

func (x Float64x2) Abs() Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Abs())
}

func (x Float64x4) Abs() Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Abs())
}

func (x Float64x8) Abs() Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Abs())
}

func (x Float64x2) Add(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Add(archsimd.Float64x2(y)))
}

func (x Float64x4) Add(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Add(archsimd.Float64x4(y)))
}

func (x Float64x8) Add(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Add(archsimd.Float64x8(y)))
}

func (x Float64x2) Div(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Div(archsimd.Float64x2(y)))
}

func (x Float64x4) Div(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Div(archsimd.Float64x4(y)))
}

func (x Float64x8) Div(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Div(archsimd.Float64x8(y)))
}

func (x Float64x2) Equal(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).Equal(archsimd.Float64x2(y)))
}

func (x Float64x4) Equal(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).Equal(archsimd.Float64x4(y)))
}

func (x Float64x8) Equal(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).Equal(archsimd.Float64x8(y)))
}

func (x Float64x2) Greater(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).Greater(archsimd.Float64x2(y)))
}

func (x Float64x4) Greater(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).Greater(archsimd.Float64x4(y)))
}

func (x Float64x8) Greater(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).Greater(archsimd.Float64x8(y)))
}

func (x Float64x2) GreaterEqual(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).GreaterEqual(archsimd.Float64x2(y)))
}

func (x Float64x4) GreaterEqual(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).GreaterEqual(archsimd.Float64x4(y)))
}

func (x Float64x8) GreaterEqual(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).GreaterEqual(archsimd.Float64x8(y)))
}

func (x Float64x2) IfElse(mask Mask64x2, y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).IfElse(archsimd.Mask64x2(mask), archsimd.Float64x2(y)))
}

func (x Float64x4) IfElse(mask Mask64x4, y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).IfElse(archsimd.Mask64x4(mask), archsimd.Float64x4(y)))
}

func (x Float64x8) IfElse(mask Mask64x8, y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).IfElse(archsimd.Mask64x8(mask), archsimd.Float64x8(y)))
}

func (x Float64x2) Len() int {
	return (archsimd.Float64x2(x)).Len()
}

func (x Float64x4) Len() int {
	return (archsimd.Float64x4(x)).Len()
}

func (x Float64x8) Len() int {
	return (archsimd.Float64x8(x)).Len()
}

func (x Float64x2) Less(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).Less(archsimd.Float64x2(y)))
}

func (x Float64x4) Less(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).Less(archsimd.Float64x4(y)))
}

func (x Float64x8) Less(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).Less(archsimd.Float64x8(y)))
}

func (x Float64x2) LessEqual(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).LessEqual(archsimd.Float64x2(y)))
}

func (x Float64x4) LessEqual(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).LessEqual(archsimd.Float64x4(y)))
}

func (x Float64x8) LessEqual(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).LessEqual(archsimd.Float64x8(y)))
}

func (x Float64x2) Masked(mask Mask64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Masked(archsimd.Mask64x2(mask)))
}

func (x Float64x4) Masked(mask Mask64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Masked(archsimd.Mask64x4(mask)))
}

func (x Float64x8) Masked(mask Mask64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Masked(archsimd.Mask64x8(mask)))
}

func (x Float64x2) Max(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Max(archsimd.Float64x2(y)))
}

func (x Float64x4) Max(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Max(archsimd.Float64x4(y)))
}

func (x Float64x8) Max(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Max(archsimd.Float64x8(y)))
}

func (x Float64x2) Min(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Min(archsimd.Float64x2(y)))
}

func (x Float64x4) Min(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Min(archsimd.Float64x4(y)))
}

func (x Float64x8) Min(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Min(archsimd.Float64x8(y)))
}

func (x Float64x2) Mul(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Mul(archsimd.Float64x2(y)))
}

func (x Float64x4) Mul(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Mul(archsimd.Float64x4(y)))
}

func (x Float64x8) Mul(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Mul(archsimd.Float64x8(y)))
}

func (x Float64x2) MulAdd(y Float64x2, z Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).MulAdd(archsimd.Float64x2(y), archsimd.Float64x2(z)))
}

func (x Float64x4) MulAdd(y Float64x4, z Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).MulAdd(archsimd.Float64x4(y), archsimd.Float64x4(z)))
}

func (x Float64x8) MulAdd(y Float64x8, z Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).MulAdd(archsimd.Float64x8(y), archsimd.Float64x8(z)))
}

func (x Float64x2) Neg() Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Neg())
}

func (x Float64x4) Neg() Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Neg())
}

func (x Float64x8) Neg() Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Neg())
}

func (x Float64x2) NotEqual(y Float64x2) Mask64x2 {
	return Mask64x2((archsimd.Float64x2(x)).NotEqual(archsimd.Float64x2(y)))
}

func (x Float64x4) NotEqual(y Float64x4) Mask64x4 {
	return Mask64x4((archsimd.Float64x4(x)).NotEqual(archsimd.Float64x4(y)))
}

func (x Float64x8) NotEqual(y Float64x8) Mask64x8 {
	return Mask64x8((archsimd.Float64x8(x)).NotEqual(archsimd.Float64x8(y)))
}

func (x Float64x2) Sqrt() Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Sqrt())
}

func (x Float64x4) Sqrt() Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Sqrt())
}

func (x Float64x8) Sqrt() Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Sqrt())
}

func (x Float64x2) Store(s []float64) {
	(archsimd.Float64x2(x)).Store(s)
}

func (x Float64x4) Store(s []float64) {
	(archsimd.Float64x4(x)).Store(s)
}

func (x Float64x8) Store(s []float64) {
	(archsimd.Float64x8(x)).Store(s)
}

func (x Float64x2) StorePart(s []float64) int {
	return (archsimd.Float64x2(x)).StorePart(s)
}

func (x Float64x4) StorePart(s []float64) int {
	return (archsimd.Float64x4(x)).StorePart(s)
}

func (x Float64x8) StorePart(s []float64) int {
	return (archsimd.Float64x8(x)).StorePart(s)
}

func (x Float64x2) String() string {
	return (archsimd.Float64x2(x)).String()
}

func (x Float64x4) String() string {
	return (archsimd.Float64x4(x)).String()
}

func (x Float64x8) String() string {
	return (archsimd.Float64x8(x)).String()
}

func (x Float64x2) Sub(y Float64x2) Float64x2 {
	return Float64x2((archsimd.Float64x2(x)).Sub(archsimd.Float64x2(y)))
}

func (x Float64x4) Sub(y Float64x4) Float64x4 {
	return Float64x4((archsimd.Float64x4(x)).Sub(archsimd.Float64x4(y)))
}

func (x Float64x8) Sub(y Float64x8) Float64x8 {
	return Float64x8((archsimd.Float64x8(x)).Sub(archsimd.Float64x8(y)))
}

func (x Float64x2) ToBits() Uint64x2 {
	return Uint64x2((archsimd.Float64x2(x)).ToBits())
}

func (x Float64x4) ToBits() Uint64x4 {
	return Uint64x4((archsimd.Float64x4(x)).ToBits())
}

func (x Float64x8) ToBits() Uint64x8 {
	return Uint64x8((archsimd.Float64x8(x)).ToBits())
}

func (x Mask8x16) And(y Mask8x16) Mask8x16 {
	return Mask8x16((archsimd.Mask8x16(x)).And(archsimd.Mask8x16(y)))
}

func (x Mask8x32) And(y Mask8x32) Mask8x32 {
	return Mask8x32((archsimd.Mask8x32(x)).And(archsimd.Mask8x32(y)))
}

func (x Mask8x64) And(y Mask8x64) Mask8x64 {
	return Mask8x64((archsimd.Mask8x64(x)).And(archsimd.Mask8x64(y)))
}

func (x Mask8x16) Or(y Mask8x16) Mask8x16 {
	return Mask8x16((archsimd.Mask8x16(x)).Or(archsimd.Mask8x16(y)))
}

func (x Mask8x32) Or(y Mask8x32) Mask8x32 {
	return Mask8x32((archsimd.Mask8x32(x)).Or(archsimd.Mask8x32(y)))
}

func (x Mask8x64) Or(y Mask8x64) Mask8x64 {
	return Mask8x64((archsimd.Mask8x64(x)).Or(archsimd.Mask8x64(y)))
}

func (x Mask8x16) String() string {
	return (archsimd.Mask8x16(x)).String()
}

func (x Mask8x32) String() string {
	return (archsimd.Mask8x32(x)).String()
}

func (x Mask8x64) String() string {
	return (archsimd.Mask8x64(x)).String()
}

func (x Mask8x16) ToInt8x16() Int8x16 {
	return Int8x16((archsimd.Mask8x16(x)).ToInt8x16())
}

func (x Mask8x32) ToInt8x32() Int8x32 {
	return Int8x32((archsimd.Mask8x32(x)).ToInt8x32())
}

func (x Mask8x64) ToInt8x64() Int8x64 {
	return Int8x64((archsimd.Mask8x64(x)).ToInt8x64())
}

func (x Mask16x16) And(y Mask16x16) Mask16x16 {
	return Mask16x16((archsimd.Mask16x16(x)).And(archsimd.Mask16x16(y)))
}

func (x Mask16x32) And(y Mask16x32) Mask16x32 {
	return Mask16x32((archsimd.Mask16x32(x)).And(archsimd.Mask16x32(y)))
}

func (x Mask16x8) And(y Mask16x8) Mask16x8 {
	return Mask16x8((archsimd.Mask16x8(x)).And(archsimd.Mask16x8(y)))
}

func (x Mask16x16) Or(y Mask16x16) Mask16x16 {
	return Mask16x16((archsimd.Mask16x16(x)).Or(archsimd.Mask16x16(y)))
}

func (x Mask16x32) Or(y Mask16x32) Mask16x32 {
	return Mask16x32((archsimd.Mask16x32(x)).Or(archsimd.Mask16x32(y)))
}

func (x Mask16x8) Or(y Mask16x8) Mask16x8 {
	return Mask16x8((archsimd.Mask16x8(x)).Or(archsimd.Mask16x8(y)))
}

func (x Mask16x16) String() string {
	return (archsimd.Mask16x16(x)).String()
}

func (x Mask16x32) String() string {
	return (archsimd.Mask16x32(x)).String()
}

func (x Mask16x8) String() string {
	return (archsimd.Mask16x8(x)).String()
}

func (x Mask16x16) ToInt16x16() Int16x16 {
	return Int16x16((archsimd.Mask16x16(x)).ToInt16x16())
}

func (x Mask16x32) ToInt16x32() Int16x32 {
	return Int16x32((archsimd.Mask16x32(x)).ToInt16x32())
}

func (x Mask16x8) ToInt16x8() Int16x8 {
	return Int16x8((archsimd.Mask16x8(x)).ToInt16x8())
}

func (x Mask32x16) And(y Mask32x16) Mask32x16 {
	return Mask32x16((archsimd.Mask32x16(x)).And(archsimd.Mask32x16(y)))
}

func (x Mask32x4) And(y Mask32x4) Mask32x4 {
	return Mask32x4((archsimd.Mask32x4(x)).And(archsimd.Mask32x4(y)))
}

func (x Mask32x8) And(y Mask32x8) Mask32x8 {
	return Mask32x8((archsimd.Mask32x8(x)).And(archsimd.Mask32x8(y)))
}

func (x Mask32x16) Or(y Mask32x16) Mask32x16 {
	return Mask32x16((archsimd.Mask32x16(x)).Or(archsimd.Mask32x16(y)))
}

func (x Mask32x4) Or(y Mask32x4) Mask32x4 {
	return Mask32x4((archsimd.Mask32x4(x)).Or(archsimd.Mask32x4(y)))
}

func (x Mask32x8) Or(y Mask32x8) Mask32x8 {
	return Mask32x8((archsimd.Mask32x8(x)).Or(archsimd.Mask32x8(y)))
}

func (x Mask32x16) String() string {
	return (archsimd.Mask32x16(x)).String()
}

func (x Mask32x4) String() string {
	return (archsimd.Mask32x4(x)).String()
}

func (x Mask32x8) String() string {
	return (archsimd.Mask32x8(x)).String()
}

func (x Mask32x16) ToInt32x16() Int32x16 {
	return Int32x16((archsimd.Mask32x16(x)).ToInt32x16())
}

func (x Mask32x4) ToInt32x4() Int32x4 {
	return Int32x4((archsimd.Mask32x4(x)).ToInt32x4())
}

func (x Mask32x8) ToInt32x8() Int32x8 {
	return Int32x8((archsimd.Mask32x8(x)).ToInt32x8())
}

func (x Mask64x2) And(y Mask64x2) Mask64x2 {
	return Mask64x2((archsimd.Mask64x2(x)).And(archsimd.Mask64x2(y)))
}

func (x Mask64x4) And(y Mask64x4) Mask64x4 {
	return Mask64x4((archsimd.Mask64x4(x)).And(archsimd.Mask64x4(y)))
}

func (x Mask64x8) And(y Mask64x8) Mask64x8 {
	return Mask64x8((archsimd.Mask64x8(x)).And(archsimd.Mask64x8(y)))
}

func (x Mask64x2) Or(y Mask64x2) Mask64x2 {
	return Mask64x2((archsimd.Mask64x2(x)).Or(archsimd.Mask64x2(y)))
}

func (x Mask64x4) Or(y Mask64x4) Mask64x4 {
	return Mask64x4((archsimd.Mask64x4(x)).Or(archsimd.Mask64x4(y)))
}

func (x Mask64x8) Or(y Mask64x8) Mask64x8 {
	return Mask64x8((archsimd.Mask64x8(x)).Or(archsimd.Mask64x8(y)))
}

func (x Mask64x2) String() string {
	return (archsimd.Mask64x2(x)).String()
}

func (x Mask64x4) String() string {
	return (archsimd.Mask64x4(x)).String()
}

func (x Mask64x8) String() string {
	return (archsimd.Mask64x8(x)).String()
}

func (x Mask64x2) ToInt64x2() Int64x2 {
	return Int64x2((archsimd.Mask64x2(x)).ToInt64x2())
}

func (x Mask64x4) ToInt64x4() Int64x4 {
	return Int64x4((archsimd.Mask64x4(x)).ToInt64x4())
}

func (x Mask64x8) ToInt64x8() Int64x8 {
	return Int64x8((archsimd.Mask64x8(x)).ToInt64x8())
}
