41#ifndef __ARCH_ARM_INSTS_NEON64_MEM_HH__
42#define __ARCH_ARM_INSTS_NEON64_MEM_HH__
73 int eBits = 8 << eSize;
74 int lsbPos =
index * eBits;
76 int shiftAmt = lsbPos % 64;
82 maskBits = maskBits << eBits;
86 XReg sMask = maskBits;
87 maskBits = sMask << shiftAmt;
90 dest->
lo = (dest->
lo & (~maskBits)) | ((src & sMask) << shiftAmt);
92 dest->
hi = (dest->
hi & (~maskBits)) | ((src & sMask) << shiftAmt);
109 int eBits = 8 << eSize;
110 int lsbPos =
index * eBits;
111 assert(lsbPos < 128);
112 int shiftAmt = lsbPos % 64;
118 maskBits = maskBits << eBits;
120 maskBits = ~maskBits;
123 data = (src.
lo >> shiftAmt) & maskBits;
125 data = (src.
hi >> shiftAmt) & maskBits;
XReg readVecElem(VReg src, int index, int eSize)
Read a single NEON vector element.
void writeVecElem(VReg *dest, XReg src, int index, int eSize)
Write a single NEON vector element leaving the others untouched.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
128-bit NEON vector register.