VirtualBox

Ignore:
Timestamp:
Mar 28, 2017 7:28:08 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
114242
Message:

bs3-cpu-generated-1,IEM: Introducing @opcodesub to more effectively deal with mod=3 vs mod!=3 encoding different instructions; hacked stuff to test unused mod encodings.

File:
1 edited

Legend:

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

    r66311 r66313  
    12931293        /**
    12941294         * @opcode      0x12
     1295         * @opcodesub   11 mr/reg
    12951296         * @oppfx       none
    12961297         * @opcpuid     sse
     
    12991300         * @optest      op1=1 op2=2 -> op1=2
    13001301         * @optest      op1=0 op2=-42 -> op1=-42
    1301          * @oponlytest
    13021302         */
    13031303        IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq, UqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     
    13201320         * @opdone
    13211321         * @opcode      0x12
     1322         * @opcodesub   !11 mr/reg
    13221323         * @oppfx       none
    13231324         * @opcpuid     sse
     
    13271328         * @optest      op1=0 op2=-42 -> op1=-42
    13281329         * @opfunction  iemOp_vmovlps_Vq_Hq_Mq__vmovhlps
    1329          * @oponlytest
    13301330         */
    13311331        IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     
    13501350
    13511351
     1352/**
     1353 * @opcode      0x12
     1354 * @opcodesub   !11 mr/reg
     1355 * @oppfx       0x66
     1356 * @opcpuid     sse2
     1357 * @opgroup     og_sse2_pcksclr_datamove
     1358 * @opxcpttype  5
     1359 * @optest      op1=1 op2=2 -> op1=2
     1360 * @optest      op1=0 op2=-42 -> op1=-42
     1361 */
    13521362FNIEMOP_DEF(iemOp_vmovlpd_Vq_Hq_Mq)
    13531363{
    13541364    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1355     if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
    1356     {
    1357         /**
    1358          * @todo figure this out!
    1359          * opcode      0x12
    1360          * todo        11 /reg
    1361          * oppfx       0x66
    1362          * openc       ModR/M
    1363          * opcpuid     sse2
    1364          * opgroup     og_sse_simdfp_datamove
    1365          * opunused    immediate
    1366          * optest      op1=1 op2=2 -> op1=2
    1367          * oponlytest
    1368          */
    1369         return IEMOP_RAISE_INVALID_OPCODE();
    1370     }
    1371     else
    1372     {
    1373         /**
    1374          * @opdone
    1375          * @opcode      0x12
    1376          * @oppfx       0x66
    1377          * @opcpuid     sse2
    1378          * @opgroup     og_sse2_pcksclr_datamove
    1379          * @opxcpttype  5
    1380          * @optest      op1=1 op2=2 -> op1=2
    1381          * @optest      op1=0 op2=-42 -> op1=-42
    1382          * @opfunction  iemOp_vmovlpd_Vq_Hq_Mq
    1383          * @oponlytest
    1384          */
     1365    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     1366    {
    13851367        IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
    13861368
     
    13991381        IEM_MC_ADVANCE_RIP();
    14001382        IEM_MC_END();
    1401     }
    1402     return VINF_SUCCESS;
     1383        return VINF_SUCCESS;
     1384    }
     1385
     1386    /**
     1387     * @opdone
     1388     * @opmnemonic  ud660f12m3
     1389     * @opcode      0x12
     1390     * @opcodesub   11 mr/reg
     1391     * @oppfx       0x66
     1392     * @opunused    immediate
     1393     * @opcpuid     sse
     1394     * @optest      ->
     1395     */
     1396    return IEMOP_RAISE_INVALID_OPCODE();
    14031397}
    14041398
Note: See TracChangeset for help on using the changeset viewer.

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