VirtualBox

Changeset 104186 in vbox for trunk/src


Ignore:
Timestamp:
Apr 5, 2024 12:58:51 PM (10 months ago)
Author:
vboxsync
Message:

VMM/IEM: Get rid of IEM_MC_IF_MXCSR_XCPT_PENDING() and IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT() and replace with IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(). This makes the microcode blocks leaner and the recompiler doesn't has to do as much state keeping. Furthermore there is now exactly one way of doing SSE/AVX floating point operations when it comes to exception handling, bugref:10641 [missing file]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r104150 r104186  
    23452345        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vucomiss_u128, iemAImpl_vucomiss_u128_fallback),
    23462346                                pEFlags, uSrc1, uSrc2);
    2347         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2348             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2349         } IEM_MC_ELSE() {
    2350             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2351         } IEM_MC_ENDIF();
     2347        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2348        IEM_MC_COMMIT_EFLAGS(fEFlags);
    23522349
    23532350        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    23762373        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vucomiss_u128, iemAImpl_vucomiss_u128_fallback),
    23772374                                pEFlags, uSrc1, uSrc2);
    2378         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2379             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2380         } IEM_MC_ELSE() {
    2381             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2382         } IEM_MC_ENDIF();
     2375        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2376        IEM_MC_COMMIT_EFLAGS(fEFlags);
    23832377
    23842378        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    24162410        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vucomisd_u128, iemAImpl_vucomisd_u128_fallback),
    24172411                                pEFlags, uSrc1, uSrc2);
    2418         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2419             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2420         } IEM_MC_ELSE() {
    2421             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2422         } IEM_MC_ENDIF();
     2412        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2413        IEM_MC_COMMIT_EFLAGS(fEFlags);
    24232414
    24242415        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    24472438        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vucomisd_u128, iemAImpl_vucomisd_u128_fallback),
    24482439                                pEFlags, uSrc1, uSrc2);
    2449         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2450             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2451         } IEM_MC_ELSE() {
    2452             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2453         } IEM_MC_ENDIF();
     2440        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2441        IEM_MC_COMMIT_EFLAGS(fEFlags);
    24542442
    24552443        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    24902478        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vcomiss_u128, iemAImpl_vcomiss_u128_fallback),
    24912479                                pEFlags, uSrc1, uSrc2);
    2492         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2493             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2494         } IEM_MC_ELSE() {
    2495             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2496         } IEM_MC_ENDIF();
     2480        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2481        IEM_MC_COMMIT_EFLAGS(fEFlags);
    24972482
    24982483        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    25212506        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vcomiss_u128, iemAImpl_vcomiss_u128_fallback),
    25222507                                pEFlags, uSrc1, uSrc2);
    2523         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2524             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2525         } IEM_MC_ELSE() {
    2526             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2527         } IEM_MC_ENDIF();
     2508        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2509        IEM_MC_COMMIT_EFLAGS(fEFlags);
    25282510
    25292511        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    25612543        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vcomisd_u128, iemAImpl_vcomisd_u128_fallback),
    25622544                                pEFlags, uSrc1, uSrc2);
    2563         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2564             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2565         } IEM_MC_ELSE() {
    2566             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2567         } IEM_MC_ENDIF();
     2545        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2546        IEM_MC_COMMIT_EFLAGS(fEFlags);
    25682547
    25692548        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    25922571        IEM_MC_CALL_AVX_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAvx, iemAImpl_vcomisd_u128, iemAImpl_vcomisd_u128_fallback),
    25932572                                pEFlags, uSrc1, uSrc2);
    2594         IEM_MC_IF_MXCSR_XCPT_PENDING() {
    2595             IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
    2596         } IEM_MC_ELSE() {
    2597             IEM_MC_COMMIT_EFLAGS(fEFlags);
    2598         } IEM_MC_ENDIF();
     2573        IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT();
     2574        IEM_MC_COMMIT_EFLAGS(fEFlags);
    25992575
    26002576        IEM_MC_ADVANCE_RIP_AND_FINISH();
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