Changeset 106885 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Nov 8, 2024 9:39:31 AM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r106871 r106885 674 674 675 675 676 #define BS3_XCPT_ALWAYS 0x80 677 #define BS3_XCPT_UD (X86_XCPT_UD | BS3_XCPT_ALWAYS) 678 679 676 680 /* 677 681 * Test type #1. … … 865 869 /* Memory pointer. */ 866 870 if (fMemOp) 867 if (paTests[iTest].enmRm != RM_MEM_DI) 868 Bs3RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs, puMemOp); 869 else 870 Bs3RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rdi, &Ctx.fs, puMemOp); 871 Bs3ExtCtxSetReg(&SetRegCtx, (paTests[iTest].enmRm == RM_MEM_DI) ? FSxDI : FSxBX, (void *)puMemOp); 871 872 872 873 /* … … 9253 9254 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, PASS_ELEMENTS(s_aValuesAll) }, 9254 9255 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9255 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues00) },9256 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues1B) },9257 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9258 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues3D) },9259 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9260 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9261 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9262 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9256 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9257 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9258 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9259 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9260 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9261 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9262 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9263 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9263 9264 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, PASS_ELEMENTS(s_aValuesAll) }, 9264 9265 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9265 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues00) },9266 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues1B) },9267 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9268 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues3D) },9269 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9270 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9271 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9272 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9266 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9267 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9268 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9269 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9270 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9271 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9272 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9273 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9273 9274 }; 9274 9275 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = … … 9276 9277 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, PASS_ELEMENTS(s_aValuesAll) }, 9277 9278 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9278 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues00) },9279 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues1B) },9280 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9281 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues3D) },9282 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9283 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9284 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9285 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9279 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9280 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9281 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9282 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9283 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9284 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9285 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9286 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9286 9287 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, PASS_ELEMENTS(s_aValuesAll) }, 9287 9288 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9288 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues00) },9289 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues1B) },9290 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9291 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues3D) },9292 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9293 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9294 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9295 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9289 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9290 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9291 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9292 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9293 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9294 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9295 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9296 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9296 9297 }; 9297 9298 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = … … 9299 9300 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3, PASS_ELEMENTS(s_aValuesAll) }, 9300 9301 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9301 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues00) },9302 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues1B) },9303 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9304 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, 0,PASS_ELEMENTS(s_aValues3D) },9305 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9306 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9307 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9308 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9302 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9303 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9304 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9305 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9306 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9307 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9308 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9309 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9309 9310 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3, PASS_ELEMENTS(s_aValuesAll) }, 9310 9311 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9311 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues00) },9312 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues1B) },9313 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValuesE4) },9314 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, 0,PASS_ELEMENTS(s_aValues3D) },9315 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9316 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9317 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9318 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9312 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues00) }, 9313 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9314 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9315 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9316 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9317 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9318 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9319 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM1, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9319 9320 { bs3CpuInstr3_vpermilps_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, PASS_ELEMENTS(s_aValuesAll) }, 9320 9321 { bs3CpuInstr3_vpermilps_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, XMM9, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9321 { bs3CpuInstr3_vpermilps_XMM8_XMM9_000h_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, 0,PASS_ELEMENTS(s_aValues00) },9322 { bs3CpuInstr3_vpermilps_XMM8_XMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, 0,PASS_ELEMENTS(s_aValues1B) },9323 { bs3CpuInstr3_vpermilps_XMM8_XMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, 0,PASS_ELEMENTS(s_aValuesE4) },9324 { bs3CpuInstr3_vpermilps_XMM8_XMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, 0,PASS_ELEMENTS(s_aValues3D) },9325 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9326 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9327 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9328 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9322 { bs3CpuInstr3_vpermilps_XMM8_XMM9_000h_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, PASS_ELEMENTS(s_aValues00) }, 9323 { bs3CpuInstr3_vpermilps_XMM8_XMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9324 { bs3CpuInstr3_vpermilps_XMM8_XMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9325 { bs3CpuInstr3_vpermilps_XMM8_XMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9326 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9327 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9328 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9329 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, XMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9329 9330 { bs3CpuInstr3_vpermilps_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, PASS_ELEMENTS(s_aValuesAll) }, 9330 9331 { bs3CpuInstr3_vpermilps_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, YMM9, FSxBX, PASS_ELEMENTS(s_aValuesAll) }, 9331 { bs3CpuInstr3_vpermilps_YMM8_YMM9_000h_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, 0,PASS_ELEMENTS(s_aValues00) },9332 { bs3CpuInstr3_vpermilps_YMM8_YMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, 0,PASS_ELEMENTS(s_aValues1B) },9333 { bs3CpuInstr3_vpermilps_YMM8_YMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, 0,PASS_ELEMENTS(s_aValuesE4) },9334 { bs3CpuInstr3_vpermilps_YMM8_YMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, 0,PASS_ELEMENTS(s_aValues3D) },9335 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues00) },9336 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues1B) },9337 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, 0,PASS_ELEMENTS(s_aValuesE4) },9338 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, 0,PASS_ELEMENTS(s_aValues3D) },9332 { bs3CpuInstr3_vpermilps_YMM8_YMM9_000h_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, PASS_ELEMENTS(s_aValues00) }, 9333 { bs3CpuInstr3_vpermilps_YMM8_YMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9334 { bs3CpuInstr3_vpermilps_YMM8_YMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9335 { bs3CpuInstr3_vpermilps_YMM8_YMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9336 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues00) }, 9337 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues1B) }, 9338 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValuesE4) }, 9339 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, YMM8, FSxBX, NOREG, PASS_ELEMENTS(s_aValues3D) }, 9339 9340 }; 9340 9341 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); … … 9599 9600 * Test type #2 - GPR <- MM/XMM/YMM, no VVVV. 9600 9601 */ 9601 #define BS3_XCPT_ALWAYS 0x809602 #define BS3_XCPT_UD (X86_XCPT_UD | BS3_XCPT_ALWAYS)9603 9602 9604 9603 typedef struct BS3CPUINSTR3_TEST2_VALUES_T … … 9692 9691 bool const fAvxInstr = paTests[iTest].enmType >= T_AVX_128; 9693 9692 bool const fMemOp = paTests[iTest].enmRm >= RM_MEM; 9693 uint8_t const cMemOps = BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) 9694 + BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc); 9694 9695 uint8_t const cbOperand = paTests[iTest].enmType < T_128BITS ? 64/8 9695 9696 : paTests[iTest].enmType < T_256BITS ? 128/8 : 256/8; … … 9708 9709 unsigned iVal; 9709 9710 9710 /* If testing unaligned memory accesses (or #PF s), skip register-only tests. This9711 /* If testing unaligned memory accesses (or #PF), skip register-only tests. This 9711 9712 allows setting bXcptMmx, bXcptSse and bXcptAvx to reflect the misaligned exceptions. */ 9712 9713 if ((paTests[iTest].enmRm == RM_REG || paTests[iTest].enmRm == RM_MEM8) && (!paConfigs[iCfg].fAligned || paConfigs[iCfg].fAlignCheck || fPf)) 9713 9714 continue; 9714 9715 9715 BS3_ASSERT( !fMemOp || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc));9716 BS3_ASSERT(!(BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) && BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc)));9716 BS3_ASSERT((fMemOp && (cMemOps == 1)) || (!fMemOp && (cMemOps == 0))); 9717 NOREF(cMemOps); 9717 9718 9718 9719 /* #AC is only raised in ring-3.: */ … … 9771 9772 /* Memory pointer. */ 9772 9773 if (fMemOp) 9773 Bs3 RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs,puMemOp);9774 Bs3ExtCtxSetReg(&SetRegCtx, (paTests[iTest].enmRm == RM_MEM_DI) ? FSxDI : FSxBX, (void *)puMemOp); 9774 9775 9775 9776 /* … … 9813 9814 Ctx.cr2.u = 0; 9814 9815 9815 if ( paTests[iTest].enmRm >= RM_MEM9816 if ( fMemOp 9816 9817 && Bs3MemCmp(puMemOpAlias, &uMemOpExpect, cbMemOp) != 0) 9817 9818 Bs3TestFailedF("Expected uMemOp %.*Rhxs, got %.*Rhxs", cbMemOp, &uMemOpExpect, cbMemOp, puMemOpAlias); … … 10673 10674 bool const fAvxInstr = paTests[iTest].enmType >= T_AVX_128; 10674 10675 bool const fMemOp = paTests[iTest].enmRm >= RM_MEM; 10676 uint8_t const cMemOps = BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) 10677 + BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc); 10675 10678 uint8_t const cbOperand = paTests[iTest].enmType < T_128BITS ? 64/8 10676 10679 : paTests[iTest].enmType < T_256BITS ? 128/8 : 256/8; … … 10689 10692 10690 10693 /* If testing unaligned memory accesses (or #PF), skip register-only tests. This 10691 10694 allows setting bXcptMmx, bXcptSse and bXcptAvx to reflect the misaligned exceptions. */ 10692 10695 if ((paTests[iTest].enmRm == RM_REG || paTests[iTest].enmRm == RM_MEM8) && (!paConfigs[iCfg].fAligned || paConfigs[iCfg].fAlignCheck || fPf)) 10693 10696 continue; 10694 10697 10695 BS3_ASSERT( !fMemOp || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) || BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc));10696 BS3_ASSERT(!(BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegDst) && BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc)));10698 BS3_ASSERT((fMemOp && (cMemOps == 1)) || (!fMemOp && (cMemOps == 0))); 10699 NOREF(cMemOps); 10697 10700 10698 10701 SetRegCtx.fZeroYMMHi = fSseInstr; … … 10755 10758 /* Memory pointer. */ 10756 10759 if (fMemOp) 10757 Bs3 RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs,puMemOp);10760 Bs3ExtCtxSetReg(&SetRegCtx, (paTests[iTest].enmRm == RM_MEM_DI) ? FSxDI : FSxBX, (void *)puMemOp); 10758 10761 10759 10762 /* … … 11989 11992 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 11990 11993 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 11991 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);11994 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), 0 /*cbMaxAlign*/); 11992 11995 } 11993 11996 … … 12236 12239 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12237 12240 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12238 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5), X86_EFL_STATUS_BITS);12241 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5), 0 /*cbMaxAlign*/); 12239 12242 } 12240 12243 … … 12483 12486 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12484 12487 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12485 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5), X86_EFL_STATUS_BITS);12488 g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5), 0 /*cbMaxAlign*/); 12486 12489 } 12487 12490 … … 12571 12574 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12572 12575 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12573 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);12576 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), 0 /*cbMaxAlign*/); 12574 12577 } 12575 12578 … … 12650 12653 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12651 12654 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12652 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);12655 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), 0 /*cbMaxAlign*/); 12653 12656 } 12654 12657 … … 12791 12794 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 12792 12795 return bs3CpuInstr3_WorkerTestType3(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 12793 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), X86_EFL_STATUS_BITS);12796 g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4), 0 /*cbMaxAlign*/); 12794 12797 } 12795 12798 … … 12972 12975 bool const fAvxInstr = paTests[iTest].enmType >= T_AVX_128; 12973 12976 bool const fMemOp = paTests[iTest].enmRm >= RM_MEM; 12977 uint8_t const cMemOps = BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc1) 12978 + BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc2); 12974 12979 uint8_t const cbOperand = paTests[iTest].enmType < T_128BITS ? 64/8 12975 12980 : paTests[iTest].enmType < T_256BITS ? 128/8 : 256/8; … … 12992 12997 continue; 12993 12998 12994 BS3_ASSERT(fMemOp || !BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc2)); 12999 BS3_ASSERT((fMemOp && (cMemOps == 1) && BS3_REGISTER_IS_MEMREF(paTests[iTest].iRegSrc2)) || (!fMemOp && (cMemOps == 0))); 13000 NOREF(cMemOps); 12995 13001 12996 13002 SetRegCtx.fZeroYMMHi = fSseInstr; … … 13045 13051 Bs3MemCpy(puMemOpAlias, &paValues[iVal].uSrc2, cbMemOp); 13046 13052 uMemOpExpect = paValues[iVal].uSrc2; 13047 Bs3 RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs,puMemOp);13053 Bs3ExtCtxSetReg(&SetRegCtx, (paTests[iTest].enmRm == RM_MEM_DI) ? FSxDI : FSxBX, (void *)puMemOp); 13048 13054 } 13049 13055 else … … 13543 13549 /* Memory pointer. */ 13544 13550 if (fMemOp) 13545 Bs3 RegCtxSetGrpSegFromCurPtr(&Ctx, &Ctx.rbx, &Ctx.fs,puMemOp);13551 Bs3ExtCtxSetReg(&SetRegCtx, (paTests[iTest].enmRm == RM_MEM_DI) ? FSxDI : FSxBX, (void *)puMemOp); 13546 13552 13547 13553 /* … … 14273 14279 bool const fSseInstr = paTests[iTest].enmType >= T_SSE && paTests[iTest].enmType < T_AVX_128; 14274 14280 bool const fAvxInstr = paTests[iTest].enmType >= T_AVX_128; 14281 bool const fMemOp = paTests[iTest].enmRm >= RM_MEM; 14282 uint8_t const cMemOps = BS3_REGISTER_IS_MEMREF(paTests[iTest].iMediaRegDst) 14283 + BS3_REGISTER_IS_MEMREF(paTests[iTest].iMediaRegSrc) 14284 + BS3_REGISTER_IS_MEMREF(paTests[iTest].iGprReg); 14275 14285 uint8_t const cbOperand = paTests[iTest].enmType < T_128BITS ? 64/8 14276 14286 : paTests[iTest].enmType < T_256BITS ? 128/8 : 256/8; … … 14288 14298 unsigned iVal; 14289 14299 14290 /* If testing unaligned memory accesses , skip register-only tests. This allows14291 setting bXcptMmx, bXcptSse and bXcptAvx to reflect the misaligned exceptions. */14300 /* If testing unaligned memory accesses (or #PF), skip register-only tests. This 14301 allows setting bXcptMmx, bXcptSse and bXcptAvx to reflect the misaligned exceptions. */ 14292 14302 if ((paTests[iTest].enmRm == RM_REG || paTests[iTest].enmRm == RM_MEM8) && (!paConfigs[iCfg].fAligned || paConfigs[iCfg].fAlignCheck || fPf)) 14293 14303 continue; 14304 14305 BS3_ASSERT((fMemOp && (cMemOps == 1) && BS3_REGISTER_IS_MEMREF(paTests[iTest].iGprReg)) || (!fMemOp && (cMemOps == 0))); 14306 NOREF(cMemOps); 14294 14307 14295 14308 SetRegCtx.fZeroYMMHi = fSseInstr; … … 14332 14345 if (BS3_REGISTER_IS_MEMREF(paTests[iTest].iGprReg)) 14333 14346 { 14334 BS3_ASSERT(paTests[iTest].enmRm >= RM_MEM);14335 14347 Bs3MemSet(&uMemOpExpect, 0xcc, sizeof(uMemOpExpect)); 14336 14348 if (bXcptExpect == X86_XCPT_DB) … … 14342 14354 14343 14355 /* Memory pointer. */ 14344 if ( paTests[iTest].enmRm >= RM_MEM)14356 if (fMemOp) 14345 14357 Bs3ExtCtxSetReg(&SetRegCtx, paTests[iTest].iGprReg, (void *)puMemOp); 14346 14358 … … 14385 14397 Ctx.cr2.u = 0; 14386 14398 14387 if ( paTests[iTest].enmRm >= RM_MEM14399 if ( fMemOp 14388 14400 && Bs3MemCmp(puMemOpAlias, &uMemOpExpect, cbMemOp) != 0) 14389 14401 Bs3TestFailedF("Expected uMemOp %.*Rhxs, got %.*Rhxs", cbMemOp, &uMemOpExpect, cbMemOp, puMemOpAlias);
Note:
See TracChangeset
for help on using the changeset viewer.