Changeset 105173 in vbox for trunk/include
- Timestamp:
- Jul 7, 2024 1:04:51 PM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/iprt/armv8.h
r105172 r105173 4934 4934 } 4935 4935 4936 4937 /** Armv8 [Signed,Unsigned] Extract {Unsigned} operation. */ 4938 typedef enum 4939 { 4940 kArmv8VecInstrQxtnOp_Sqxtn = RT_BIT_32(14), /**< SQXTN */ 4941 kArmv8VecInstrQxtnOp_Sqxtun = RT_BIT_32(29) | RT_BIT_32(13), /**< SQXTUN */ 4942 kArmv8VecInstrQxtnOp_Uqxtn = RT_BIT_32(29) | RT_BIT_32(14) /**< UQXTN */ 4943 } ARMV8INSTRVECQXTNOP; 4944 4945 /** 4946 * A64: Encodes SQXTN/SQXTN2/UQXTN/UQXTN2/SQXTUN/SQXTUN2 (vector, register). 4947 * 4948 * @returns The encoded instruction. 4949 * @param enmOp The operation to perform. 4950 * @param fUpper Flag whether to write the result to the lower (false) or upper (true) half of the destinatiom register. 4951 * @param iVecRegDst The vector register to put the result into. 4952 * @param iVecRegSrc The first vector source register. 4953 * @param enmSz Element size. 4954 */ 4955 DECL_FORCE_INLINE(uint32_t) Armv8A64MkVecInstrQxtn(ARMV8INSTRVECQXTNOP enmOp, bool fUpper, uint32_t iVecRegDst, uint32_t iVecRegSrc, ARMV8INSTRVECARITHSZ enmSz) 4956 { 4957 Assert(iVecRegDst < 32); Assert(iVecRegSrc < 32); 4958 4959 return UINT32_C(0x0e210800) 4960 | ((uint32_t)enmOp) 4961 | ((uint32_t)fUpper << 30) 4962 | ((uint32_t)enmSz << 22) 4963 | (iVecRegSrc << 5) 4964 | iVecRegDst; 4965 } 4966 4936 4967 /** @} */ 4937 4968
Note:
See TracChangeset
for help on using the changeset viewer.