.. default-domain:: chpl .. module:: IntrinArm64_128 IntrinArm64_128 =============== **Usage** .. code-block:: chapel use IntrinArm64_128; or .. code-block:: chapel import IntrinArm64_128; .. type:: type vec32x4r .. type:: type vec64x2r .. type:: type vec8x16i .. type:: type vec16x8i .. type:: type vec32x4i .. type:: type vec64x2i .. type:: type vec8x16u .. type:: type vec16x8u .. type:: type vec32x4u .. type:: type vec64x2u .. type:: type vec32x2r .. type:: type vec64x1r .. type:: type vec8x8i .. type:: type vec16x4i .. type:: type vec32x2i .. type:: type vec64x1i .. type:: type vec8x8u .. type:: type vec16x4u .. type:: type vec32x2u .. type:: type vec64x1u .. function:: 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 .. function:: proc getHalfType(type t) type .. function:: proc getBitMaskType(type t) type .. function:: proc typeToSuffix(type t) param: string .. function:: proc vecTypeStr(type t) param: string .. function:: 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 .. function:: proc doSimpleOp(param op: string, x: ?t, y: ?): t .. function:: proc doSimpleOp(param op: string, x: ?t, y: ?, z: ?): t .. function:: proc doSimpleOp(param op: string, type returnType, x: ?t): returnType Call a simple op on a vector type returnType specifies the return type .. function:: proc doSimpleOp(param op: string, type returnType, x: ?t1, y: ?t2): returnType .. function:: proc doSimpleOp(param op: string, type returnType, x: ?t1, y: ?t2, z: ?t3): returnType .. function:: proc reinterpret(vec: ?, type t): t .. record:: arm64_NxM .. attribute:: type extensionType .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type numLanes param: int .. method:: proc type extract(x: vecType, param idx: int): laneType .. method:: proc type insert(x: vecType, y: laneType, param idx: int): vecType .. method:: proc type splat(x: laneType): vecType .. method:: proc type set(xs ...): vecType .. method:: proc type loada(x: c_ptrConst(laneType)): vecType .. method:: proc type loadu(x: c_ptrConst(laneType)): vecType .. method:: proc type storea(x: c_ptr(laneType), y: vecType): void .. method:: proc type storeu(x: c_ptr(laneType), y: vecType): void .. method:: proc type loadMasked(x: c_ptrConst(laneType), mask: ?): vecType .. method:: proc type gather(x: c_ptrConst(laneType), type indexType, indices: ?, param scale: int): vecType .. method:: proc type gatherMasked(x: c_ptrConst(laneType), type indexType, indices: ?, param scale: int, mask: ?, src: vecType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type interleaveLower(x: vecType, y: vecType): vecType .. method:: proc type interleaveUpper(x: vecType, y: vecType): vecType .. method:: proc type deinterleaveLower(x: vecType, y: vecType): vecType .. method:: proc type deinterleaveUpper(x: vecType, y: vecType): vecType .. method:: proc type blendLowHigh(x: vecType, y: vecType): vecType .. method:: proc type add(x: vecType, y: vecType): vecType .. method:: proc type sub(x: vecType, y: vecType): vecType .. method:: proc type mul(x: vecType, y: vecType): vecType .. method:: proc type div(x: vecType, y: vecType): vecType .. method:: proc type neg(x: vecType): vecType .. method:: proc type and(x: vecType, y: vecType): vecType .. method:: proc type or(x: vecType, y: vecType): vecType .. method:: proc type xor(x: vecType, y: vecType): vecType .. method:: proc type not(x: vecType): vecType .. method:: proc type andNot(x: vecType, y: vecType): vecType .. method:: proc type cmpEq(x: vecType, y: vecType): vecType .. method:: proc type cmpNe(x: vecType, y: vecType): vecType .. method:: proc type cmpLt(x: vecType, y: vecType): vecType .. method:: proc type cmpLe(x: vecType, y: vecType): vecType .. method:: proc type cmpGt(x: vecType, y: vecType): vecType .. method:: proc type cmpGe(x: vecType, y: vecType): vecType .. method:: proc type bitSelect(mask: ?, x: vecType, y: vecType): vecType where numBits(mask.type) == numBits(vecType) .. method:: proc type isAllZeros(x: vecType): bool .. method:: proc type allOnes(): vecType .. method:: proc type allZeros(): vecType .. method:: proc type moveMask(x: vecType): c_int .. method:: proc type min(x: vecType, y: vecType): vecType .. method:: proc type max(x: vecType, y: vecType): vecType .. method:: proc type abs(x: vecType): vecType .. method:: proc type hadd(x: vecType, y: vecType): vecType .. method:: proc type sqrt(x: vecType): vecType .. method:: proc type rsqrt(x: vecType): vecType .. method:: proc type fmadd(x: vecType, y: vecType, z: vecType): vecType .. method:: proc type fmsub(x: vecType, y: vecType, z: vecType): vecType .. method:: proc type reinterpretCast(type toVecType, x: vecType): toVecType .. function:: proc arm64_32x4r type .. function:: proc arm64_64x2r type .. function:: proc arm64_8x16i type .. function:: proc arm64_16x8i type .. function:: proc arm64_32x4i type .. function:: proc arm64_64x2i type .. record:: arm64_32x4r_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType, z: laneType, w: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type and(x: vecType, y: vecType): vecType .. method:: proc type or(x: vecType, y: vecType): vecType .. method:: proc type xor(x: vecType, y: vecType): vecType .. method:: proc type not(x: vecType): vecType .. method:: proc type andNot(x: vecType, y: vecType): vecType .. record:: arm64_64x2r_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type and(x: vecType, y: vecType): vecType .. method:: proc type or(x: vecType, y: vecType): vecType .. method:: proc type xor(x: vecType, y: vecType): vecType .. method:: proc type not(x: vecType): vecType .. method:: proc type andNot(x: vecType, y: vecType): vecType .. record:: arm64_8x16i_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType, z: laneType, w: laneType, a: laneType, b: laneType, c: laneType, d: laneType, e: laneType, f: laneType, g: laneType, h: laneType, i: laneType, j: laneType, k: laneType, l: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type div(x: vecType, y: vecType): vecType .. method:: proc type fmadd(x: vecType, y: vecType, z: vecType): vecType .. method:: proc type fmsub(x: vecType, y: vecType, z: vecType): vecType .. record:: arm64_16x8i_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType, z: laneType, w: laneType, a: laneType, b: laneType, c: laneType, d: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type div(x: vecType, y: vecType): vecType .. method:: proc type fmadd(x: vecType, y: vecType, z: vecType): vecType .. method:: proc type fmsub(x: vecType, y: vecType, z: vecType): vecType .. record:: arm64_32x4i_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType, z: laneType, w: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type div(x: vecType, y: vecType): vecType .. method:: proc type fmadd(x: vecType, y: vecType, z: vecType): vecType .. method:: proc type fmsub(x: vecType, y: vecType, z: vecType): vecType .. record:: arm64_64x2i_extension .. attribute:: type base .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type set(x: laneType, y: laneType): vecType .. method:: proc type swapPairs(x: vecType): vecType .. method:: proc type swapLowHigh(x: vecType): vecType .. method:: proc type reverse(x: vecType): vecType .. method:: proc type rotateLeft(x: vecType): vecType .. method:: proc type rotateRight(x: vecType): vecType .. method:: proc type div(x: vecType, y: vecType): vecType .. method:: proc type min(x: vecType, y: vecType): vecType .. method:: proc type max(x: vecType, y: vecType): vecType