IntrinX86_128

Usage

use IntrinX86_128;

or

import IntrinX86_128;
type vec32x4r
type vec64x2r
type vec8x16i
type vec16x8i
type vec32x4i
type vec64x2i
type vec8x16u
type vec16x8u
type vec32x4u
type vec64x2u
proc numBits(type t) param : int  where t == vec32x4r || t == vec64x2r || t == vec8x16i || t == vec16x8i || t == vec32x4i || t == vec64x2i || t == vec8x16u || t == vec16x8u || t == vec32x4u || t == vec64x2u
proc type vec32x4r.numBits param : int
proc type vec64x2r.numBits param : int
proc type vec8x16i.numBits param : int
proc type vec16x8i.numBits param : int
proc type vec32x4i.numBits param : int
proc type vec64x2i.numBits param : int
proc type vec8x16u.numBits param : int
proc type vec16x8u.numBits param : int
proc type vec32x4u.numBits param : int
proc type vec64x2u.numBits param : int
proc typeToSuffix(type t) param : string
proc type vec32x4r.typeSuffix param : string
proc type vec64x2r.typeSuffix param : string
proc type vec8x16i.typeSuffix param : string
proc type vec16x8i.typeSuffix param : string
proc type vec32x4i.typeSuffix param : string
proc type vec64x2i.typeSuffix param : string
proc type vec8x16u.typeSuffix param : string
proc type vec16x8u.typeSuffix param : string
proc type vec32x4u.typeSuffix param : string
proc type vec64x2u.typeSuffix param : string
proc vecTypeStr(type t) param : string
proc type vec32x4r.typeStr param : string
proc type vec64x2r.typeStr param : string
proc type vec8x16i.typeStr param : string
proc type vec16x8i.typeStr param : string
proc type vec32x4i.typeStr param : string
proc type vec64x2i.typeStr param : string
proc type vec8x16u.typeStr param : string
proc type vec16x8u.typeStr param : string
proc type vec32x4u.typeStr param : string
proc type vec64x2u.typeStr param : string
proc doSimpleOp(param op: string, x: ?t) : t

Call a simple op on a vector type x must be a vector type and also specifies the return type

proc doSimpleOp(param op: string, x: ?t, y: ?) : t
proc doSimpleOp(param op: string, x: ?t, y: ?, z: ?) : t
proc doSimpleOp(param op: string, x: ?t, y: ?, z: ?, w: ?) : t
proc doSimpleOp(param op: string, xs) : xs(0).type  where isTuple(xs)
proc doSimpleOp(param op: string, type returnType, x: ?t) : returnType

Call a simple op on a vector type returnType specifies the return type

