VirtualBox

Ignore:
Timestamp:
Mar 19, 2024 9:07:55 AM (10 months ago)
Author:
vboxsync
Message:

VMM/IEM: Implement 'microcoded' vpextr[bwdq] instruction decode, dispatch & emulation, bugref:9898

  • eliminate '256 immediate instructions' jumptable implementations of pextrw, vpextrw
  • eliminate 'fallback' C implementations of pextrw, vpextrw
  • add 'IEM_MC_FETCH_MREG_U16' micro-op
  • fix 'IEM_MC_FETCH_MREG_U32' micro-op to take 'a_iDWord' arg
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r103828 r103909  
    789789
    790790#define IEM_MC_FETCH_MREG_U64(a_u64Value, a_iMReg)          do { CHK_MREG_IDX(a_iMReg); (a_u64Value) = 0; CHK_VAR(a_u64Value); CHK_TYPE(uint64_t, a_u64Value); (void)fFpuRead; (void)fMcBegin; } while (0)
    791 #define IEM_MC_FETCH_MREG_U32(a_u32Value, a_iMReg)          do { CHK_MREG_IDX(a_iMReg); (a_u32Value) = 0; CHK_VAR(a_u32Value); CHK_TYPE(uint32_t, a_u32Value); (void)fFpuRead; (void)fMcBegin; } while (0)
     791#define IEM_MC_FETCH_MREG_U32(a_u32Value, a_iMReg, a_iDWord)    do { CHK_MREG_IDX(a_iMReg); (a_u32Value) = 0; CHK_VAR(a_u32Value); CHK_TYPE(uint32_t, a_u32Value); (void)fFpuRead; (void)fMcBegin; } while (0)
     792#define IEM_MC_FETCH_MREG_U16(a_u16Value, a_iMReg, a_iWord)     do { CHK_MREG_IDX(a_iMReg); (a_u16Value) = 0; CHK_VAR(a_u16Value); CHK_TYPE(uint16_t, a_u16Value); (void)fFpuRead; (void)fMcBegin; } while (0)
    792793#define IEM_MC_STORE_MREG_U64(a_iMReg, a_u64Value)          do { CHK_MREG_IDX(a_iMReg);                   CHK_VAR(a_u64Value); CHK_TYPE(uint64_t, a_u64Value); (void)fFpuWrite; (void)fMcBegin; } while (0)
    793794#define IEM_MC_STORE_MREG_U32_ZX_U64(a_iMReg, a_u32Value)   do { CHK_MREG_IDX(a_iMReg);                   CHK_VAR(a_u32Value); CHK_TYPE(uint32_t, a_u32Value); (void)fFpuWrite; (void)fMcBegin; } while (0)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette