VirtualBox

Ignore:
Timestamp:
Mar 13, 2024 2:01:20 PM (9 months ago)
Author:
vboxsync
Message:

VMM/IEM: Implemented simple (whole sale) status flag up update skipping for arithmetic operations with native emitter. bugref:10375

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py

    r103807 r103828  
    11041104
    11051105                # Add EFLAGS usage annotations to relevant MCs.
    1106                 elif oNewStmt.sName in ('IEM_MC_COMMIT_EFLAGS', 'IEM_MC_REF_EFLAGS', 'IEM_MC_FETCH_EFLAGS'):
     1106                elif oNewStmt.sName in ('IEM_MC_COMMIT_EFLAGS', 'IEM_MC_COMMIT_EFLAGS_OPT', 'IEM_MC_REF_EFLAGS',
     1107                                        'IEM_MC_FETCH_EFLAGS'):
    11071108                    oInstruction = self.oParent.oMcBlock.oInstruction;
    11081109                    oNewStmt.sName += '_EX';
     
    19961997
    19971998            # Collect MCs working on EFLAGS.  Caller will check this.
    1998             if oStmt.sName in ('IEM_MC_FETCH_EFLAGS', 'IEM_MC_FETCH_EFLAGS_U8', 'IEM_MC_COMMIT_EFLAGS', 'IEM_MC_REF_EFLAGS',
    1999                                'IEM_MC_ARG_LOCAL_EFLAGS', ):
     1999            if oStmt.sName in ('IEM_MC_FETCH_EFLAGS', 'IEM_MC_FETCH_EFLAGS_U8', 'IEM_MC_COMMIT_EFLAGS',
     2000                               'IEM_MC_COMMIT_EFLAGS_OPT', 'IEM_MC_REF_EFLAGS', 'IEM_MC_ARG_LOCAL_EFLAGS', ):
    20002001                dEflStmts[oStmt.sName] = oStmt;
    20012002            elif isinstance(oStmt, iai.McStmtCall):
     
    20602061                if len(dEflStmts) != 1 or not sMcNames.startswith('IEM_MC_CALL_CIMPL_'): # Hack for far calls
    20612062                    self.error('Uses %s but has no @opflmodify, @opfltest or @opflclass with details!' % (sMcNames,), oGenerator);
    2062             elif 'IEM_MC_COMMIT_EFLAGS' in dEflStmts:
     2063            elif 'IEM_MC_COMMIT_EFLAGS' in dEflStmts  or  'IEM_MC_COMMIT_EFLAGS_OPT' in dEflStmts:
    20632064                if not oInstruction.asFlModify:
    20642065                    if oInstruction.sMnemonic not in [ 'not', ]:
    2065                         self.error('Uses IEM_MC_COMMIT_EFLAGS but has no flags in @opflmodify!', oGenerator);
     2066                        self.error('Uses IEM_MC_COMMIT_EFLAGS[_OPT] but has no flags in @opflmodify!', oGenerator);
    20662067            elif (   'IEM_MC_CALL_CIMPL_0' in dEflStmts
    20672068                  or 'IEM_MC_CALL_CIMPL_1' in dEflStmts
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