Index: /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac
===================================================================
--- /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac	(revision 96109)
+++ /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac	(revision 96110)
@@ -2205,4 +2205,75 @@
  %endif
 
+;
+; [V]PUNPCKLPS
+;
+EMIT_INSTR_PLUS_ICEBP   unpcklps,  XMM1, XMM2
+EMIT_INSTR_PLUS_ICEBP   unpcklps,  XMM1, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, XMM1, XMM2, XMM3
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, XMM1, XMM2, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, YMM1, YMM2, YMM3
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, YMM1, YMM2, FSxBX
+ %if TMPL_BITS == 64
+EMIT_INSTR_PLUS_ICEBP   unpcklps,  XMM8, XMM9
+EMIT_INSTR_PLUS_ICEBP   unpcklps,  XMM8, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, XMM8, XMM9, XMM10
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, XMM8, XMM9, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, YMM8, YMM9, YMM10
+EMIT_INSTR_PLUS_ICEBP   vunpcklps, YMM8, YMM9, FSxBX
+ %endif
+
+;
+; [V]PUNPCKLPD
+;
+EMIT_INSTR_PLUS_ICEBP   unpcklpd,  XMM1, XMM2
+EMIT_INSTR_PLUS_ICEBP   unpcklpd,  XMM1, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, XMM1, XMM2, XMM3
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, XMM1, XMM2, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, YMM1, YMM2, YMM3
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, YMM1, YMM2, FSxBX
+ %if TMPL_BITS == 64
+EMIT_INSTR_PLUS_ICEBP   unpcklpd,  XMM8, XMM9
+EMIT_INSTR_PLUS_ICEBP   unpcklpd,  XMM8, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, XMM8, XMM9, XMM10
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, XMM8, XMM9, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, YMM8, YMM9, YMM10
+EMIT_INSTR_PLUS_ICEBP   vunpcklpd, YMM8, YMM9, FSxBX
+ %endif
+
+;
+; [V]PUNPCKHPS
+;
+EMIT_INSTR_PLUS_ICEBP   unpckhps,  XMM1, XMM2
+EMIT_INSTR_PLUS_ICEBP   unpckhps,  XMM1, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, XMM1, XMM2, XMM3
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, XMM1, XMM2, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, YMM1, YMM2, YMM3
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, YMM1, YMM2, FSxBX
+ %if TMPL_BITS == 64
+EMIT_INSTR_PLUS_ICEBP   unpckhps,  XMM8, XMM9
+EMIT_INSTR_PLUS_ICEBP   unpckhps,  XMM8, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, XMM8, XMM9, XMM10
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, XMM8, XMM9, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, YMM8, YMM9, YMM10
+EMIT_INSTR_PLUS_ICEBP   vunpckhps, YMM8, YMM9, FSxBX
+ %endif
+
+;
+; [V]PUNPCKHPD
+;
+EMIT_INSTR_PLUS_ICEBP   unpckhpd,  XMM1, XMM2
+EMIT_INSTR_PLUS_ICEBP   unpckhpd,  XMM1, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, XMM1, XMM2, XMM3
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, XMM1, XMM2, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, YMM1, YMM2, YMM3
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, YMM1, YMM2, FSxBX
+ %if TMPL_BITS == 64
+EMIT_INSTR_PLUS_ICEBP   unpckhpd,  XMM8, XMM9
+EMIT_INSTR_PLUS_ICEBP   unpckhpd,  XMM8, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, XMM8, XMM9, XMM10
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, XMM8, XMM9, FSxBX
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, YMM8, YMM9, YMM10
+EMIT_INSTR_PLUS_ICEBP   vunpckhpd, YMM8, YMM9, FSxBX
+ %endif
 
 %endif ; BS3_INSTANTIATING_CMN
Index: /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32
===================================================================
--- /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32	(revision 96109)
+++ /trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3.c32	(revision 96110)
@@ -6193,4 +6193,252 @@
         {  bs3CpuInstr3_vpmuludq_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValues),  s_aValues },
         {  bs3CpuInstr3_vpmuludq_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValues),  s_aValues },
