// Code generated by 'simdgen -o godefs -goroot $GOROOT -arch arm64 -arm64Path $ARM64_ISA_PATH go_arm64.yaml types.yaml categories.yaml'; DO NOT EDIT.

//go:build goexperiment.simd

package archsimd

/* bitSelect */

// bitSelect returns the bitwise selection if mask[i] then x[i] else y[i].
//
// Asm: VBIF, CPU Feature: NEON
func (x Int8x16) bitSelect(y Int8x16, mask Int8x16) Int8x16

/* bitSelectNot */

// bitSelectNot returns the bitwise selection if mask[i] then y[i] else x[i].
//
// Asm: VBIT, CPU Feature: NEON
func (x Int8x16) bitSelectNot(y Int8x16, mask Int8x16) Int8x16

/* broadcast1To2 */

// broadcast1To2 copies the lowest element of its input to all 2 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Float64x2) broadcast1To2() Float64x2

// broadcast1To2 copies the lowest element of its input to all 2 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Int64x2) broadcast1To2() Int64x2

// broadcast1To2 copies the lowest element of its input to all 2 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Uint64x2) broadcast1To2() Uint64x2

/* broadcast1To4 */

// broadcast1To4 copies the lowest element of its input to all 4 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Float32x4) broadcast1To4() Float32x4

// broadcast1To4 copies the lowest element of its input to all 4 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Int32x4) broadcast1To4() Int32x4

// broadcast1To4 copies the lowest element of its input to all 4 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Uint32x4) broadcast1To4() Uint32x4

/* broadcast1To8 */

// broadcast1To8 copies the lowest element of its input to all 8 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Int16x8) broadcast1To8() Int16x8

// broadcast1To8 copies the lowest element of its input to all 8 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Uint16x8) broadcast1To8() Uint16x8

/* broadcast1To16 */

// broadcast1To16 copies the lowest element of its input to all 16 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Int8x16) broadcast1To16() Int8x16

// broadcast1To16 copies the lowest element of its input to all 16 elements of
// the output vector.
//
// Asm: VDUP, CPU Feature: NEON
func (x Uint8x16) broadcast1To16() Uint8x16

/* carrylessMultiplyWidenLo */

// carrylessMultiplyWidenLo returns the carryless (polynomial) product of the low halves
// of x and y.
//
// A carryless multiplication uses bitwise XOR instead of
// add-with-carry, for example (in base two):
//
//	11 * 11 = 11 * (10 ^ 1) = (11 * 10) ^ (11 * 1) = 110 ^ 11 = 101
//
// This also models multiplication of polynomials with coefficients
// from GF(2) -- 11 * 11 models (x+1)*(x+1) = x**2 + (1^1)x + 1 =
// x**2 + 0x + 1 = x**2 + 1 modeled by 101.  (Note that "+" adds
// polynomial terms, but coefficients "add" with XOR.)
// For the high-indexed elements, use HiToLo:
//
//	x.HiToLo().carrylessMultiplyWidenLo(y.HiToLo())
//
// Asm: VPMULL, CPU Feature: NEON
func (x Uint64x2) carrylessMultiplyWidenLo(y Uint64x2) Uint64x2

/* reduceMax */

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VFMAXV, CPU Feature: NEON
func (x Float32x4) reduceMax() Float32x4

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMAXV, CPU Feature: NEON
func (x Int8x16) reduceMax() Int8x16

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMAXV, CPU Feature: NEON
func (x Int16x8) reduceMax() Int16x8

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMAXV, CPU Feature: NEON
func (x Int32x4) reduceMax() Int32x4

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMAXV, CPU Feature: NEON
func (x Uint8x16) reduceMax() Uint8x16

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMAXV, CPU Feature: NEON
func (x Uint16x8) reduceMax() Uint16x8

// reduceMax reduces x by taking the maximum of all elements. The maximum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMAXV, CPU Feature: NEON
func (x Uint32x4) reduceMax() Uint32x4

/* reduceMin */

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VFMINV, CPU Feature: NEON
func (x Float32x4) reduceMin() Float32x4

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMINV, CPU Feature: NEON
func (x Int8x16) reduceMin() Int8x16

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMINV, CPU Feature: NEON
func (x Int16x8) reduceMin() Int16x8

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VSMINV, CPU Feature: NEON
func (x Int32x4) reduceMin() Int32x4

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMINV, CPU Feature: NEON
func (x Uint8x16) reduceMin() Uint8x16

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMINV, CPU Feature: NEON
func (x Uint16x8) reduceMin() Uint16x8

// reduceMin reduces x by taking the minimum of all elements. The minimum is placed
// in element 0 of the result; other elements are zeroed.
//
// Asm: VUMINV, CPU Feature: NEON
func (x Uint32x4) reduceMin() Uint32x4

/* reduceSum */

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Int8x16) reduceSum() Int8x16

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Int16x8) reduceSum() Int16x8

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Int32x4) reduceSum() Int32x4

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Uint8x16) reduceSum() Uint8x16

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Uint16x8) reduceSum() Uint16x8

// reduceSum reduces x by summing all elements. The sum is placed in element 0
// of the result; other elements are zeroed.
//
// Asm: VADDV, CPU Feature: NEON
func (x Uint32x4) reduceSum() Uint32x4
