.. default-domain:: chpl .. module:: IntrinArm64_256 :synopsis: There is no 256 for neon, this emulates it IntrinArm64_256 =============== **Usage** .. code-block:: chapel use IntrinArm64_256; or .. code-block:: chapel import IntrinArm64_256; There is no 256 for neon, this emulates it .. record:: vecPair .. attribute:: type vt .. attribute:: var lo: vt .. attribute:: var hi: vt .. method:: proc init(type vt) .. method:: proc init(type vt, lo: vt, hi: vt) .. method:: proc init(lo: ?t, hi: t) .. function:: proc numBits(type t) param: int where isSubtype(t, vecPair) .. record:: generic_wide .. attribute:: type implVecType .. method:: proc type vecType type .. method:: proc type laneType type .. method:: proc type offset 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: vecPair(?), x: vecType, y: vecType): vecType where numBits(mask.type) == numBits(vecType) .. method:: proc type isAllZeros(x: vecType): bool .. method:: proc type allZeros(): vecType .. method:: proc type allOnes(): 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_32x8r type .. function:: proc arm64_64x4r type .. function:: proc arm64_8x32i type .. function:: proc arm64_16x16i type .. function:: proc arm64_32x8i type .. function:: proc arm64_64x4i type .. method:: proc type generic_wide.set(x0: laneType, x1: laneType, x2: laneType, x3: laneType, x4: laneType, x5: laneType, x6: laneType, x7: laneType, x8: laneType, x9: laneType, x10: laneType, x11: laneType, x12: laneType, x13: laneType, x14: laneType, x15: laneType, x16: laneType, x17: laneType, x18: laneType, x19: laneType, x20: laneType, x21: laneType, x22: laneType, x23: laneType, x24: laneType, x25: laneType, x26: laneType, x27: laneType, x28: laneType, x29: laneType, x30: laneType, x31: laneType): vecType where offset == 16 .. method:: proc type generic_wide.set(x0: laneType, x1: laneType, x2: laneType, x3: laneType, x4: laneType, x5: laneType, x6: laneType, x7: laneType, x8: laneType, x9: laneType, x10: laneType, x11: laneType, x12: laneType, x13: laneType, x14: laneType, x15: laneType): vecType where offset == 8 .. method:: proc type generic_wide.set(x0: laneType, x1: laneType, x2: laneType, x3: laneType, x4: laneType, x5: laneType, x6: laneType, x7: laneType): vecType where offset == 4 .. method:: proc type generic_wide.set(x0: laneType, x1: laneType, x2: laneType, x3: laneType): vecType where offset == 2