+    };
+    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
+    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
+    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
+                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
+}
+
+
+/*
+ * [V]PUNPCKLPS  - Unpack and interleave low packed single precision FP values.
+ * [V]PUNPCKLPD  - Unpack and interleave low packed double precision FP values.
+ */
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpcklps_XMM1_XMM2_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpcklps_XMM1_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_unpcklps_XMM8_XMM9_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_unpcklps_XMM8_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklps_XMM1_XMM2_XMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklps_XMM1_XMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpcklps_XMM8_XMM9_XMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpcklps_XMM8_XMM9_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklps_YMM1_YMM2_YMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklps_YMM1_YMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpcklps_YMM8_YMM9_YMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpcklps_YMM8_YMM9_FSxBX_icebp_c64;
+
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpcklpd_XMM1_XMM2_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpcklpd_XMM1_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_unpcklpd_XMM8_XMM9_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_unpcklpd_XMM8_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklpd_XMM1_XMM2_XMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklpd_XMM1_XMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpcklpd_XMM8_XMM9_XMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpcklpd_XMM8_XMM9_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklpd_YMM1_YMM2_YMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpcklpd_YMM1_YMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpcklpd_YMM8_YMM9_YMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpcklpd_YMM8_YMM9_FSxBX_icebp_c64;
+
+BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpcklps_punpcklpd(uint8_t bMode)
+{
+    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesS[] =
+    {
+        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
+        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
+            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
+            /* => */ RTUINT256_INIT_C(0xe1e2e3e4a1a2a3a4, 0xe5e6e7e8a5a6a7a8, 0xc1c2c3c481828384, 0xc5c6c7c885868788) },
+        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
+            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
+            /* => */ RTUINT256_INIT_C(0x3ef417c8f95c8eec, 0x666b3fe640725633, 0x9c5ce07343d3cda0, 0x930996bb238499fd) },
+    };
+    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesD[] =
+    {
+        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
+        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
+            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
+            /* => */ RTUINT256_INIT_C(0xe1e2e3e4e5e6e7e8, 0xa1a2a3a4a5a6a7a8, 0xc1c2c3c4c5c6c7c8, 0x8182838485868788) },
+        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
+            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
+            /* => */ RTUINT256_INIT_C(0x3ef417c8666b3fe6, 0xf95c8eec40725633, 0x9c5ce073930996bb, 0x43d3cda0238499fd) },
+    };
+
+    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
+    {
+        {  bs3CpuInstr3_unpcklps_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpcklps_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpcklpd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpcklpd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+    };
+    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
+    {
+        {  bs3CpuInstr3_unpcklps_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpcklps_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpcklpd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpcklpd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+    };
+    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
+    {
+        {  bs3CpuInstr3_unpcklps_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpcklps_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpcklps_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE,       8, 8,   9, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpcklps_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       8, 8, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpcklps_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpcklpd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpcklpd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpcklpd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE,       8, 8,   9, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpcklpd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       8, 8, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpcklpd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+    };
+    static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
+    unsigned const                         iTest       = BS3CPUINSTR3_TEST_MODES_INDEX(bMode);
+    return bs3CpuInstr3_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
+                                        g_aXcptConfig4, RT_ELEMENTS(g_aXcptConfig4));
+}
+
+
+/*
+ * [V]PUNPCKHPS  - Unpack and interleave low packed single precision FP values.
+ * [V]PUNPCKHPD  - Unpack and interleave low packed double precision FP values.
+ */
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpckhps_XMM1_XMM2_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpckhps_XMM1_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_unpckhps_XMM8_XMM9_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_unpckhps_XMM8_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhps_XMM1_XMM2_XMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhps_XMM1_XMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpckhps_XMM8_XMM9_XMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpckhps_XMM8_XMM9_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhps_YMM1_YMM2_YMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhps_YMM1_YMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpckhps_YMM8_YMM9_YMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpckhps_YMM8_YMM9_FSxBX_icebp_c64;
+
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpckhpd_XMM1_XMM2_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_unpckhpd_XMM1_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_unpckhpd_XMM8_XMM9_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_unpckhpd_XMM8_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhpd_XMM1_XMM2_XMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhpd_XMM1_XMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpckhpd_XMM8_XMM9_XMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpckhpd_XMM8_XMM9_FSxBX_icebp_c64;
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhpd_YMM1_YMM2_YMM3_icebp);
+BS3_FNBS3FAR_PROTOTYPES_CMN(bs3CpuInstr3_vunpckhpd_YMM1_YMM2_FSxBX_icebp);
+extern FNBS3FAR             bs3CpuInstr3_vunpckhpd_YMM8_YMM9_YMM10_icebp_c64;
+extern FNBS3FAR             bs3CpuInstr3_vunpckhpd_YMM8_YMM9_FSxBX_icebp_c64;
+
+BS3_DECL_FAR(uint8_t) bs3CpuInstr3_v_punpckhps_punpckhpd(uint8_t bMode)
+{
+    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesS[] =
+    {
+        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
+        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
+            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
+            /* => */ RTUINT256_INIT_C(0xf1f2f3f4b1b2b3b4, 0xf5f6f7f8b5b6b7b8, 0xd1d2d3d491929394, 0xd5d6d7d895969798) },
+        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
+            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
+            /* => */ RTUINT256_INIT_C(0x4d09f02a1eddddac, 0x6cdc73d509633294, 0xb4212fa88800e95b, 0x564c9ba2bf9962c3) },
+    };
+    static BS3CPUINSTR3_TEST1_VALUES_T const s_aValuesD[] =
+    {
+        {   /*src2*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /*src1*/ RTUINT256_INIT_C(0, 0, 0, 0),
+            /* => */ RTUINT256_INIT_C(0, 0, 0, 0) },
+        {   /*src2*/ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xe1e2e3e4e5e6e7e8, 0xd1d2d3d4d5d6d7d8, 0xc1c2c3c4c5c6c7c8),
+            /*src1*/ RTUINT256_INIT_C(0xb1b2b3b4b5b6b7b8, 0xa1a2a3a4a5a6a7a8, 0x9192939495969798, 0x8182838485868788),
+            /* => */ RTUINT256_INIT_C(0xf1f2f3f4f5f6f7f8, 0xb1b2b3b4b5b6b7b8, 0xd1d2d3d4d5d6d7d8, 0x9192939495969798) },
+        {   /*src2*/ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x3ef417c8666b3fe6, 0xb4212fa8564c9ba2, 0x9c5ce073930996bb),
+            /*src1*/ RTUINT256_INIT_C(0x1eddddac09633294, 0xf95c8eec40725633, 0x8800e95bbf9962c3, 0x43d3cda0238499fd),
+            /* => */ RTUINT256_INIT_C(0x4d09f02a6cdc73d5, 0x1eddddac09633294, 0xb4212fa8564c9ba2, 0x8800e95bbf9962c3) },
+    };
+
+    static BS3CPUINSTR3_TEST1_T const s_aTests16[] =
+    {
+        {  bs3CpuInstr3_unpckhps_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpckhps_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpckhpd_XMM1_XMM2_icebp_c16,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpckhpd_XMM1_FSxBX_icebp_c16,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_XMM3_icebp_c16,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_YMM3_icebp_c16,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_FSxBX_icebp_c16, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+    };
+    static BS3CPUINSTR3_TEST1_T const s_aTests32[] =
+    {
+        {  bs3CpuInstr3_unpckhps_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpckhps_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpckhpd_XMM1_XMM2_icebp_c32,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpckhpd_XMM1_FSxBX_icebp_c32,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_XMM3_icebp_c32,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_YMM3_icebp_c32,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_FSxBX_icebp_c32, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+    };
+    static BS3CPUINSTR3_TEST1_T const s_aTests64[] =
+    {
+        {  bs3CpuInstr3_unpckhps_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpckhps_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpckhps_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE,       8, 8,   9, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_unpckhps_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       8, 8, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+        {  bs3CpuInstr3_vunpckhps_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesS),  s_aValuesS },
+
+        {  bs3CpuInstr3_unpckhpd_XMM1_XMM2_icebp_c64,        255,         RM_REG, T_SSE,       1, 1,   2, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpckhpd_XMM1_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       1, 1, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpckhpd_XMM8_XMM9_icebp_c64,        255,         RM_REG, T_SSE,       8, 8,   9, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_unpckhpd_XMM8_FSxBX_icebp_c64,       255,         RM_MEM, T_SSE,       8, 8, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_XMM3_icebp_c64,  255,         RM_REG, T_AVX_128,   1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM1_XMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM8_XMM9_XMM10_icebp_c64, 255,         RM_REG, T_AVX_128,   8, 9,  10, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_XMM8_XMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX_128,   8, 9, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_YMM3_icebp_c64,  255,         RM_REG, T_AVX2_256,  1, 2,   3, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM1_YMM2_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  1, 2, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM8_YMM9_YMM10_icebp_c64, 255,         RM_REG, T_AVX2_256,  8, 9,  10, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
+        {  bs3CpuInstr3_vunpckhpd_YMM8_YMM9_FSxBX_icebp_c64, X86_XCPT_DB, RM_MEM, T_AVX2_256,  8, 9, 255, RT_ELEMENTS(s_aValuesD),  s_aValuesD },
     };
     static BS3CPUINSTR3_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR3_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
@@ -8808,5 +9056,5 @@
     {
 #ifndef DEBUG_bird
-# define ALL_TESTS
+//# define ALL_TESTS
 #endif
 #if defined(ALL_TESTS)
@@ -8897,9 +9145,11 @@
         { "[v]pmaddubsw",                                   bs3CpuInstr3_v_pmaddubsw, 0 },
 #endif
-#if defined(ALL_TESTS)
-        { "[v]pmulhrsw",                                    bs3CpuInstr3_v_pmulhrsw, 0 },
-        { "[v]psadbw",                                      bs3CpuInstr3_v_psadbw,   0 },
-        { "[v]pmuldq",                                      bs3CpuInstr3_v_pmuldq,   0 },
-        { "[v]pmuludq",                                     bs3CpuInstr3_v_pmuludq,  0 },
+#if 1 //defined(ALL_TESTS)
+        //{ "[v]pmulhrsw",                                    bs3CpuInstr3_v_pmulhrsw, 0 },
+        //{ "[v]psadbw",                                      bs3CpuInstr3_v_psadbw,   0 },
+        //{ "[v]pmuldq",                                      bs3CpuInstr3_v_pmuldq,   0 },
+        //{ "[v]pmuludq",                                     bs3CpuInstr3_v_pmuludq,  0 },
+        { "[v]punpcklps/[v]punpcklpd",                      bs3CpuInstr3_v_punpcklps_punpcklpd, 0 },
+        { "[v]punpckhps/[v]punpckhpd",                      bs3CpuInstr3_v_punpckhps_punpckhpd, 0 },
 #endif
     };
