VirtualBox

Changeset 98723 in vbox


Ignore:
Timestamp:
Feb 24, 2023 1:47:07 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156023
Message:

VMM/IEM: Started on implementing pcmpistri/pcmpestri/pcmpistrm/pcmpestrm to get SSE4.2 support complete. Missing is the C emulation implementation. bugref:9898

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r98703 r98723  
    52235223; Need to move this as well somewhere better?
    52245224;
    5225 struc IEMPCMPISTRISRC
     5225struc IEMPCMPXSTRXSRC
    52265226    .uSrc1        resd 4
    52275227    .uSrc2        resd 4
     
    52295229
    52305230;;
    5231 ; The pcmpistri instruction.
     5231; The pcmpistri/pcmpestri instruction template.
    52325232;
    52335233; @param    A0      Pointer to the ECX register to store the result to (output).
     
    52365236; @param    A3      The 8-bit immediate
    52375237;
    5238 BEGINPROC_FASTCALL iemAImpl_pcmpistri_u128, 16
     5238%macro IEMIMPL_MEDIA_PCMPXSTRI_INSN_IMM8_6 1
     5239BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 16
    52395240        PROLOGUE_4_ARGS
    52405241        IEMIMPL_SSE_PROLOGUE
    52415242
    5242         movdqu  xmm0, [A2 + IEMPCMPISTRISRC.uSrc1]
    5243         movdqu  xmm1, [A2 + IEMPCMPISTRISRC.uSrc2]
     5243        movdqu  xmm0, [A2 + IEMPCMPXSTRXSRC.uSrc1]
     5244        movdqu  xmm1, [A2 + IEMPCMPXSTRXSRC.uSrc2]
    52445245        mov     T2, A0                  ; A0 can be ecx/rcx in some calling conventions which gets overwritten later (T2 only available on AMD64)
    52455246        lea     T1, [.imm0 xWrtRIP]
     
    52565257 %rep 256
    52575258.imm %+ bImm:
    5258        pcmpistri xmm0, xmm1, bImm
     5259       %1 xmm0, xmm1, bImm
    52595260       ret
    52605261       int3
     
    52645265dw 0xf7ff  + (.immEnd - .imm0)          ; will cause warning if entries are too big.
    52655266dw 0x107ff - (.immEnd - .imm0)          ; will cause warning if entries are too small.
    5266 ENDPROC iemAImpl_pcmpistri_u128
     5267ENDPROC iemAImpl_ %+ %1 %+ _u128
     5268%endmacro
     5269
     5270IEMIMPL_MEDIA_PCMPXSTRI_INSN_IMM8_6 pcmpistri
     5271IEMIMPL_MEDIA_PCMPXSTRI_INSN_IMM8_6 pcmpestri
     5272
     5273
     5274;;
     5275; The pcmpistrm/pcmpestrm instruction template.
     5276;
     5277; @param    A0      Pointer to the XMM0 register to store the result to (output).
     5278; @param    A1      Pointer to the EFLAGS register.
     5279; @param    A2      Pointer to the structure containing the source operands (input).
     5280; @param    A3      The 8-bit immediate
     5281;
     5282%macro IEMIMPL_MEDIA_PCMPXSTRM_INSN_IMM8_6 1
     5283BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u128, 16
     5284        PROLOGUE_4_ARGS
     5285        IEMIMPL_SSE_PROLOGUE
     5286
     5287        movdqu  xmm1, [A2 + IEMPCMPXSTRXSRC.uSrc1]
     5288        movdqu  xmm2, [A2 + IEMPCMPXSTRXSRC.uSrc2]
     5289        lea     T1, [.imm0 xWrtRIP]
     5290        lea     T0, [A3 + A3*3]         ; sizeof(insnX+ret) == 8: (A3 * 4) * 2
     5291        lea     T1, [T1 + T0*2]
     5292        call    T1
     5293
     5294        IEM_SAVE_FLAGS A1, X86_EFL_STATUS_BITS, 0
     5295        movdqu  [A0], xmm0
     5296
     5297        IEMIMPL_SSE_EPILOGUE
     5298        EPILOGUE_4_ARGS
     5299 %assign bImm 0
     5300 %rep 256
     5301.imm %+ bImm:
     5302       %1 xmm1, xmm2, bImm
     5303       ret
     5304       int3
     5305  %assign bImm bImm + 1
     5306 %endrep
     5307.immEnd:                                ; 256*8 == 0x800
     5308dw 0xf7ff  + (.immEnd - .imm0)          ; will cause warning if entries are too big.
     5309dw 0x107ff - (.immEnd - .imm0)          ; will cause warning if entries are too small.
     5310ENDPROC iemAImpl_ %+ %1 %+ _u128
     5311%endmacro
     5312
     5313IEMIMPL_MEDIA_PCMPXSTRM_INSN_IMM8_6 pcmpistrm
     5314IEMIMPL_MEDIA_PCMPXSTRM_INSN_IMM8_6 pcmpestrm
    52675315
    52685316
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r98703 r98723  
    1646916469 * [V]PCMPISTRI
    1647016470 */
    16471 IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPISTRISRC pSrc, uint8_t bEvil))
     16471IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil))
    1647216472{
    1647316473    RT_NOREF(pu32Ecx, pEFlags, pSrc, bEvil);
     16474    AssertReleaseFailed();
     16475}
     16476
     16477
     16478/**
     16479 * [V]PCMPESTRI
     16480 */
     16481IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil))
     16482{
     16483    RT_NOREF(pu32Ecx, pEFlags, pSrc, bEvil);
     16484    AssertReleaseFailed();
     16485}
     16486
     16487
     16488/**
     16489 * [V]PCMPISTRM
     16490 */
     16491IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistrm_u128_fallback,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil))
     16492{
     16493    RT_NOREF(puDst, pEFlags, pSrc, bEvil);
     16494    AssertReleaseFailed();
     16495}
     16496
     16497
     16498/**
     16499 * [V]PCMPESTRM
     16500 */
     16501IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestrm_u128_fallback,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil))
     16502{
     16503    RT_NOREF(puDst, pEFlags, pSrc, bEvil);
    1647416504    AssertReleaseFailed();
    1647516505}
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f3a.cpp.h

    r98703 r98723  
    11291129
    11301130/** Opcode 0x66 0x0f 0x60. */
    1131 FNIEMOP_STUB(iemOp_pcmpestrm_Vdq_Wdq_Ib);
     1131FNIEMOP_DEF(iemOp_pcmpestrm_Vdq_Wdq_Ib)
     1132{
     1133    IEMOP_MNEMONIC3(RMI, PCMPESTRM, pcmpestrm, Vdq, Wdq, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, 0);
     1134
     1135    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     1136    if (IEM_IS_MODRM_REG_MODE(bRm))
     1137    {
     1138        /*
     1139         * Register, register.
     1140         */
     1141        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1142        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1143        IEM_MC_BEGIN(4, 1);
     1144        IEM_MC_ARG(PRTUINT128U,                puDst,             0);
     1145        IEM_MC_ARG(uint32_t *,                 pEFlags,             1);
     1146        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,          Src);
     1147        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC, pSrc,           Src, 2);
     1148        IEM_MC_ARG_CONST(uint8_t,              bImmArg, /*=*/ bImm, 3);
     1149        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1150        IEM_MC_PREPARE_SSE_USAGE();
     1151        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1152        IEM_MC_FETCH_XREG_U128(Src.uSrc2, IEM_GET_MODRM_RM(pVCpu, bRm));
     1153        IEM_MC_REF_XREG_U128(puDst, 0 /*xmm0*/);
     1154        IEM_MC_REF_EFLAGS(pEFlags);
     1155        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1156                                                             iemAImpl_pcmpestrm_u128,
     1157                                                             iemAImpl_pcmpestrm_u128_fallback),
     1158                                 puDst, pEFlags, pSrc, bImmArg);
     1159        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1160        IEM_MC_END();
     1161    }
     1162    else
     1163    {
     1164        /*
     1165         * Register, memory.
     1166         */
     1167        IEM_MC_BEGIN(4, 3);
     1168        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
     1169        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     1170        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,           Src);
     1171        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC,  pSrc,           Src, 2);
     1172        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     1173
     1174        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
     1175        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1176        IEM_MC_ARG_CONST(uint8_t,               bImmArg, /*=*/ bImm, 3);
     1177        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1178        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1179        IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     1180
     1181        IEM_MC_PREPARE_SSE_USAGE();
     1182        IEM_MC_REF_GREG_U32(pu32Ecx, X86_GREG_xCX);
     1183        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1184        IEM_MC_REF_EFLAGS(pEFlags);
     1185        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1186                                                             iemAImpl_pcmpestri_u128,
     1187                                                             iemAImpl_pcmpestri_u128_fallback),
     1188                                 pu32Ecx, pEFlags, pSrc, bImmArg);
     1189        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1190        IEM_MC_END();
     1191    }
     1192}
     1193
     1194
    11321195/** Opcode 0x66 0x0f 0x61, */
    1133 FNIEMOP_STUB(iemOp_pcmpestri_Vdq_Wdq_Ib);
    1134 /** Opcode 0x66 0x0f 0x62. */
    1135 FNIEMOP_STUB(iemOp_pcmpistrm_Vdq_Wdq_Ib);
    1136 
    1137 
    1138 /** Opcode 0x66 0x0f 0x63*/
    1139 FNIEMOP_DEF(iemOp_pcmpistri_Vdq_Wdq_Ib)
    1140 {
     1196FNIEMOP_DEF(iemOp_pcmpestri_Vdq_Wdq_Ib)
     1197{
     1198    IEMOP_MNEMONIC3(RMI, PCMPESTRI, pcmpestri, Vdq, Wdq, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, 0);
     1199
    11411200    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11421201    if (IEM_IS_MODRM_REG_MODE(bRm))
     
    11501209        IEM_MC_ARG(uint32_t *,                 pu32Ecx,             0);
    11511210        IEM_MC_ARG(uint32_t *,                 pEFlags,             1);
    1152         IEM_MC_LOCAL(IEMPCMPISTRISRC,          Src);
    1153         IEM_MC_ARG_LOCAL_REF(PIEMPCMPISTRISRC, pSrc,           Src, 2);
     1211        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,          Src);
     1212        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC, pSrc,           Src, 2);
     1213        IEM_MC_ARG_CONST(uint8_t,              bImmArg, /*=*/ bImm, 3);
     1214        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1215        IEM_MC_PREPARE_SSE_USAGE();
     1216        IEM_MC_REF_GREG_U32(pu32Ecx, X86_GREG_xCX);
     1217        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1218        IEM_MC_FETCH_XREG_U128(Src.uSrc2, IEM_GET_MODRM_RM(pVCpu, bRm));
     1219        IEM_MC_REF_EFLAGS(pEFlags);
     1220        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1221                                                             iemAImpl_pcmpestri_u128,
     1222                                                             iemAImpl_pcmpestri_u128_fallback),
     1223                                 pu32Ecx, pEFlags, pSrc, bImmArg);
     1224        /** @todo testcase: High dword of RCX cleared? */
     1225        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1226        IEM_MC_END();
     1227    }
     1228    else
     1229    {
     1230        /*
     1231         * Register, memory.
     1232         */
     1233        IEM_MC_BEGIN(4, 3);
     1234        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
     1235        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     1236        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,           Src);
     1237        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC,  pSrc,           Src, 2);
     1238        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     1239
     1240        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
     1241        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1242        IEM_MC_ARG_CONST(uint8_t,               bImmArg, /*=*/ bImm, 3);
     1243        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1244        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1245        IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     1246
     1247        IEM_MC_PREPARE_SSE_USAGE();
     1248        IEM_MC_REF_GREG_U32(pu32Ecx, X86_GREG_xCX);
     1249        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1250        IEM_MC_REF_EFLAGS(pEFlags);
     1251        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1252                                                             iemAImpl_pcmpestri_u128,
     1253                                                             iemAImpl_pcmpestri_u128_fallback),
     1254                                 pu32Ecx, pEFlags, pSrc, bImmArg);
     1255        /** @todo testcase: High dword of RCX cleared? */
     1256        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1257        IEM_MC_END();
     1258    }
     1259}
     1260
     1261
     1262/** Opcode 0x66 0x0f 0x62. */
     1263FNIEMOP_DEF(iemOp_pcmpistrm_Vdq_Wdq_Ib)
     1264{
     1265    IEMOP_MNEMONIC3(RMI, PCMPISTRM, pcmpistrm, Vdq, Wdq, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, 0);
     1266
     1267    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     1268    if (IEM_IS_MODRM_REG_MODE(bRm))
     1269    {
     1270        /*
     1271         * Register, register.
     1272         */
     1273        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1274        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1275        IEM_MC_BEGIN(4, 1);
     1276        IEM_MC_ARG(PRTUINT128U,                puDst,             0);
     1277        IEM_MC_ARG(uint32_t *,                 pEFlags,             1);
     1278        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,          Src);
     1279        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC, pSrc,           Src, 2);
     1280        IEM_MC_ARG_CONST(uint8_t,              bImmArg, /*=*/ bImm, 3);
     1281        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1282        IEM_MC_PREPARE_SSE_USAGE();
     1283        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1284        IEM_MC_FETCH_XREG_U128(Src.uSrc2, IEM_GET_MODRM_RM(pVCpu, bRm));
     1285        IEM_MC_REF_XREG_U128(puDst, 0 /*xmm0*/);
     1286        IEM_MC_REF_EFLAGS(pEFlags);
     1287        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1288                                                             iemAImpl_pcmpistrm_u128,
     1289                                                             iemAImpl_pcmpistrm_u128_fallback),
     1290                                 puDst, pEFlags, pSrc, bImmArg);
     1291        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1292        IEM_MC_END();
     1293    }
     1294    else
     1295    {
     1296        /*
     1297         * Register, memory.
     1298         */
     1299        IEM_MC_BEGIN(4, 3);
     1300        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
     1301        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     1302        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,           Src);
     1303        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC,  pSrc,           Src, 2);
     1304        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     1305
     1306        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1);
     1307        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1308        IEM_MC_ARG_CONST(uint8_t,               bImmArg, /*=*/ bImm, 3);
     1309        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1310        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     1311        IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
     1312
     1313        IEM_MC_PREPARE_SSE_USAGE();
     1314        IEM_MC_REF_GREG_U32(pu32Ecx, X86_GREG_xCX);
     1315        IEM_MC_FETCH_XREG_U128(Src.uSrc1, IEM_GET_MODRM_REG(pVCpu, bRm));
     1316        IEM_MC_REF_EFLAGS(pEFlags);
     1317        IEM_MC_CALL_VOID_AIMPL_4(IEM_SELECT_HOST_OR_FALLBACK(fSse42,
     1318                                                             iemAImpl_pcmpistri_u128,
     1319                                                             iemAImpl_pcmpistri_u128_fallback),
     1320                                 pu32Ecx, pEFlags, pSrc, bImmArg);
     1321        IEM_MC_ADVANCE_RIP_AND_FINISH();
     1322        IEM_MC_END();
     1323    }
     1324}
     1325
     1326
     1327/** Opcode 0x66 0x0f 0x63*/
     1328FNIEMOP_DEF(iemOp_pcmpistri_Vdq_Wdq_Ib)
     1329{
     1330    IEMOP_MNEMONIC3(RMI, PCMPISTRI, pcmpistri, Vdq, Wdq, Ib, DISOPTYPE_HARMLESS | DISOPTYPE_SSE, 0);
     1331
     1332    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     1333    if (IEM_IS_MODRM_REG_MODE(bRm))
     1334    {
     1335        /*
     1336         * Register, register.
     1337         */
     1338        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
     1339        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     1340        IEM_MC_BEGIN(4, 1);
     1341        IEM_MC_ARG(uint32_t *,                 pu32Ecx,             0);
     1342        IEM_MC_ARG(uint32_t *,                 pEFlags,             1);
     1343        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,          Src);
     1344        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC, pSrc,           Src, 2);
    11541345        IEM_MC_ARG_CONST(uint8_t,              bImmArg, /*=*/ bImm, 3);
    11551346        IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT();
     
    11751366        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    11761367        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
    1177         IEM_MC_LOCAL(IEMPCMPISTRISRC,           Src);
    1178         IEM_MC_ARG_LOCAL_REF(PIEMPCMPISTRISRC,  pSrc,           Src, 2);
     1368        IEM_MC_LOCAL(IEMPCMPXSTRXSRC,           Src);
     1369        IEM_MC_ARG_LOCAL_REF(PIEMPCMPXSTRXSRC,  pSrc,           Src, 2);
    11791370        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    11801371
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r98703 r98723  
    23872387IEM_DECL_IMPL_DEF(void, iemAImpl_sha256rnds2_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc, PCRTUINT128U puXmm0Constants));
    23882388
    2389 typedef struct IEMPCMPISTRISRC
     2389typedef struct IEMPCMPXSTRXSRC
    23902390{
    23912391    RTUINT128U              uSrc1;
    23922392    RTUINT128U              uSrc2;
    2393 } IEMPCMPISTRISRC;
    2394 typedef IEMPCMPISTRISRC *PIEMPCMPISTRISRC;
    2395 typedef const IEMPCMPISTRISRC *PCIEMPCMPISTRISRC;
    2396 
    2397 IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPISTRISRC pSrc, uint8_t bEvil));
    2398 IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPISTRISRC pSrc, uint8_t bEvil));
     2393} IEMPCMPXSTRXSRC;
     2394typedef IEMPCMPXSTRXSRC *PIEMPCMPXSTRXSRC;
     2395typedef const IEMPCMPXSTRXSRC *PCIEMPCMPXSTRXSRC;
     2396
     2397IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2398IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2399IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestri_u128,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2400IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestri_u128_fallback,(uint32_t *pu32Ecx, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2401
     2402IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistrm_u128,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2403IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpistrm_u128_fallback,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2404IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestrm_u128,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
     2405IEM_DECL_IMPL_DEF(void, iemAImpl_pcmpestrm_u128_fallback,(PRTUINT128U puDst, uint32_t *pEFlags, PCIEMPCMPXSTRXSRC pSrc, uint8_t bEvil));
    23992406
    24002407FNIEMAIMPLMEDIAOPTF2U128IMM8 iemAImpl_pclmulqdq_u128, iemAImpl_pclmulqdq_u128_fallback;
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