Changeset 103557 in vbox for trunk/src/VBox/ValidationKit/bootsectors
- Timestamp:
- Feb 24, 2024 11:05:44 AM (12 months ago)
- Location:
- trunk/src/VBox/ValidationKit/bootsectors
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
r102445 r103557 3697 3697 %endif 3698 3698 3699 ; 3700 ; VPERMILPS 3701 ; 3702 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, XMM3 3703 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, FSxBX 3704 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 000h 3705 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 01Bh 3706 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 0E4h 3707 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 03Dh 3708 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 000h 3709 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 01Bh 3710 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 0E4h 3711 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 03Dh 3712 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, YMM3 3713 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, FSxBX 3714 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 000h 3715 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 01Bh 3716 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 0E4h 3717 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 03Dh 3718 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 000h 3719 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 01Bh 3720 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 0E4h 3721 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 03Dh 3722 %if TMPL_BITS == 64 3723 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, XMM10 3724 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, FSxBX 3725 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, 000h 3726 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, 01Bh 3727 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, 0E4h 3728 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, XMM9, 03Dh 3729 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, FSxBX, 000h 3730 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, FSxBX, 01Bh 3731 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, FSxBX, 0E4h 3732 EMIT_INSTR_PLUS_ICEBP vpermilps, XMM8, FSxBX, 03Dh 3733 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, YMM10 3734 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, FSxBX 3735 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, 000h 3736 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, 01Bh 3737 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, 0E4h 3738 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, YMM9, 03Dh 3739 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, FSxBX, 000h 3740 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, FSxBX, 01Bh 3741 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, FSxBX, 0E4h 3742 EMIT_INSTR_PLUS_ICEBP vpermilps, YMM8, FSxBX, 03Dh 3743 %endif 3744 3699 3745 %endif ; BS3_INSTANTIATING_CMN 3700 3746 -
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
r103268 r103557 9847 9847 } 9848 9848 9849 9850 /* 9851 * VPERMILPS - Permute In-Lane of Quadruples of Single Precision Floating-Point Values 9852 * - ('Single Precision Floating-Point Values' AKA 'uninterpreted strings of 32-bits') 9853 */ 9854 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp); 9855 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp); 9856 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp); 9857 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp); 9858 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp); 9859 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp); 9860 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp); 9861 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp); 9862 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp); 9863 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp); 9864 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp); 9865 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp); 9866 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp); 9867 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp); 9868 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp); 9869 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp); 9870 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp); 9871 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp); 9872 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp); 9873 BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp); 9874 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_XMM10_icebp_c64; 9875 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_FSxBX_icebp_c64; 9876 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_000h_icebp_c64; 9877 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_01Bh_icebp_c64; 9878 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_0E4h_icebp_c64; 9879 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_XMM9_03Dh_icebp_c64; 9880 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_FSxBX_000h_icebp_c64; 9881 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_FSxBX_01Bh_icebp_c64; 9882 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_FSxBX_0E4h_icebp_c64; 9883 extern FNBS3FAR bs3CpuInstr3_vpermilps_XMM8_FSxBX_03Dh_icebp_c64; 9884 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_YMM10_icebp_c64; 9885 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_FSxBX_icebp_c64; 9886 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_000h_icebp_c64; 9887 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_01Bh_icebp_c64; 9888 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_0E4h_icebp_c64; 9889 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_YMM9_03Dh_icebp_c64; 9890 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_FSxBX_000h_icebp_c64; 9891 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_FSxBX_01Bh_icebp_c64; 9892 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_FSxBX_0E4h_icebp_c64; 9893 extern FNBS3FAR bs3CpuInstr3_vpermilps_YMM8_FSxBX_03Dh_icebp_c64; 9894 9895 BS3_DECL_FAR(uint8_t) bs3CpuInstr3_vpermilps(uint8_t bMode) 9896 { 9897 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues00[] = 9898 { 9899 { /*src2*/ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 9900 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9901 /* => */ RTUINT256_INIT_C(0xa5a6a7a8a5a6a7a8, 0xa5a6a7a8a5a6a7a8, 0x8586878885868788, 0x8586878885868788) }, /* lo => all 4 slots */ 9902 }; 9903 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues1B[] = 9904 { 9905 { /*src2*/ RTUINT256_INIT_C(0x0000000000000001, 0x0000000200000003, 0x0000000000000001, 0x0000000200000003), 9906 /*src1*/ RTUINT256_INIT_C(0xa5a6a7a8a1a2a3a4, 0xb5b6b7b8b1b2b3b4, 0x8586878881828384, 0x9596979891929394), 9907 /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788) }, /* reverse 4 slots */ 9908 }; 9909 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesE4[] = 9910 { 9911 { /*src2*/ RTUINT256_INIT_C(0x0000000300000002, 0x0000000100000000, 0x0000000300000002, 0x0000000100000000), 9912 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9913 /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788) }, /* straight copy */ 9914 }; 9915 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValues3D[] = 9916 { 9917 { /*src2*/ RTUINT256_INIT_C(0x0000000000000003, 0x0000000300000001, 0x0000000000000003, 0x0000000300000001), 9918 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9919 /* => */ RTUINT256_INIT_C(0xa5a6a7a8b1b2b3b4, 0xb1b2b3b4a1a2a3a4, 0x8586878891929394, 0x9192939481828384) }, /* 'weird' order w/dup */ 9920 }; 9921 static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesAll[] = 9922 { 9923 { /*src2*/ RTUINT256_INIT_C(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000), 9924 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9925 /* => */ RTUINT256_INIT_C(0xa5a6a7a8a5a6a7a8, 0xa5a6a7a8a5a6a7a8, 0x8586878885868788, 0x8586878885868788) }, /* all 4 of the */ 9926 { /*src2*/ RTUINT256_INIT_C(0x0000000000000001, 0x0000000200000003, 0x0000000000000001, 0x0000000200000003), 9927 /*src1*/ RTUINT256_INIT_C(0xa5a6a7a8a1a2a3a4, 0xb5b6b7b8b1b2b3b4, 0x8586878881828384, 0x9596979891929394), 9928 /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788) }, /* above for testing */ 9929 { /*src2*/ RTUINT256_INIT_C(0x0000000300000002, 0x0000000100000000, 0x0000000300000002, 0x0000000100000000), 9930 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9931 /* => */ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788) }, /* non-imm8 opcodes, */ 9932 { /*src2*/ RTUINT256_INIT_C(0x0000000000000003, 0x0000000300000001, 0x0000000000000003, 0x0000000300000001), 9933 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), 9934 /* => */ RTUINT256_INIT_C(0xa5a6a7a8b1b2b3b4, 0xb1b2b3b4a1a2a3a4, 0x8586878891929394, 0x9192939481828384) }, 9935 { /*src2*/ RTUINT256_INIT_C(0x0000000200000003, 0x0000000100000002, 0x0000000000000003, 0x0000000300000001), /* plus: permute lo & */ 9936 /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788), /* hi 128 bits of ymm */ 9937 /* => */ RTUINT256_INIT_C(0xb5b6b7b8b1b2b3b4, 0xa1a2a3a4b5b6b7b8, 0x8586878891929394, 0x9192939481828384) }, /* reg differently. */ 9938 }; 9939 9940 static BS3CPUINSTR3_TEST1_T const s_aTests16[] = 9941 { 9942 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9943 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9944 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9945 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9946 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9947 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9948 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9949 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9950 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9951 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9952 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9953 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9954 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9955 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9956 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9957 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c16, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9958 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9959 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9960 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9961 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9962 }; 9963 static BS3CPUINSTR3_TEST1_T const s_aTests32[] = 9964 { 9965 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9966 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9967 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9968 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9969 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9970 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9971 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9972 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9973 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9974 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9975 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9976 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9977 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9978 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9979 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9980 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c32, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9981 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9982 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9983 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9984 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9985 }; 9986 static BS3CPUINSTR3_TEST1_T const s_aTests64[] = 9987 { 9988 { bs3CpuInstr3_vpermilps_XMM1_XMM2_XMM3_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9989 { bs3CpuInstr3_vpermilps_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9990 { bs3CpuInstr3_vpermilps_XMM1_XMM2_000h_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9991 { bs3CpuInstr3_vpermilps_XMM1_XMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9992 { bs3CpuInstr3_vpermilps_XMM1_XMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9993 { bs3CpuInstr3_vpermilps_XMM1_XMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9994 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 9995 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 9996 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 9997 { bs3CpuInstr3_vpermilps_XMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 9998 { bs3CpuInstr3_vpermilps_YMM1_YMM2_YMM3_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 3, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 9999 { bs3CpuInstr3_vpermilps_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 2, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 10000 { bs3CpuInstr3_vpermilps_YMM1_YMM2_000h_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10001 { bs3CpuInstr3_vpermilps_YMM1_YMM2_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10002 { bs3CpuInstr3_vpermilps_YMM1_YMM2_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10003 { bs3CpuInstr3_vpermilps_YMM1_YMM2_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, 1, 2, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10004 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10005 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10006 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10007 { bs3CpuInstr3_vpermilps_YMM1_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 1, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10008 { bs3CpuInstr3_vpermilps_XMM8_XMM9_XMM10_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 10, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 10009 { bs3CpuInstr3_vpermilps_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 9, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 10010 { bs3CpuInstr3_vpermilps_XMM8_XMM9_000h_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10011 { bs3CpuInstr3_vpermilps_XMM8_XMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10012 { bs3CpuInstr3_vpermilps_XMM8_XMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10013 { bs3CpuInstr3_vpermilps_XMM8_XMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_128, 8, 9, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10014 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10015 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10016 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10017 { bs3CpuInstr3_vpermilps_XMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128, 8, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10018 { bs3CpuInstr3_vpermilps_YMM8_YMM9_YMM10_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 10, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 10019 { bs3CpuInstr3_vpermilps_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 8, 9, 255, RT_ELEMENTS(s_aValuesAll), s_aValuesAll }, 10020 { bs3CpuInstr3_vpermilps_YMM8_YMM9_000h_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10021 { bs3CpuInstr3_vpermilps_YMM8_YMM9_01Bh_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10022 { bs3CpuInstr3_vpermilps_YMM8_YMM9_0E4h_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10023 { bs3CpuInstr3_vpermilps_YMM8_YMM9_03Dh_icebp_c64, 255, RM_REG, T_AVX_256, 8, 9, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10024 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_000h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 8, 255, 0, RT_ELEMENTS(s_aValues00), s_aValues00 }, 10025 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_01Bh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 8, 255, 0, RT_ELEMENTS(s_aValues1B), s_aValues1B }, 10026 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_0E4h_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 8, 255, 0, RT_ELEMENTS(s_aValuesE4), s_aValuesE4 }, 10027 { bs3CpuInstr3_vpermilps_YMM8_FSxBX_03Dh_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_256, 8, 255, 0, RT_ELEMENTS(s_aValues3D), s_aValues3D }, 10028 }; 10029 static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64); 10030 unsigned const iTest = BS3CPUINSTR3_TEST_MODES_INDEX(bMode); 10031 return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests, 10032 g_aXcptConfig6, RT_ELEMENTS(g_aXcptConfig6)); 10033 } 9849 10034 9850 10035 … … 14855 15040 { "vperm2i128/vperm2f128", bs3CpuInstr3_vperm2i128_vperm2f128, 0 }, 14856 15041 #endif 15042 #if defined (ALL_TESTS) 15043 { "vpermilps", bs3CpuInstr3_vpermilps, 0 }, 15044 #endif 14857 15045 }; 14858 15046 Bs3TestInit("bs3-cpu-instr-3");
Note:
See TracChangeset
for help on using the changeset viewer.