- Timestamp:
- Dec 7, 2023 8:43:12 AM (14 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
r102510 r102512 2663 2663 /** 2664 2664 * Emits a Jcc rel32 / B.cc imm19 with a fixed displacement. 2665 * How @a offJmp is applied is are target specific. 2665 * 2666 * The @a offTarget is applied x86-style, so zero means the next instruction. 2667 * The unit is IEMNATIVEINSTR. 2666 2668 */ 2667 2669 DECL_INLINE_THROW(uint32_t) … … 2688 2690 #elif defined(RT_ARCH_ARM64) 2689 2691 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 2690 pu32CodeBuf[off++] = Armv8A64MkInstrBCond(enmCond, offTarget );2692 pu32CodeBuf[off++] = Armv8A64MkInstrBCond(enmCond, offTarget + 1); 2691 2693 2692 2694 #else … … 2700 2702 /** 2701 2703 * Emits a JZ/JE rel32 / B.EQ imm19 with a fixed displacement. 2702 * How @a offJmp is applied is are target specific. 2704 * 2705 * The @a offTarget is applied x86-style, so zero means the next instruction. 2706 * The unit is IEMNATIVEINSTR. 2703 2707 */ 2704 2708 DECL_INLINE_THROW(uint32_t) iemNativeEmitJzToFixed(PIEMRECOMPILERSTATE pReNative, uint32_t off, int32_t offTarget) … … 2716 2720 /** 2717 2721 * Emits a JNZ/JNE rel32 / B.NE imm19 with a fixed displacement. 2718 * How @a offJmp is applied is are target specific. 2722 * 2723 * The @a offTarget is applied x86-style, so zero means the next instruction. 2724 * The unit is IEMNATIVEINSTR. 2719 2725 */ 2720 2726 DECL_INLINE_THROW(uint32_t) iemNativeEmitJnzToFixed(PIEMRECOMPILERSTATE pReNative, uint32_t off, int32_t offTarget) … … 2732 2738 /** 2733 2739 * Emits a JBE/JNA rel32 / B.LS imm19 with a fixed displacement. 2734 * How @a offJmp is applied is are target specific. 2740 * 2741 * The @a offTarget is applied x86-style, so zero means the next instruction. 2742 * The unit is IEMNATIVEINSTR. 2735 2743 */ 2736 2744 DECL_INLINE_THROW(uint32_t) iemNativeEmitJbeToFixed(PIEMRECOMPILERSTATE pReNative, uint32_t off, int32_t offTarget) … … 2748 2756 /** 2749 2757 * Emits a JA/JNBE rel32 / B.EQ imm19 with a fixed displacement. 2750 * How @a offJmp is applied is are target specific. 2758 * 2759 * The @a offTarget is applied x86-style, so zero means the next instruction. 2760 * The unit is IEMNATIVEINSTR. 2751 2761 */ 2752 2762 DECL_INLINE_THROW(uint32_t) iemNativeEmitJaToFixed(PIEMRECOMPILERSTATE pReNative, uint32_t off, int32_t offTarget) … … 2970 2980 uint32_t uImmR = 0; 2971 2981 uint32_t uImmNandS = 0; 2972 if (Armv8A64ConvertMask32ToImmRImmS( uImm, &uImmNandS, &uImmR))2982 if (Armv8A64ConvertMask32ToImmRImmS(fBits, &uImmNandS, &uImmR)) 2973 2983 { 2974 2984 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 2975 pu32CodeBuf[off++] = Armv8A64MkInstrAndsImm(ARMV8_A64_REG_XZR, iGpr Dst, uImmNandS, uImmR, false /*f64Bit*/);2985 pu32CodeBuf[off++] = Armv8A64MkInstrAndsImm(ARMV8_A64_REG_XZR, iGprSrc, uImmNandS, uImmR, false /*f64Bit*/); 2976 2986 } 2977 2987 else 2978 2988 { 2979 2989 /* Use temporary register for the 64-bit immediate. */ 2980 uint8_t iTmpReg = iemNativeRegAllocTmpImm(pReNative, &off, uImm);2990 uint8_t iTmpReg = iemNativeRegAllocTmpImm(pReNative, &off, fBits); 2981 2991 uint32_t *pu32CodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 2982 2992 pu32CodeBuf[off++] = Armv8A64MkInstrAnds(ARMV8_A64_REG_XZR, iGprSrc, iTmpReg, false /*f64Bit*/);
Note:
See TracChangeset
for help on using the changeset viewer.