IntrinArm64_256
Usage
use IntrinArm64_256;
or
import IntrinArm64_256;
There is no 256 for neon, this emulates it
- record vecPair
- type vt
- var lo : vt
- var hi : vt
- proc init(type vt)
- proc init(type vt, lo: vt, hi: vt)
- proc init(lo: ?t, hi: t)
- proc type numBits param : int
- proc numBits(type t) param : int where isSubtype(t, vecPair)
- record generic_wide
- type implVecType
- proc type vecType type
- proc type laneType type
- proc type offset param : int
- 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 shiftLeftImm(x: vecType, param offset: int) : vecType
- proc type shiftLeftVec(x: vecType, y: vecType) : vecType
- proc type shiftRightImm(x: vecType, param offset: int) : vecType
- proc type shiftRightVec(x: vecType, y: vecType) : vecType
- proc type shiftRightArithImm(x: vecType, param offset: int) : vecType
- proc type shiftRightArithVec(x: vecType, y: 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: vecPair(?), x: vecType, y: vecType) : vecType where numBits(mask.type) == numBits(vecType)
- proc type isAllZeros(x: vecType) : bool
- proc type allZeros() : vecType
- proc type allOnes() : vecType
- proc type moveMask(x: vecType) : c_int
- 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 type typeCast(type toVecType, x: vecType) : toVecType
- proc arm64_32x8r type
- proc arm64_64x4r type
- proc arm64_8x32i type
- proc arm64_16x16i type
- proc arm64_32x8i type
- proc arm64_64x4i type
- 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
- 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
- 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
- proc type generic_wide.set(x0: laneType, x1: laneType, x2: laneType, x3: laneType) : vecType where offset == 2