41 #ifndef __ARCH_ARM_INSTS_NEON64_MEM_HH__ 42 #define __ARCH_ARM_INSTS_NEON64_MEM_HH__ 66 int eBits = 8 << eSize;
67 int lsbPos = index * eBits;
69 int shiftAmt = lsbPos % 64;
75 maskBits = maskBits << eBits;
79 XReg sMask = maskBits;
80 maskBits = sMask << shiftAmt;
83 dest->
lo = (dest->
lo & (~maskBits)) | ((src & sMask) << shiftAmt);
85 dest->
hi = (dest->
hi & (~maskBits)) | ((src & sMask) << shiftAmt);
102 int eBits = 8 << eSize;
103 int lsbPos = index * eBits;
104 assert(lsbPos < 128);
105 int shiftAmt = lsbPos % 64;
111 maskBits = maskBits << eBits;
113 maskBits = ~maskBits;
116 data = (src.
lo >> shiftAmt) & maskBits;
118 data = (src.
hi >> shiftAmt) & maskBits;
125 #endif // __ARCH_ARM_INSTS_NEON64_MEM_HH__
128-bit NEON vector register.
void writeVecElem(VReg *dest, XReg src, int index, int eSize)
Write a single NEON vector element leaving the others untouched.
XReg readVecElem(VReg src, int index, int eSize)
Read a single NEON vector element.