proc doSimpleOp(param op: string, type returnType, x: ?t1, y: ?t2) : returnType
proc doSimpleOp(param op: string, type returnType, x: ?t1, y: ?t2, z: ?t3) : returnType
proc doSimpleOp(param op: string, type returnType, x: ?t1, y: ?t2, z: ?t3, w: ?t4) : returnType
proc doSimpleOp(param op: string, type returnType, xs) : returnType  where isTuple(xs)
record x8664_NxM
type extensionType
proc type vecType type
proc type laneType type
proc type numLanes param : int
proc type mmPrefix param : string
proc type extract(x: vecType, param idx: int) : laneType
proc type insert(x: vecType, y: laneType, param idx: int) : vecType
proc type splat(x: laneType) : vecType
proc type set(xs ...) : vecType
proc type loada(x: c_ptrConst(laneType)) : vecType
proc type loadu(x: c_ptrConst(laneType)) : vecType
proc type storea(x: c_ptr(laneType), y: vecType) : void
proc type storeu(x: c_ptr(laneType), y: vecType) : void
proc type loadMasked(x: c_ptrConst(laneType), mask: ?) : vecType
proc type gather(x: c_ptrConst(laneType), type indexType, indices: ?, param scale: int) : vecType
proc type gatherMasked(x: c_ptrConst(laneType), type indexType, indices: ?, param scale: int, mask: ?, src: vecType) : vecType
proc type swapPairs(x: vecType) : vecType
proc type swapLowHigh(x: vecType) : vecType
proc type reverse(x: vecType) : vecType
proc type rotateLeft(x: vecType) : vecType
proc type rotateRight(x: vecType) : vecType
proc type interleaveLower(x: vecType, y: vecType) : vecType
proc type interleaveUpper(x: vecType, y: vecType) : vecType
proc type deinterleaveLower(x: vecType, y: vecType) : vecType
proc type deinterleaveUpper(x: vecType, y: vecType) : vecType
proc type blendLowHigh(x: vecType, y: vecType) : vecType
proc type add(x: vecType, y: vecType) : vecType
proc type sub(x: vecType, y: vecType) : vecType
proc type mul(x: vecType, y: vecType) : vecType
proc type div(x: vecType, y: vecType) : vecType
proc type neg(x: vecType) : vecType
proc type and(x: vecType, y: vecType) : vecType
proc type or(x: vecType, y: vecType) : vecType
proc type xor(x: vecType, y: vecType) : vecType
proc type not(x: vecType) : vecType
proc type andNot(x: vecType, y: vecType) : vecType
proc type cmpEq(x: vecType, y: vecType) : vecType
proc type cmpNe(x: vecType, y: vecType) : vecType
proc type cmpLt(x: vecType, y: vecType) : vecType
proc type cmpLe(x: vecType, y: vecType) : vecType
proc type cmpGt(x: vecType, y: vecType) : vecType
proc type cmpGe(x: vecType, y: vecType) : vecType
proc type bitSelect(mask: ?, x: vecType, y: vecType) : vecType  where numBits(mask.type) == numBits(vecType)
proc type min(x: vecType, y: vecType) : vecType
proc type max(x: vecType, y: vecType) : vecType
proc type abs(x: vecType) : vecType
proc type hadd(x: vecType, y: vecType) : vecType
proc type sqrt(x: vecType) : vecType
proc type rsqrt(x: vecType) : vecType
proc type fmadd(x: vecType, y: vecType, z: vecType) : vecType
proc type fmsub(x: vecType, y: vecType, z: vecType) : vecType
proc type reinterpretCast(type toVecType, x: vecType) : toVecType
proc x8664_32x4r type
proc x8664_64x2r type
proc x8664_8x16i type
proc x8664_16x8i type
proc x8664_32x4i type
proc x8664_64x2i type
record x8664_32x4r_extension
type base
proc type vecType type
proc type laneType type
proc type hadd(x: vecType, y: vecType) : vecType
proc type abs(x: vecType) : vecType
record x8664_64x2r_extension
type base
proc type vecType type
proc type laneType type
proc type swapLowHigh(x: vecType) : vecType
proc type reverse(x: vecType) : vecType
proc type rotateLeft(x: vecType) : vecType
proc type rotateRight(x: vecType) : vecType
proc type deinterleaveLower(x: vecType, y: vecType) : vecType
proc type deinterleaveUpper(x: vecType, y: vecType) : vecType
proc type rsqrt(x: vecType) : vecType
proc type abs(x: vecType) : vecType
record x8664_8x16i_extension
type base
proc type vecType type
proc type laneType type
proc type mul(x: vecType, y: vecType) : vecType
proc type div(x: vecType, y: vecType) : vecType
proc type hadd(x: vecType, y: vecType) : vecType
proc type fmadd(x: vecType, y: vecType, z: vecType) : vecType
proc type fmsub(x: vecType, y: vecType, z: vecType) : vecType
record x8664_16x8i_extension
type base
proc type vecType type
proc type laneType type
proc type mul(x: vecType, y: vecType) : vecType
proc type div(x: vecType, y: vecType) : vecType
proc type hadd(x: vecType, y: vecType) : vecType
proc type fmadd(x: vecType, y: vecType, z: vecType) : vecType
proc type fmsub(x: vecType, y: vecType, z: vecType) : vecType
record x8664_32x4i_extension
type base
proc type vecType type
proc type laneType type
proc type div(x: vecType, y: vecType) : vecType
proc type mul(x: vecType, y: vecType) : vecType
proc type hadd(x: vecType, y: vecType) : vecType
proc type fmadd(x: vecType, y: vecType, z: vecType) : vecType
proc type fmsub(x: vecType, y: vecType, z: vecType) : vecType
record x8664_64x2i_extension
type base
proc type vecType type
proc type laneType type
proc type set(xs ...) : vecType
proc type swapLowHigh(x: vecType) : vecType
proc type reverse(x: vecType) : vecType
proc type rotateLeft(x: vecType) : vecType
proc type rotateRight(x: vecType) : vecType
proc type deinterleaveLower(x: vecType, y: vecType) : vecType
proc type deinterleaveUpper(x: vecType, y: vecType) : vecType
proc type div(x: vecType, y: vecType) : vecType
proc type hadd(x: vecType, y: vecType) : vecType
proc type fmadd(x: vecType, y: vecType, z: vecType) : vecType
proc type fmsub(x: vecType, y: vecType, z: vecType) : vecType