Changeset 103815 in vbox for trunk/include
- Timestamp:
- Mar 13, 2024 8:13:38 AM (10 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/armv8.h
r103777 r103815 4119 4119 * @param enmSz Element size of the source vector register. 4120 4120 * 4121 * @note This instruction assumes a 32-bit W<n> register for all no on 64bit vector sizes.4121 * @note This instruction assumes a 32-bit W<n> register for all non 64bit vector sizes. 4122 4122 */ 4123 4123 DECL_FORCE_INLINE(uint32_t) Armv8A64MkVecInstrIns(uint32_t iVecRegDst, uint32_t iRegSrc, uint8_t idxElem, … … 4132 4132 return UINT32_C(0x4e001c00) 4133 4133 | ((uint32_t)idxElem << (16 + enmSz + 1)) 4134 | (RT_BIT_32(enmSz) << 16) 4135 | (iRegSrc << 5) 4136 | iVecRegDst; 4137 } 4138 4139 4140 /** 4141 * A64: Encodes DUP (vector, register). 4142 * 4143 * @returns The encoded instruction. 4144 * @param iVecRegDst The vector register to put the result into. 4145 * @param iRegSrc The source register (ZR is valid). 4146 * @param enmSz Element size of the source vector register. 4147 * @param f128Bit Flag whether the instruction operates on the whole 128-bit of the vector register (true) or 4148 * just the low 64-bit (false). 4149 * 4150 * @note This instruction assumes a 32-bit W<n> register for all non 64bit vector sizes. 4151 */ 4152 DECL_FORCE_INLINE(uint32_t) Armv8A64MkVecInstrDup(uint32_t iVecRegDst, uint32_t iRegSrc, ARMV8INSTRUMOVINSSZ enmSz, 4153 bool f128Bit = true) 4154 { 4155 Assert(iRegSrc < 32); Assert(iVecRegDst < 32); 4156 Assert( (enmSz == kArmv8InstrUmovInsSz_U8) 4157 || (enmSz == kArmv8InstrUmovInsSz_U16) 4158 || (enmSz == kArmv8InstrUmovInsSz_U32) 4159 || (enmSz == kArmv8InstrUmovInsSz_U64)); 4160 4161 return UINT32_C(0x0e000c00) 4162 | ((uint32_t)f128Bit << 30) 4134 4163 | (RT_BIT_32(enmSz) << 16) 4135 4164 | (iRegSrc << 5)
Note:
See TracChangeset
for help on using the changeset viewer.