- Timestamp:
- Apr 12, 2024 7:32:46 AM (9 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/armv8.h
r104294 r104304 4683 4683 | iVecRegDst; 4684 4684 } 4685 4686 4687 /** Armv8 vector arith ops element size. */ 4688 typedef enum ARMV8INSTRVECARITHSZ 4689 { 4690 kArmv8VecInstrArithSz_8 = 0, /**< 8-bit. */ 4691 kArmv8VecInstrArithSz_16 = 1, /**< 16-bit. */ 4692 kArmv8VecInstrArithSz_32 = 2, /**< 32-bit. */ 4693 kArmv8VecInstrArithSz_64 = 3, /**< 64-bit. */ 4694 } ARMV8INSTRVECARITHSZ; 4695 4696 /** 4697 * A64: Encodes ADD/SUB (vector, register). 4698 * 4699 * @returns The encoded instruction. 4700 * @param iVecRegDst The vector register to put the result into. 4701 * @param iVecRegSrc1 The first vector source register. 4702 * @param iVecRegSrc2 The second vector source register. 4703 * @param enmSz Element size. 4704 * @param f128Bit Flag whether this operates on the full 128-bit (true, default) of the vector register 4705 * or just the low 64-bit (false). 4706 */ 4707 DECL_FORCE_INLINE(uint32_t) Armv8A64MkVecInstrAddSub(bool fSub, uint32_t iVecRegDst, uint32_t iVecRegSrc1, uint32_t iVecRegSrc2, 4708 ARMV8INSTRVECARITHSZ enmSz, bool f128Bit = true) 4709 { 4710 Assert(iVecRegDst < 32); Assert(iVecRegSrc1 < 32); Assert(iVecRegSrc2 < 32); 4711 4712 return UINT32_C(0x0e208400) 4713 | ((uint32_t)f128Bit << 30) 4714 | ((uint32_t)fSub << 29) 4715 | ((uint32_t)enmSz << 22) 4716 | (iVecRegSrc2 << 16) 4717 | (iVecRegSrc1 << 5) 4718 | iVecRegDst; 4719 } 4720 4685 4721 /** @} */ 4686 4722
Note:
See TracChangeset
for help on using the changeset viewer.