Index: /trunk/src/VBox/VMM/testcase/Makefile.kmk
===================================================================
--- /trunk/src/VBox/VMM/testcase/Makefile.kmk	(revision 103074)
+++ /trunk/src/VBox/VMM/testcase/Makefile.kmk	(revision 103075)
@@ -272,16 +272,16 @@
 	tstIEMAImplDataInt-and_u64_locked.bin.gz \
 	tstIEMAImplDataInt-arpl.bin.gz \
-	tstIEMAImplDataInt-bsf_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsf_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-bsf_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsf_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-bsf_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsf_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-bsr_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsr_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-bsr_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsr_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-bsr_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-bsr_u64_intel-Intel.bin.gz \
+	tstIEMAImplDataInt-bsf_u16_amd.bin.gz \
+	tstIEMAImplDataInt-bsf_u16_intel.bin.gz \
+	tstIEMAImplDataInt-bsf_u32_amd.bin.gz \
+	tstIEMAImplDataInt-bsf_u32_intel.bin.gz \
+	tstIEMAImplDataInt-bsf_u64_amd.bin.gz \
+	tstIEMAImplDataInt-bsf_u64_intel.bin.gz \
+	tstIEMAImplDataInt-bsr_u16_amd.bin.gz \
+	tstIEMAImplDataInt-bsr_u16_intel.bin.gz \
+	tstIEMAImplDataInt-bsr_u32_amd.bin.gz \
+	tstIEMAImplDataInt-bsr_u32_intel.bin.gz \
+	tstIEMAImplDataInt-bsr_u64_amd.bin.gz \
+	tstIEMAImplDataInt-bsr_u64_intel.bin.gz \
 	tstIEMAImplDataInt-btc_u16.bin.gz \
 	tstIEMAImplDataInt-btc_u16_locked.bin.gz \
@@ -317,34 +317,34 @@
 	tstIEMAImplDataInt-dec_u64.bin.gz \
 	tstIEMAImplDataInt-dec_u64_locked.bin.gz \
-	tstIEMAImplDataInt-div_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-div_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-div_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-div_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-div_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-div_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-div_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-div_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-idiv_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-idiv_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-idiv_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-idiv_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-idiv_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-idiv_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-idiv_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-idiv_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_two_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_two_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_two_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_two_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_two_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_two_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-imul_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-imul_u64_intel-Intel.bin.gz \
+	tstIEMAImplDataInt-div_u8_amd.bin.gz \
+	tstIEMAImplDataInt-div_u8_intel.bin.gz \
+	tstIEMAImplDataInt-div_u16_amd.bin.gz \
+	tstIEMAImplDataInt-div_u16_intel.bin.gz \
+	tstIEMAImplDataInt-div_u32_amd.bin.gz \
+	tstIEMAImplDataInt-div_u32_intel.bin.gz \
+	tstIEMAImplDataInt-div_u64_amd.bin.gz \
+	tstIEMAImplDataInt-div_u64_intel.bin.gz \
+	tstIEMAImplDataInt-idiv_u8_amd.bin.gz \
+	tstIEMAImplDataInt-idiv_u8_intel.bin.gz \
+	tstIEMAImplDataInt-idiv_u16_amd.bin.gz \
+	tstIEMAImplDataInt-idiv_u16_intel.bin.gz \
+	tstIEMAImplDataInt-idiv_u32_amd.bin.gz \
+	tstIEMAImplDataInt-idiv_u32_intel.bin.gz \
+	tstIEMAImplDataInt-idiv_u64_amd.bin.gz \
+	tstIEMAImplDataInt-idiv_u64_intel.bin.gz \
+	tstIEMAImplDataInt-imul_two_u16_amd.bin.gz \
+	tstIEMAImplDataInt-imul_two_u16_intel.bin.gz \
+	tstIEMAImplDataInt-imul_two_u32_amd.bin.gz \
+	tstIEMAImplDataInt-imul_two_u32_intel.bin.gz \
+	tstIEMAImplDataInt-imul_two_u64_amd.bin.gz \
+	tstIEMAImplDataInt-imul_two_u64_intel.bin.gz \
+	tstIEMAImplDataInt-imul_u8_amd.bin.gz \
+	tstIEMAImplDataInt-imul_u8_intel.bin.gz \
+	tstIEMAImplDataInt-imul_u16_amd.bin.gz \
+	tstIEMAImplDataInt-imul_u16_intel.bin.gz \
+	tstIEMAImplDataInt-imul_u32_amd.bin.gz \
+	tstIEMAImplDataInt-imul_u32_intel.bin.gz \
+	tstIEMAImplDataInt-imul_u64_amd.bin.gz \
+	tstIEMAImplDataInt-imul_u64_intel.bin.gz \
 	tstIEMAImplDataInt-inc_u8.bin.gz \
 	tstIEMAImplDataInt-inc_u8_locked.bin.gz \
@@ -355,12 +355,12 @@
 	tstIEMAImplDataInt-inc_u64.bin.gz \
 	tstIEMAImplDataInt-inc_u64_locked.bin.gz \
-	tstIEMAImplDataInt-mul_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-mul_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-mul_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-mul_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-mul_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-mul_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-mul_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-mul_u64_intel-Intel.bin.gz \
+	tstIEMAImplDataInt-mul_u8_amd.bin.gz \
+	tstIEMAImplDataInt-mul_u8_intel.bin.gz \
+	tstIEMAImplDataInt-mul_u16_amd.bin.gz \
+	tstIEMAImplDataInt-mul_u16_intel.bin.gz \
+	tstIEMAImplDataInt-mul_u32_amd.bin.gz \
+	tstIEMAImplDataInt-mul_u32_intel.bin.gz \
+	tstIEMAImplDataInt-mul_u64_amd.bin.gz \
+	tstIEMAImplDataInt-mul_u64_intel.bin.gz \
 	tstIEMAImplDataInt-neg_u8.bin.gz \
 	tstIEMAImplDataInt-neg_u8_locked.bin.gz \
@@ -387,44 +387,44 @@
 	tstIEMAImplDataInt-or_u64.bin.gz \
 	tstIEMAImplDataInt-or_u64_locked.bin.gz \
-	tstIEMAImplDataInt-rcl_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcl_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcl_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcl_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcl_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcl_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcl_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcl_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcr_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcr_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcr_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcr_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcr_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcr_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rcr_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rcr_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rol_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rol_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rol_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rol_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rol_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rol_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-rol_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-rol_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-ror_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-ror_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-ror_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-ror_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-ror_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-ror_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-ror_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-ror_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-sar_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-sar_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-sar_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-sar_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-sar_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-sar_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-sar_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-sar_u64_intel-Intel.bin.gz \
+	tstIEMAImplDataInt-rcl_u8_amd.bin.gz \
+	tstIEMAImplDataInt-rcl_u8_intel.bin.gz \
+	tstIEMAImplDataInt-rcl_u16_amd.bin.gz \
+	tstIEMAImplDataInt-rcl_u16_intel.bin.gz \
+	tstIEMAImplDataInt-rcl_u32_amd.bin.gz \
+	tstIEMAImplDataInt-rcl_u32_intel.bin.gz \
+	tstIEMAImplDataInt-rcl_u64_amd.bin.gz \
+	tstIEMAImplDataInt-rcl_u64_intel.bin.gz \
+	tstIEMAImplDataInt-rcr_u8_amd.bin.gz \
+	tstIEMAImplDataInt-rcr_u8_intel.bin.gz \
+	tstIEMAImplDataInt-rcr_u16_amd.bin.gz \
+	tstIEMAImplDataInt-rcr_u16_intel.bin.gz \
+	tstIEMAImplDataInt-rcr_u32_amd.bin.gz \
+	tstIEMAImplDataInt-rcr_u32_intel.bin.gz \
+	tstIEMAImplDataInt-rcr_u64_amd.bin.gz \
+	tstIEMAImplDataInt-rcr_u64_intel.bin.gz \
+	tstIEMAImplDataInt-rol_u8_amd.bin.gz \
+	tstIEMAImplDataInt-rol_u8_intel.bin.gz \
+	tstIEMAImplDataInt-rol_u16_amd.bin.gz \
+	tstIEMAImplDataInt-rol_u16_intel.bin.gz \
+	tstIEMAImplDataInt-rol_u32_amd.bin.gz \
+	tstIEMAImplDataInt-rol_u32_intel.bin.gz \
+	tstIEMAImplDataInt-rol_u64_amd.bin.gz \
+	tstIEMAImplDataInt-rol_u64_intel.bin.gz \
+	tstIEMAImplDataInt-ror_u8_amd.bin.gz \
+	tstIEMAImplDataInt-ror_u8_intel.bin.gz \
+	tstIEMAImplDataInt-ror_u16_amd.bin.gz \
+	tstIEMAImplDataInt-ror_u16_intel.bin.gz \
+	tstIEMAImplDataInt-ror_u32_amd.bin.gz \
+	tstIEMAImplDataInt-ror_u32_intel.bin.gz \
+	tstIEMAImplDataInt-ror_u64_amd.bin.gz \
+	tstIEMAImplDataInt-ror_u64_intel.bin.gz \
+	tstIEMAImplDataInt-sar_u8_amd.bin.gz \
+	tstIEMAImplDataInt-sar_u8_intel.bin.gz \
+	tstIEMAImplDataInt-sar_u16_amd.bin.gz \
+	tstIEMAImplDataInt-sar_u16_intel.bin.gz \
+	tstIEMAImplDataInt-sar_u32_amd.bin.gz \
+	tstIEMAImplDataInt-sar_u32_intel.bin.gz \
+	tstIEMAImplDataInt-sar_u64_amd.bin.gz \
+	tstIEMAImplDataInt-sar_u64_intel.bin.gz \
 	tstIEMAImplDataInt-sbb_u8.bin.gz \
 	tstIEMAImplDataInt-sbb_u8_locked.bin.gz \
@@ -435,32 +435,32 @@
 	tstIEMAImplDataInt-sbb_u64.bin.gz \
 	tstIEMAImplDataInt-sbb_u64_locked.bin.gz \
-	tstIEMAImplDataInt-shld_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shld_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shld_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shld_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shld_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shld_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shl_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shl_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shl_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shl_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shl_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shl_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shl_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shl_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shrd_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shrd_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shrd_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shrd_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shrd_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shrd_u64_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shr_u8_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shr_u8_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shr_u16_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shr_u16_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shr_u32_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shr_u32_intel-Intel.bin.gz \
-	tstIEMAImplDataInt-shr_u64_amd-Amd.bin.gz \
-	tstIEMAImplDataInt-shr_u64_intel-Intel.bin.gz \
+	tstIEMAImplDataInt-shld_u16_amd.bin.gz \
+	tstIEMAImplDataInt-shld_u16_intel.bin.gz \
+	tstIEMAImplDataInt-shld_u32_amd.bin.gz \
+	tstIEMAImplDataInt-shld_u32_intel.bin.gz \
+	tstIEMAImplDataInt-shld_u64_amd.bin.gz \
+	tstIEMAImplDataInt-shld_u64_intel.bin.gz \
+	tstIEMAImplDataInt-shl_u8_amd.bin.gz \
+	tstIEMAImplDataInt-shl_u8_intel.bin.gz \
+	tstIEMAImplDataInt-shl_u16_amd.bin.gz \
+	tstIEMAImplDataInt-shl_u16_intel.bin.gz \
+	tstIEMAImplDataInt-shl_u32_amd.bin.gz \
+	tstIEMAImplDataInt-shl_u32_intel.bin.gz \
+	tstIEMAImplDataInt-shl_u64_amd.bin.gz \
+	tstIEMAImplDataInt-shl_u64_intel.bin.gz \
+	tstIEMAImplDataInt-shrd_u16_amd.bin.gz \
+	tstIEMAImplDataInt-shrd_u16_intel.bin.gz \
+	tstIEMAImplDataInt-shrd_u32_amd.bin.gz \
+	tstIEMAImplDataInt-shrd_u32_intel.bin.gz \
+	tstIEMAImplDataInt-shrd_u64_amd.bin.gz \
+	tstIEMAImplDataInt-shrd_u64_intel.bin.gz \
+	tstIEMAImplDataInt-shr_u8_amd.bin.gz \
+	tstIEMAImplDataInt-shr_u8_intel.bin.gz \
+	tstIEMAImplDataInt-shr_u16_amd.bin.gz \
+	tstIEMAImplDataInt-shr_u16_intel.bin.gz \
+	tstIEMAImplDataInt-shr_u32_amd.bin.gz \
+	tstIEMAImplDataInt-shr_u32_intel.bin.gz \
+	tstIEMAImplDataInt-shr_u64_amd.bin.gz \
+	tstIEMAImplDataInt-shr_u64_intel.bin.gz \
 	tstIEMAImplDataInt-sub_u8.bin.gz \
 	tstIEMAImplDataInt-sub_u8_locked.bin.gz \
Index: /trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp
===================================================================
--- /trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp	(revision 103074)
+++ /trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp	(revision 103075)
@@ -35,4 +35,5 @@
 #include <VBox/log.h>
 #include <iprt/assert.h>
+#include <iprt/buildconfig.h>
 #include <iprt/ctype.h>
 #include <iprt/err.h>
@@ -134,4 +135,5 @@
         a_TestType const           *paTests; /**< The decompressed info. */ \
         uint32_t                    cTests;  /**< The decompressed info. */ \
+        IEMTESTENTRYINFO            Info; \
     } a_TypeName
 
@@ -143,4 +145,30 @@
 *   Structures and Typedefs                                                                                                      *
 *********************************************************************************************************************************/
+typedef struct IEMBINARYHEADER
+{
+    char        szMagic[16];
+    uint32_t    cbEntry;
+    uint32_t    uSvnRev;
+    uint32_t    auUnused[6];
+    char        szCpuDesc[80];
+} IEMBINARYHEADER;
+AssertCompileSize(IEMBINARYHEADER, 128);
+
+                            // 01234567890123456
+#define IEMBINARYHEADER_MAGIC "IEMAImpl Bin v1"
+AssertCompile(sizeof(IEMBINARYHEADER_MAGIC) == 16);
+
+
+/** Fixed part of TYPEDEF_SUBTEST_TYPE and friends. */
+typedef struct IEMTESTENTRYINFO
+{
+    void       *pvUncompressed;
+    uint32_t    cbUncompressed;
+    const char *pszCpuDesc;
+    uint32_t    uSvnRev;
+} IEMTESTENTRYINFO;
+
+
+#ifdef TSTIEMAIMPL_WITH_GENERATOR
 typedef struct IEMBINARYOUTPUT
 {
@@ -157,4 +185,5 @@
 } IEMBINARYOUTPUT;
 typedef IEMBINARYOUTPUT *PIEMBINARYOUTPUT;
+#endif /* TSTIEMAIMPL_WITH_GENERATOR */
 
 
@@ -186,4 +215,12 @@
 
 static unsigned     g_cVerbosity = 0;
+
+
+#ifdef TSTIEMAIMPL_WITH_GENERATOR
+/** The SVN revision (for use in the binary headers). */
+static uint32_t     g_uSvnRev = 0;
+/** The CPU description (for use in the binary headers). */
+static char         g_szCpuDesc[80] = "";
+#endif
 
 
@@ -996,5 +1033,17 @@
 # endif  /* unused */
 
-static bool GenerateBinaryOpen(PIEMBINARYOUTPUT pBinOut, const char *pszFilenameFmt, const char *pszName)
+static void GenerateBinaryWrite(PIEMBINARYOUTPUT pBinOut, const void *pvData, size_t cbData)
+{
+    if (RT_SUCCESS_NP(pBinOut->rcWrite))
+    {
+        pBinOut->rcWrite = RTVfsIoStrmWrite(pBinOut->hVfsUncompressed, pvData, cbData, true /*fBlocking*/, NULL);
+        if (RT_SUCCESS(pBinOut->rcWrite))
+            return;
+        RTMsgError("Error writing '%s': %Rrc", pBinOut->szFilename, pBinOut->rcWrite);
+    }
+}
+
+static bool GenerateBinaryOpen(PIEMBINARYOUTPUT pBinOut, const char *pszFilenameFmt, const char *pszName,
+                               IEMTESTENTRYINFO const *pInfoToPreserve, uint32_t cbEntry)
 {
     pBinOut->hVfsFile         = NIL_RTVFSFILE;
@@ -1019,4 +1068,19 @@
                     {
                         pBinOut->rcWrite = VINF_SUCCESS;
+
+                        /* Write the header if applicable. */
+                        if (   !pInfoToPreserve
+                            || (pInfoToPreserve->uSvnRev != 0 && *pInfoToPreserve->pszCpuDesc))
+                        {
+                            IEMBINARYHEADER Hdr;
+                            RT_ZERO(Hdr);
+                            memcpy(Hdr.szMagic, IEMBINARYHEADER_MAGIC, sizeof(IEMBINARYHEADER_MAGIC));
+                            Hdr.cbEntry = cbEntry;
+                            Hdr.uSvnRev = pInfoToPreserve ? pInfoToPreserve->uSvnRev : g_uSvnRev;
+                            RTStrCopy(Hdr.szCpuDesc, sizeof(Hdr.szCpuDesc),
+                                      pInfoToPreserve ? pInfoToPreserve->pszCpuDesc : g_szCpuDesc);
+                            GenerateBinaryWrite(pBinOut, &Hdr, sizeof(Hdr));
+                        }
+
                         return true;
                     }
@@ -1050,18 +1114,6 @@
 
 # define GENERATE_BINARY_OPEN(a_pBinOut, a_papszNameFmts, a_Entry) \
-        GenerateBinaryOpen((a_pBinOut), a_papszNameFmts[(a_Entry).idxCpuEflFlavour], (a_Entry).pszName)
-
-
-static void GenerateBinaryWrite(PIEMBINARYOUTPUT pBinOut, const void *pvData, size_t cbData)
-{
-    if (RT_SUCCESS_NP(pBinOut->rcWrite))
-    {
-        pBinOut->rcWrite = RTVfsIoStrmWrite(pBinOut->hVfsUncompressed, pvData, cbData, true /*fBlocking*/, NULL);
-        if (RT_SUCCESS(pBinOut->rcWrite))
-            return;
-        RTMsgError("Error writing '%s': %Rrc", pBinOut->szFilename, pBinOut->rcWrite);
-    }
-}
-
+        GenerateBinaryOpen((a_pBinOut), a_papszNameFmts[(a_Entry).idxCpuEflFlavour], (a_Entry).pszName, \
+                           NULL /*pInfo*/, sizeof((a_Entry).paTests[0]))
 
 static bool GenerateBinaryClose(PIEMBINARYOUTPUT pBinOut)
@@ -1088,13 +1140,21 @@
 
 /* Helper for DumpAll. */
-# define DUMP_TEST_ENTRY(a_Entry, a_papszNameFmts) \
-    do { \
-        AssertReturn(DECOMPRESS_TESTS(a_Entry), RTEXITCODE_FAILURE); \
-        IEMBINARYOUTPUT BinOut; \
-        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, a_papszNameFmts, (a_Entry)), RTEXITCODE_FAILURE); \
-        GenerateBinaryWrite(&BinOut, (a_Entry).paTests, (a_Entry).cTests); \
-        AssertReturn(GenerateBinaryClose(&BinOut), RTEXITCODE_FAILURE); \
-    } while (0)
-
+# define DUMP_ALL_FN(a_FnBaseName, a_aSubTests) \
+    static RTEXITCODE a_FnBaseName ## DumpAll(const char * const * papszNameFmts) \
+    { \
+        for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
+        { \
+            AssertReturn(DECOMPRESS_TESTS(a_aSubTests[iFn]), RTEXITCODE_FAILURE); \
+            IEMBINARYOUTPUT BinOut; \
+            AssertReturn(GenerateBinaryOpen(&BinOut, papszNameFmts[a_aSubTests[iFn].idxCpuEflFlavour], \
+                                            a_aSubTests[iFn].pszName, &a_aSubTests[iFn].Info, \
+                                            sizeof(a_aSubTests[iFn].paTests[0])), \
+                         RTEXITCODE_FAILURE); \
+            GenerateBinaryWrite(&BinOut, a_aSubTests[iFn].paTests, a_aSubTests[iFn].cTests); \
+            FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
+            AssertReturn(GenerateBinaryClose(&BinOut), RTEXITCODE_FAILURE); \
+        } \
+        return RTEXITCODE_SUCCESS; \
+    }
 #endif /* TSTIEMAIMPL_WITH_GENERATOR */
 
@@ -1136,7 +1196,11 @@
 
 /** Decompresses test data before use as required. */
-static int DecompressBinaryTest(void const *pvCompressed, uint32_t cbCompressed, size_t cbEntry,
-                                void **ppvTests, uint32_t *pcTests)
-{
+static int DecompressBinaryTest(void const *pvCompressed, uint32_t cbCompressed, size_t cbEntry, const char *pszWhat,
+                                void **ppvTests, uint32_t *pcTests, IEMTESTENTRYINFO *pInfo)
+{
+    /* Don't do it again. */
+    if (pInfo->pvUncompressed && *ppvTests)
+        return VINF_SUCCESS;
+
     /* Open a memory stream for the compressed binary data. */
     RTVFSIOSTREAM  hVfsIos      = NIL_RTVFSIOSTREAM;
@@ -1177,34 +1241,65 @@
             if (RT_SUCCESS(rc))
             {
-                if ((off % cbEntry) == 0)
+                /* Validate the header if present and subtract if from 'off'. */
+                IEMBINARYHEADER const *pHdr = NULL;
+                if (   off >= sizeof(IEMTESTENTRYINFO)
+                    && memcmp(pbDecompressed, IEMBINARYHEADER_MAGIC, sizeof(IEMBINARYHEADER_MAGIC)) == 0)
                 {
+                    pHdr = (IEMBINARYHEADER const *)pbDecompressed;
+                    if (pHdr->cbEntry != cbEntry)
+                    {
+                        RTTestIFailed("Test entry size differs for '%s': %#x (header r%u), expected %#zx (uncompressed size %#zx)",
+                                      pszWhat, pHdr->cbEntry, pHdr->uSvnRev, cbEntry, off);
+                        rc = VERR_IO_BAD_UNIT;
+                    }
+                    off -= sizeof(*pHdr);
+                }
+
+                /* Validate the decompressed size wrt entry size. */
+                if ((off % cbEntry) != 0 && RT_SUCCESS(rc))
+                {
+                    RTTestIFailed("Uneven decompressed data size for '%s': %#zx vs entry size %#zx -> %#zx",
+                                  pszWhat, off, cbEntry, off % cbEntry);
+                    rc = VERR_IO_BAD_LENGTH;
+                }
+
+                if (RT_SUCCESS(rc))
+                {
+                    /*
+                     * We're good.
+                     */
+                    /* Reallocate the block if it's way to big. */
                     if (cbDecompressedAlloc - off > _512K)
                     {
                         void * const pvNew = RTMemRealloc(pbDecompressed, off);
                         if (pvNew)
+                        {
                             pbDecompressed = (uint8_t *)pvNew;
+                            if (pHdr)
+                                pHdr = (IEMBINARYHEADER const *)pbDecompressed;
+                        }
                     }
-
-                    /* Done! */
-                    *pcTests      = (uint32_t)(off / cbEntry);
-                    *ppvTests     = pbDecompressed;
-                    RTMEM_WILL_LEAK(pbDecompressed);
+                    RTMEM_MAY_LEAK(pbDecompressed);
+
+                    /* Fill in the info and other return values.  */
+                    pInfo->cbUncompressed = (uint32_t)off;
+                    pInfo->pvUncompressed = pbDecompressed;
+                    pInfo->pszCpuDesc     = pHdr ? pHdr->szCpuDesc : NULL;
+                    pInfo->uSvnRev        = pHdr ? pHdr->uSvnRev   : 0;
+                    *pcTests  = (uint32_t)(off / cbEntry);
+                    *ppvTests = pHdr ? (uint8_t *)(pHdr + 1) : pbDecompressed;
 
                     pbDecompressed = NULL;
                     rc = VINF_SUCCESS;
                 }
-                else
-                {
-                    RTTestIFailed("Uneven decompressed data size: %#zx vs entry size %#zx -> %#zx", off, cbEntry, off % cbEntry);
-                    rc = VERR_IO_BAD_LENGTH;
-                }
             }
             else
-                RTTestIFailed("Failed to decompress binary stream: %Rrc (off=%#zx, cbCompressed=%#x)", rc, off, cbCompressed);
+                RTTestIFailed("Failed to decompress binary stream '%s': %Rrc (off=%#zx, cbCompressed=%#x)",
+                              pszWhat, rc, off, cbCompressed);
             RTMemFree(pbDecompressed);
         }
         else
         {
-            RTTestIFailed("Out of memory decompressing test data");
+            RTTestIFailed("Out of memory decompressing test data '%s'", pszWhat);
             rc = VERR_NO_MEMORY;
         }
@@ -1216,15 +1311,29 @@
 
 #define DECOMPRESS_TESTS(a_Entry) \
-    RT_SUCCESS(DecompressBinaryTest((a_Entry).pvCompressedTests, *(a_Entry).pcbCompressedTests, sizeof((a_Entry).paTests[0]), \
-                                    (void **)&(a_Entry).paTests, &(a_Entry).cTests))
-
-
-/** Decompresses test data before use as required. */
+    RT_SUCCESS(DecompressBinaryTest((a_Entry).pvCompressedTests, *(a_Entry).pcbCompressedTests, \
+                                    sizeof((a_Entry).paTests[0]), (a_Entry).pszName, \
+                                    (void **)&(a_Entry).paTests, &(a_Entry).cTests, &(a_Entry).Info))
+
+/** Frees the decompressed test data. */
+static void FreeDecompressedTests(void **ppvTests, uint32_t *pcTests, IEMTESTENTRYINFO *pInfo)
+{
+    RTMemFree(pInfo->pvUncompressed);
+    pInfo->pvUncompressed = NULL;
+    pInfo->cbUncompressed = 0;
+    *ppvTests             = NULL;
+    *pcTests              = 0;
+}
+
+#define FREE_DECOMPRESSED_TESTS(a_Entry) \
+    FreeDecompressedTests((void **)&(a_Entry).paTests, &(a_Entry).cTests, &(a_Entry).Info)
+
+
+/** Check if the test is enabled and decompresses test data. */
 static int SubTestAndCheckIfEnabledAndDecompress(const char *pszName, void const *pvCompressed, uint32_t cbCompressed,
-                                                 size_t cbEntry, void **ppvTests, uint32_t *pcTests)
+                                                 size_t cbEntry, void **ppvTests, uint32_t *pcTests, IEMTESTENTRYINFO *pInfo)
 {
     if (SubTestAndCheckIfEnabled(pszName))
     {
-        int const rc = DecompressBinaryTest(pvCompressed, cbCompressed, cbEntry, ppvTests, pcTests);
+        int const rc = DecompressBinaryTest(pvCompressed, cbCompressed, cbEntry, pszName, ppvTests, pcTests, pInfo);
         if (RT_SUCCESS(rc))
             return true;
@@ -1235,5 +1344,6 @@
 #define SUBTEST_CHECK_IF_ENABLED_AND_DECOMPRESS(a_Entry) \
     SubTestAndCheckIfEnabledAndDecompress((a_Entry).pszName, (a_Entry).pvCompressedTests, *(a_Entry).pcbCompressedTests, \
-                                          sizeof((a_Entry).paTests[0]), (void **)&(a_Entry).paTests, &(a_Entry).cTests)
+                                          sizeof((a_Entry).paTests[0]), \
+                                          (void **)&(a_Entry).paTests, &(a_Entry).cTests, &(a_Entry).Info)
 
 
@@ -1603,11 +1713,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-/* Temp for conversion. */ \
-static RTEXITCODE BinU ## a_cBits ## DumpAll(const char * const * papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aBinU ## a_cBits); iFn++) \
-        DUMP_TEST_ENTRY(g_aBinU ## a_cBits[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(BinU ## a_cBits, g_aBinU ## a_cBits)
 
 #else
@@ -1709,4 +1813,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -1963,4 +2068,5 @@
             BINU ## a_cBits ## _TEST_T const   *paTests; \
             uint32_t                            cTests; \
+            IEMTESTENTRYINFO                    Info; \
         } s_aFuncs[] = \
         { \
@@ -1990,4 +2096,5 @@
                                  EFlagsDiff(fEfl, paTests[iTest].fEflOut)); \
             } \
+           FREE_DECOMPRESSED_TESTS(s_aFuncs[iFn]); \
         } \
     } while(0)
@@ -2016,4 +2123,5 @@
             BINU ## a_cBits ## _TEST_T const       *paTests; \
             uint32_t                                cTests; \
+            IEMTESTENTRYINFO                        Info; \
         } s_aFuncs[] = \
         { \
@@ -2061,4 +2169,5 @@
                                  EFlagsDiff(fEfl, fEflExpect)); \
             } \
+            FREE_DECOMPRESSED_TESTS(s_aFuncs[iFn]); \
         } \
     } while(0)
@@ -2238,10 +2347,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE ShiftDblU ## a_cBits ## DumpAll(const char * const * papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(ShiftDblU ## a_cBits, a_aSubTests)
 
 #else
@@ -2298,4 +2402,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -2363,10 +2468,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE UnaryU ## a_cBits ## DumpAll(const char * const * papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aUnaryU ## a_cBits); iFn++) \
-        DUMP_TEST_ENTRY(g_aUnaryU ## a_cBits[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(UnaryU ## a_cBits, g_aUnaryU ## a_cBits)
 #else
 # define GEN_UNARY(a_cBits, a_Type, a_Fmt, a_TestType, a_SubTestType)
@@ -2418,4 +2518,5 @@
             } \
         } \
+        FREE_DECOMPRESSED_TESTS(g_aUnaryU ## a_cBits[iFn]); \
     } \
 }
@@ -2498,10 +2599,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE ShiftU ## a_cBits ## DumpAll(const char * const * papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-            DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(ShiftU ## a_cBits, a_aSubTests)
 #else
 # define GEN_SHIFT(a_cBits, a_Fmt, a_TestType, a_aSubTests)
@@ -2566,4 +2662,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -2632,4 +2729,5 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
+DUMP_ALL_FN(MulDivU8, g_aMulDivU8)
 static RTEXITCODE MulDivU8Generate(uint32_t cTests, const char * const * papszNameFmts)
 {
@@ -2654,10 +2752,4 @@
         AssertReturn(GenerateBinaryClose(&BinOut), RTEXITCODE_FAILURE);
     }
-    return RTEXITCODE_SUCCESS;
-}
-static RTEXITCODE MulDivU8DumpAll(const char * const * papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aMulDivU8); iFn++)
-        DUMP_TEST_ENTRY(g_aMulDivU8[iFn], papszNameFmts);
     return RTEXITCODE_SUCCESS;
 }
@@ -2705,4 +2797,5 @@
             pfn = g_aMulDivU8[iFn].pfnNative;
         }
+        FREE_DECOMPRESSED_TESTS(g_aMulDivU8[iFn]); \
     }
 }
@@ -2710,4 +2803,5 @@
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
 # define GEN_MULDIV(a_cBits, a_Fmt, a_TestType, a_aSubTests) \
+DUMP_ALL_FN(MulDivU ## a_cBits, a_aSubTests) \
 static RTEXITCODE MulDivU ## a_cBits ## Generate(uint32_t cTests, const char * const * papszNameFmts) \
 { \
@@ -2735,12 +2829,5 @@
     } \
     return RTEXITCODE_SUCCESS; \
-} \
-static RTEXITCODE MulDivU ## a_cBits ## DumpAll(const char * const * papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
-
+}
 #else
 # define GEN_MULDIV(a_cBits, a_Fmt, a_TestType, a_aSubTests)
@@ -2811,4 +2898,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -2939,14 +3027,8 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuLdConstDumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuLdConst); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuLdConst[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuLdConst, g_aFpuLdConst)
 #endif
 
-static void FpuLoadConstTest(void)
+static void FpuLdConstTest(void)
 {
     /*
@@ -2989,4 +3071,6 @@
             pfn = g_aFpuLdConst[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuLdConst[iFn]);
     }
 }
@@ -3025,10 +3109,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuLdR ## a_cBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuLdR ## a_cBits, a_aSubTests)
 #else
 # define GEN_FPU_LOAD(a_cBits, a_rdTypeIn, a_aSubTests, a_TestType)
@@ -3084,4 +3163,6 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -3153,10 +3234,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuLdI ## a_cBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuLdI ## a_cBits, a_aSubTests)
 #else
 # define GEN_FPU_LOAD_INT(a_cBits, a_iTypeIn, a_szFmtIn, a_aSubTests, a_TestType)
@@ -3211,4 +3287,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -3288,10 +3365,5 @@
     return RTEXITCODE_SUCCESS;
 }
-static RTEXITCODE FpuLdD80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuLdD80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuLdD80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuLdD80, g_aFpuLdD80)
 #endif
 
@@ -3334,4 +3406,6 @@
             pfn = g_aFpuLdD80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuLdD80[iFn]);
     }
 }
@@ -3402,10 +3476,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuStR ## a_cBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuStR ## a_cBits, a_aSubTests)
 #else
 # define GEN_FPU_STORE(a_cBits, a_rdType, a_aSubTests, a_TestType)
@@ -3465,4 +3534,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -3662,10 +3732,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuStI ## a_cBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuStI ## a_cBits, a_aSubTests)
 #else
 # define GEN_FPU_STORE_INT(a_cBits, a_iType, a_szFmt, a_aSubTests, a_TestType)
@@ -3713,4 +3778,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -3816,11 +3882,5 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuStD80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuStD80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuStD80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuStD80, g_aFpuStD80)
 #endif
 
@@ -3865,4 +3925,6 @@
             pfn = g_aFpuStD80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuStD80[iFn]);
     }
 }
@@ -4095,11 +4157,5 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuBinaryR80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuBinaryR80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuBinaryR80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuBinaryR80, g_aFpuBinaryR80)
 #endif
 
@@ -4144,4 +4200,6 @@
             pfn = g_aFpuBinaryR80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuBinaryR80[iFn]);
     }
 }
@@ -4227,10 +4285,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuBinary ## a_UpBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuBinary ## a_UpBits, a_aSubTests)
 #else
 # define GEN_FPU_BINARY_SMALL(a_fIntType, a_cBits, a_LoBits, a_UpBits, a_Type2, a_aSubTests, a_TestType)
@@ -4291,4 +4344,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -4372,10 +4426,5 @@
     return RTEXITCODE_SUCCESS; \
 } \
-static RTEXITCODE FpuBinaryFsw ## a_UpBits ## DumpAll(const char * const *papszNameFmts) \
-{ \
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(a_aSubTests); iFn++) \
-        DUMP_TEST_ENTRY(a_aSubTests[iFn], papszNameFmts); \
-    return RTEXITCODE_SUCCESS; \
-}
+DUMP_ALL_FN(FpuBinaryFsw ## a_UpBits, a_aSubTests)
 #else
 # define GEN_FPU_BINARY_FSW(a_fIntType, a_cBits, a_UpBits, a_Type2, a_aSubTests, a_TestType)
@@ -4428,4 +4477,5 @@
             pfn = a_aSubTests[iFn].pfnNative; \
         } \
+        FREE_DECOMPRESSED_TESTS(a_aSubTests[iFn]); \
     } \
 }
@@ -4497,11 +4547,5 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuBinaryEflR80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuBinaryEflR80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuBinaryEflR80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuBinaryEflR80, g_aFpuBinaryEflR80)
 #endif /*TSTIEMAIMPL_WITH_GENERATOR*/
 
@@ -4544,4 +4588,6 @@
             pfn = g_aFpuBinaryEflR80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuBinaryEflR80[iFn]);
     }
 }
@@ -4587,4 +4633,5 @@
 }
 
+DUMP_ALL_FN(FpuUnaryR80, g_aFpuUnaryR80)
 static RTEXITCODE FpuUnaryR80Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
@@ -4701,11 +4748,4 @@
         AssertReturn(GenerateBinaryClose(&BinOut), RTEXITCODE_FAILURE);
     }
-    return RTEXITCODE_SUCCESS;
-}
-
-static RTEXITCODE FpuUnaryR80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuUnaryR80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuUnaryR80[iFn], papszNameFmts);
     return RTEXITCODE_SUCCESS;
 }
@@ -4798,4 +4838,5 @@
         if (cPossibleRndErrs > 0)
             RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "rounding errors: %u out of %u\n", cRndErrs, cPossibleRndErrs);
+        FREE_DECOMPRESSED_TESTS(g_aFpuUnaryR80[iFn]);
     }
 }
@@ -4884,11 +4925,5 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuUnaryFswR80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuUnaryFswR80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuUnaryFswR80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuUnaryFswR80, g_aFpuUnaryFswR80)
 #endif
 
@@ -4931,4 +4966,6 @@
             pfn = g_aFpuUnaryFswR80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuUnaryFswR80[iFn]);
     }
 }
@@ -5057,11 +5094,5 @@
     return RTEXITCODE_SUCCESS;
 }
-
-static RTEXITCODE FpuUnaryTwoR80DumpAll(const char * const *papszNameFmts)
-{
-    for (size_t iFn = 0; iFn < RT_ELEMENTS(g_aFpuUnaryTwoR80); iFn++)
-        DUMP_TEST_ENTRY(g_aFpuUnaryTwoR80[iFn], papszNameFmts);
-    return RTEXITCODE_SUCCESS;
-}
+DUMP_ALL_FN(FpuUnaryTwoR80, g_aFpuUnaryTwoR80)
 #endif
 
@@ -5107,4 +5138,6 @@
             pfn = g_aFpuUnaryTwoR80[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aFpuUnaryTwoR80[iFn]);
     }
 }
@@ -5136,5 +5169,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR32, g_aSseBinaryR32)
+static RTEXITCODE SseBinaryR32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -5155,5 +5189,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -5300,4 +5334,6 @@
             pfn = g_aSseBinaryR32[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR32[iFn]);
     }
 }
@@ -5325,5 +5361,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR64, g_aSseBinaryR32)
+static RTEXITCODE SseBinaryR64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -5344,5 +5381,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR64[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -5478,4 +5515,6 @@
             pfn = g_aSseBinaryR64[iFn].pfnNative;
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR64[iFn]);
     }
 }
@@ -5500,5 +5539,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryU128R32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryU128R32, g_aSseBinaryU128R32)
+static RTEXITCODE SseBinaryU128R32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -5518,5 +5558,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryU128R32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryU128R32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -5659,4 +5699,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryU128R32[iFn]);
     }
 }
@@ -5681,5 +5723,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryU128R64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryU128R64, g_aSseBinaryU128R64)
+static RTEXITCODE SseBinaryU128R64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -5699,5 +5742,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryU128R64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryU128R64[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -5831,4 +5874,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryU128R64[iFn]);
     }
 }
@@ -5847,5 +5892,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryI32R64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryI32R64, g_aSseBinaryI32R64)
+static RTEXITCODE SseBinaryI32R64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -5865,5 +5911,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryI32R64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryI32R64[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -5990,4 +6036,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryI32R64[iFn]);
     }
 }
@@ -6006,5 +6054,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryI64R64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryI64R64, g_aSseBinaryI64R64)
+static RTEXITCODE SseBinaryI64R64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6024,5 +6073,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryI64R64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryI64R64[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -6149,4 +6198,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryI64R64[iFn]);
     }
 }
@@ -6165,5 +6216,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryI32R32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryI32R32, g_aSseBinaryI32R32)
+static RTEXITCODE SseBinaryI32R32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6183,5 +6235,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryI32R32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryI32R32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -6308,4 +6360,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryI32R32[iFn]);
     }
 }
@@ -6324,5 +6378,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryI64R32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryI64R32, g_aSseBinaryI64R32)
+static RTEXITCODE SseBinaryI64R32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6342,5 +6397,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryI64R32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryI64R32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -6467,4 +6522,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryI64R32[iFn]);
     }
 }
@@ -6482,5 +6539,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR64I32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR64I32, g_aSseBinaryR64I32)
+static RTEXITCODE SseBinaryR64I32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6500,5 +6558,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR64I32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR64I32[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -6616,4 +6674,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR64I32[iFn]);
     }
 }
@@ -6631,5 +6691,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR64I64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR64I64, g_aSseBinaryR64I64)
+static RTEXITCODE SseBinaryR64I64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6649,5 +6710,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR64I64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR64I64[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -6765,4 +6826,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR64I64[iFn]);
     }
 }
@@ -6780,5 +6843,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR32I32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR32I32, g_aSseBinaryR32I32)
+static RTEXITCODE SseBinaryR32I32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6798,5 +6862,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR32I32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR32I32[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -6914,4 +6978,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR32I32[iFn]);
     }
 }
@@ -6929,5 +6995,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseBinaryR32I64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseBinaryR32I64, g_aSseBinaryR32I64)
+static RTEXITCODE SseBinaryR32I64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -6947,5 +7014,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseBinaryR32I64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseBinaryR32I64[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -7063,4 +7130,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseBinaryR32I64[iFn]);
     }
 }
@@ -7081,5 +7150,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseCompareEflR32R32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseCompareEflR32R32, g_aSseCompareEflR32R32)
+static RTEXITCODE SseCompareEflR32R32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -7104,5 +7174,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseCompareEflR32R32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareEflR32R32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -7246,4 +7316,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseCompareEflR32R32[iFn]);
     }
 }
@@ -7264,5 +7336,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseCompareEflR64R64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseCompareEflR64R64, g_aSseCompareEflR64R64)
+static RTEXITCODE SseCompareEflR64R64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -7287,5 +7360,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseCompareEflR64R64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareEflR64R64[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -7429,4 +7502,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseCompareEflR64R64[iFn]);
     }
 }
@@ -7448,5 +7523,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseCompareF2XmmR32Imm8Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseCompareF2XmmR32Imm8, g_aSseCompareF2XmmR32Imm8)
+static RTEXITCODE SseCompareF2XmmR32Imm8Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -7471,5 +7547,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseCompareF2XmmR32Imm8[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF2XmmR32Imm8[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -7636,4 +7712,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseCompareF2XmmR32Imm8[iFn]);
     }
 }
@@ -7650,5 +7728,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseCompareF2XmmR64Imm8Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseCompareF2XmmR64Imm8, g_aSseCompareF2XmmR64Imm8)
+static RTEXITCODE SseCompareF2XmmR64Imm8Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -7673,5 +7752,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseCompareF2XmmR64Imm8[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseCompareF2XmmR64Imm8[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -7823,4 +7902,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseCompareF2XmmR64Imm8[iFn]);
     }
 }
@@ -7838,5 +7919,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmI32R32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmI32R32, g_aSseConvertXmmI32R32)
+static RTEXITCODE SseConvertXmmI32R32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -7858,5 +7940,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmI32R32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmI32R32[iFn]), RTEXITCODE_FAILURE);
 
         X86FXSTATE State;
@@ -7989,4 +8071,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmI32R32[iFn]);
     }
 }
@@ -8003,5 +8087,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmR32I32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmR32I32, g_aSseConvertXmmR32I32)
+static RTEXITCODE SseConvertXmmR32I32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8024,5 +8109,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmR32I32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmR32I32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -8165,4 +8250,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmR32I32[iFn]);
     }
 }
@@ -8178,5 +8265,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmI32R64Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmI32R64, g_aSseConvertXmmI32R64)
+static RTEXITCODE SseConvertXmmI32R64Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8198,5 +8286,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmI32R64[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmI32R64[iFn]), RTEXITCODE_FAILURE);
 
         X86FXSTATE State;
@@ -8323,4 +8411,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmI32R64[iFn]);
     }
 }
@@ -8337,5 +8427,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmR64I32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmR64I32, g_aSseConvertXmmR64I32)
+static RTEXITCODE SseConvertXmmR64I32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8358,5 +8449,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmR64I32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmR64I32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -8494,4 +8585,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmR64I32[iFn]);
     }
 }
@@ -8510,5 +8603,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertMmXmmGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertMmXmm, g_aSseConvertMmXmm)
+static RTEXITCODE SseConvertMmXmmGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8529,5 +8623,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertMmXmm[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertMmXmm[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -8662,4 +8756,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertMmXmm[iFn]);
     }
 }
@@ -8677,5 +8773,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmR64MmGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmR64Mm, g_aSseConvertXmmR64Mm)
+static RTEXITCODE SseConvertXmmR64MmGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8693,5 +8790,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmR64Mm[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmR64Mm[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -8804,4 +8901,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmR64Mm[iFn]);
     }
 }
@@ -8819,5 +8918,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertXmmR32MmGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertXmmR32Mm, g_aSseConvertXmmR32Mm)
+static RTEXITCODE SseConvertXmmR32MmGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8835,5 +8935,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertXmmR32Mm[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertXmmR32Mm[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -8946,4 +9046,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertXmmR32Mm[iFn]);
     }
 }
@@ -8962,5 +9064,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseConvertMmI32XmmR32Generate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseConvertMmI32XmmR32, g_aSseConvertMmI32XmmR32)
+static RTEXITCODE SseConvertMmI32XmmR32Generate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -8981,5 +9084,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSseConvertMmI32XmmR32[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSseConvertMmI32XmmR32[iFn]), RTEXITCODE_FAILURE);
 
         uint32_t cNormalInputPairs  = 0;
@@ -9124,4 +9227,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSseConvertMmI32XmmR32[iFn]);
     }
 }
@@ -9139,5 +9244,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseComparePcmpistriGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseComparePcmpistri, g_aSsePcmpistri)
+static RTEXITCODE SseComparePcmpistriGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -9154,5 +9260,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSsePcmpistri[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSsePcmpistri[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -9239,4 +9345,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSsePcmpistri[iFn]);
     }
 }
@@ -9251,5 +9359,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseComparePcmpistrmGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseComparePcmpistrm, g_aSsePcmpistrm)
+static RTEXITCODE SseComparePcmpistrmGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -9266,5 +9375,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSsePcmpistrm[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSsePcmpistrm[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -9353,4 +9462,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSsePcmpistrm[iFn]);
     }
 }
@@ -9365,5 +9476,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseComparePcmpestriGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseComparePcmpestri, g_aSsePcmpestri)
+static RTEXITCODE SseComparePcmpestriGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -9380,5 +9492,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSsePcmpestri[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSsePcmpestri[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -9478,4 +9590,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSsePcmpestri[iFn]);
     }
 }
@@ -9490,5 +9604,6 @@
 
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-static RTEXITCODE SseComparePcmpestrmGenerate(const char *pszDataFileFmt, uint32_t cTests)
+DUMP_ALL_FN(SseComparePcmpestrm, g_aSsePcmpestrm)
+static RTEXITCODE SseComparePcmpestrmGenerate(uint32_t cTests, const char * const *papszNameFmts)
 {
     cTests = RT_MAX(192, cTests); /* there are 144 standard input variations */
@@ -9505,5 +9620,5 @@
 
         IEMBINARYOUTPUT BinOut;
-        AssertReturn(GenerateBinaryOpen(&BinOut, pszDataFileFmt, g_aSsePcmpestrm[iFn].pszName), RTEXITCODE_FAILURE);
+        AssertReturn(GENERATE_BINARY_OPEN(&BinOut, papszNameFmts, g_aSsePcmpestrm[iFn]), RTEXITCODE_FAILURE);
 
         for (uint32_t iTest = 0; iTest < cTests + RT_ELEMENTS(s_aSpecials); iTest += 1)
@@ -9605,4 +9720,6 @@
             }
         }
+
+        FREE_DECOMPRESSED_TESTS(g_aSsePcmpestrm[iFn]);
     }
 }
@@ -9633,14 +9750,15 @@
     enum { kModeNotSet, kModeTest, kModeGenerate, kModeDump }
                         enmMode       = kModeNotSet;
-    bool                fInt          = true;
-    bool                fFpuLdSt      = true;
-    bool                fFpuBinary1   = true;
-    bool                fFpuBinary2   = true;
-    bool                fFpuOther     = true;
+#define CATEGORY_INT            RT_BIT_32(0)
+#define CATEGORY_FPU_LD_ST      RT_BIT_32(1)
+#define CATEGORY_FPU_BINARY_1   RT_BIT_32(2)
+#define CATEGORY_FPU_BINARY_2   RT_BIT_32(3)
+#define CATEGORY_FPU_OTHER      RT_BIT_32(4)
+#define CATEGORY_SSE_FP_BINARY  RT_BIT_32(5)
+#define CATEGORY_SSE_FP_OTHER   RT_BIT_32(6)
+#define CATEGORY_SSE_PCMPXSTRX  RT_BIT_32(7)
+    uint32_t            fCategories   = UINT32_MAX;
     bool                fCpuData      = true;
     bool                fCommonData   = true;
-    bool                fSseFpBinary  = true;
-    bool                fSseFpOther   = true;
-    bool                fSsePcmpxstrx = true;
     uint32_t const      cDefaultTests = 96;
     uint32_t            cTests        = cDefaultTests;
@@ -9704,49 +9822,35 @@
                 fCpuData    = true;
                 fCommonData = true;
-                fInt        = true;
-                fFpuLdSt    = true;
-                fFpuBinary1 = true;
-                fFpuBinary2 = true;
-                fFpuOther   = true;
-                fSseFpBinary = true;
-                fSseFpOther  = true;
-                fSsePcmpxstrx = true;
+                fCategories = UINT32_MAX;
                 break;
             case 'z':
                 fCpuData    = false;
                 fCommonData = false;
-                fInt        = false;
-                fFpuLdSt    = false;
-                fFpuBinary1  = false;
-                fFpuBinary2  = false;
-                fFpuOther   = false;
-                fSseFpBinary = false;
-                fSseFpOther  = false;
-                fSsePcmpxstrx = false;
+                fCategories = 0;
                 break;
 
             case 'F':
-                fFpuLdSt    = true;
+                fCategories |= CATEGORY_FPU_LD_ST;
                 break;
             case 'O':
-                fFpuOther   = true;
+                fCategories |= CATEGORY_FPU_OTHER;
                 break;
             case 'B':
-                fFpuBinary1 = true;
+                fCategories |= CATEGORY_FPU_BINARY_1;
                 break;
             case 'P':
-                fFpuBinary2 = true;
+                fCategories |= CATEGORY_FPU_BINARY_2;
                 break;
             case 'S':
-                fSseFpBinary = true;
+                fCategories |= CATEGORY_SSE_FP_BINARY;
                 break;
             case 'T':
-                fSseFpOther  = true;
+                fCategories |= CATEGORY_SSE_FP_OTHER;
                 break;
             case 'C':
-                fSsePcmpxstrx = true;
+                fCategories |= CATEGORY_SSE_PCMPXSTRX;
                 break;
             case 'i':
-                fInt        = true;
+                fCategories |= CATEGORY_INT;
                 break;
 
@@ -9838,4 +9942,100 @@
     }
 
+    static const struct
+    {
+        uint32_t        fCategory;
+        void          (*pfnTest)(void);
+#ifdef TSTIEMAIMPL_WITH_GENERATOR
+        const char     *pszFilenameFmt;
+        RTEXITCODE    (*pfnGenerate)(uint32_t cTests, const char * const *papszNameFmts);
+        RTEXITCODE    (*pfnDumpAll)(const char * const *papszNameFmts);
+        uint32_t        cMinTests;
+# define GROUP_ENTRY(a_fCategory, a_BaseNm, a_szFilenameFmt, a_cMinTests) \
+            { a_fCategory, a_BaseNm ## Test, a_szFilenameFmt, a_BaseNm ## Generate, a_BaseNm ## DumpAll, a_cMinTests }
+#else
+# define GROUP_ENTRY(a_fCategory, a_BaseNm, a_szFilenameFmt, a_cMinTests) \
+            { a_fCategory, a_BaseNm ## Test }
+#endif
+#define GROUP_ENTRY_MANUAL(a_fCategory, a_BaseNm) \
+            { a_fCategory, a_BaseNm ## Test }
+    } s_aGroups[] =
+    {
+        GROUP_ENTRY(CATEGORY_INT,           BinU8,                  "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           BinU16,                 "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           BinU32,                 "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           BinU64,                 "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           ShiftDbl,               "tstIEMAImplDataInt-%s.bin.gz", 128),
+        GROUP_ENTRY(CATEGORY_INT,           Unary,                  "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           Shift,                  "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_INT,           MulDiv,                 "tstIEMAImplDataInt-%s.bin.gz", 0),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    Xchg),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    Xadd),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    CmpXchg),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    CmpXchg8b),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    CmpXchg16b),
+        GROUP_ENTRY_MANUAL(CATEGORY_INT,    Bswap),
+
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuLdConst,             "tstIEMAImplDataFpuLdSt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuLdInt,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuLdD80,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuLdMem,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 384), /* needs better coverage */
+
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuStInt,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuStD80,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_LD_ST,     FpuStMem,               "tstIEMAImplDataFpuLdSt-%s.bin.gz", 384), /* needs better coverage */
+
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_1,  FpuBinaryR80,           "tstIEMAImplDataFpuBinary1-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_1,  FpuBinaryFswR80,        "tstIEMAImplDataFpuBinary1-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_1,  FpuBinaryEflR80,        "tstIEMAImplDataFpuBinary1-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryR64,           "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryR32,           "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryI32,           "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryI16,           "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryFswR64,        "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryFswR32,        "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryFswI32,        "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_BINARY_2,  FpuBinaryFswI16,        "tstIEMAImplDataFpuBinary2-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_FPU_OTHER,     FpuUnaryR80,            "tstIEMAImplDataFpuOther-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_OTHER,     FpuUnaryFswR80,         "tstIEMAImplDataFpuOther-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_FPU_OTHER,     FpuUnaryTwoR80,         "tstIEMAImplDataFpuOther-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR32,           "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR64,           "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryU128R32,       "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryU128R64,       "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryI32R64,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryI64R64,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryI32R32,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryI64R32,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR64I32,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR64I64,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR32I32,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_BINARY, SseBinaryR32I64,        "tstIEMAImplDataSseBinary-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseCompareEflR32R32,    "tstIEMAImplDataSseCompare-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseCompareEflR64R64,    "tstIEMAImplDataSseCompare-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseCompareF2XmmR32Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseCompareF2XmmR64Imm8, "tstIEMAImplDataSseCompare-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmI32R32,    "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmR32I32,    "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmI32R64,    "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmR64I32,    "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertMmXmm,        "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmR32Mm,     "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertXmmR64Mm,     "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_FP_OTHER,  SseConvertMmI32XmmR32,  "tstIEMAImplDataSseConvert-%s.bin.gz", 0),
+
+        GROUP_ENTRY(CATEGORY_SSE_PCMPXSTRX, SseComparePcmpistri,    "tstIEMAImplDataSsePcmpxstrx-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_PCMPXSTRX, SseComparePcmpistrm,    "tstIEMAImplDataSsePcmpxstrx-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_PCMPXSTRX, SseComparePcmpestri,    "tstIEMAImplDataSsePcmpxstrx-%s.bin.gz", 0),
+        GROUP_ENTRY(CATEGORY_SSE_PCMPXSTRX, SseComparePcmpestrm,    "tstIEMAImplDataSsePcmpxstrx-%s.bin.gz", 0),
+    };
+
     /*
      * Generate data?
@@ -9849,198 +10049,28 @@
         g_cZeroSrcTests = g_cZeroDstTests * 2;
 
-        if (fInt)
-        {
-            const char * const apszNameFmts[] =
+        RTMpGetDescription(NIL_RTCPUID, g_szCpuDesc, sizeof(g_szCpuDesc));
+
+        /* For the revision, use the highest for this file and VBoxRT. */
+        static const char s_szRev[] = "$Revision$";
+        const char *pszRev = s_szRev;
+        while (*pszRev && !RT_C_IS_DIGIT(*pszRev))
+            pszRev++;
+        g_uSvnRev = RTStrToUInt32(pszRev);
+        g_uSvnRev = RT_MAX(g_uSvnRev, RTBldCfgRevision());
+
+        /* Loop thru the groups and call the generate for any that's enabled. */
+        for (size_t i = 0; i < RT_ELEMENTS(s_aGroups); i++)
+            if ((s_aGroups[i].fCategory & fCategories) && s_aGroups[i].pfnGenerate)
             {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataInt-%s.bin.gz"       : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataInt-%s-Intel.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataInt-%s-Amd.bin.gz"   : NULL,
-            };
-            RTEXITCODE rcExit = BinU8Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU16Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU32Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU64Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = ShiftDblGenerate(RT_MAX(cTests, 128), apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = UnaryGenerate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = ShiftGenerate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = MulDivGenerate(cTests, apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuLdSt)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuLdConstGenerate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdIntGenerate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdD80Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStIntGenerate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStD80Generate(cTests, apszNameFmts);
-            uint32_t const cTests2 = RT_MAX(cTests, 384); /* need better coverage for the next ones. */
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdMemGenerate(cTests2, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStMemGenerate(cTests2, apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuBinary1)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuBinaryR80Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR80Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryEflR80Generate(cTests, apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuBinary2)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuBinaryR64Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryR32Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryI32Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryI16Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR64Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR32Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswI32Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswI16Generate(cTests, apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuOther)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuUnaryR80Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuUnaryFswR80Generate(cTests, apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuUnaryTwoR80Generate(cTests, apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fSseFpBinary)
-        {
-            const char * const pszDataFileFmt = fCommonData ? "tstIEMAImplDataSseBinary-%s.bin.gz" : NULL;
-
-            RTEXITCODE rcExit = SseBinaryR32Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryR64Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryU128R32Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryU128R64Generate(pszDataFileFmt, cTests);
-
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryI32R64Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryI64R64Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryI32R32Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryI64R32Generate(pszDataFileFmt, cTests);
-
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryR64I32Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryR64I64Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryR32I32Generate(pszDataFileFmt, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseBinaryR32I64Generate(pszDataFileFmt, cTests);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fSseFpOther)
-        {
-            const char * const pszDataFileFmtCmp  = fCommonData ? "tstIEMAImplDataSseCompare-%s.bin.gz" : NULL;
-            const char * const pszDataFileFmtConv = fCommonData ? "tstIEMAImplDataSseConvert-%s.bin.gz" : NULL;
-
-            RTEXITCODE rcExit = SseCompareEflR32R32Generate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseCompareEflR64R64Generate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseCompareF2XmmR32Imm8Generate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseCompareF2XmmR64Imm8Generate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmI32R32Generate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmR32I32Generate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmI32R64Generate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmR64I32Generate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertMmXmmGenerate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmR32MmGenerate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertXmmR64MmGenerate(pszDataFileFmtConv, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseConvertMmI32XmmR32Generate(pszDataFileFmtConv, cTests);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fSsePcmpxstrx)
-        {
-            const char * const pszDataFileFmtCmp = fCommonData ? "tstIEMAImplDataSsePcmpxstrx-%s.bin.gz" : NULL;
-
-            RTEXITCODE rcExit = SseComparePcmpistriGenerate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseComparePcmpistrmGenerate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseComparePcmpestriGenerate(pszDataFileFmtCmp, cTests);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = SseComparePcmpestrmGenerate(pszDataFileFmtCmp, cTests);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
+                const char * const apszNameFmts[] =
+                {
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? s_aGroups[i].pszFilenameFmt : NULL,
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? s_aGroups[i].pszFilenameFmt : NULL,
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? s_aGroups[i].pszFilenameFmt : NULL,
+                };
+                RTEXITCODE rcExit = s_aGroups[i].pfnGenerate(RT_MAX(cTests, s_aGroups[i].cMinTests), apszNameFmts);
+                if (rcExit != RTEXITCODE_SUCCESS)
+                    return rcExit;
+            }
         return RTEXITCODE_SUCCESS;
 #else
@@ -10050,122 +10080,23 @@
 
     /*
-     * Dump tables.
+     * Dump tables (used for the conversion, mostly useless now).
      */
     if (enmMode == kModeDump)
     {
 #ifdef TSTIEMAIMPL_WITH_GENERATOR
-        if (fInt)
-        {
-            const char * const apszNameFmts[] =
+        /* Loop thru the groups and call the generate for any that's enabled. */
+        for (size_t i = 0; i < RT_ELEMENTS(s_aGroups); i++)
+            if ((s_aGroups[i].fCategory & fCategories) && s_aGroups[i].pfnDumpAll)
             {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataInt-%s.bin.gz"       : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataInt-%s-Intel.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataInt-%s-Amd.bin.gz"   : NULL,
-            };
-            RTEXITCODE rcExit = BinU8DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU16DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU32DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = BinU64DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = ShiftDblDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = UnaryDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = ShiftDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = MulDivDumpAll(apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuLdSt)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuLdSt-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuLdConstDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdIntDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdD80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStIntDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStD80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuLdMemDumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuStMemDumpAll(apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuBinary1)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuBinary1-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuBinaryR80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryEflR80DumpAll(apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuBinary2)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuBinary2-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuBinaryR64DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryR32DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryI32DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryI16DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR64DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswR32DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswI32DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuBinaryFswI16DumpAll(apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
-        if (fFpuOther)
-        {
-            const char * const apszNameFmts[] =
-            {
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-                /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? "tstIEMAImplDataFpuOther-%s.bin.gz" : NULL,
-            };
-            RTEXITCODE rcExit = FpuUnaryR80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuUnaryFswR80DumpAll(apszNameFmts);
-            if (rcExit == RTEXITCODE_SUCCESS)
-                rcExit = FpuUnaryTwoR80DumpAll(apszNameFmts);
-            if (rcExit != RTEXITCODE_SUCCESS)
-                return rcExit;
-        }
-
+                const char * const apszNameFmts[] =
+                {
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_NATIVE] =*/ fCommonData ? s_aGroups[i].pszFilenameFmt : NULL,
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_INTEL]  =*/ fCpuData    ? s_aGroups[i].pszFilenameFmt : NULL,
+                    /*[IEMTARGETCPU_EFL_BEHAVIOR_AMD]    =*/ fCpuData    ? s_aGroups[i].pszFilenameFmt : NULL,
+                };
+                RTEXITCODE rcExit = s_aGroups[i].pfnGenerate(RT_MAX(cTests, s_aGroups[i].cMinTests), apszNameFmts);
+                if (rcExit != RTEXITCODE_SUCCESS)
+                    return rcExit;
+            }
         return RTEXITCODE_SUCCESS;
 #else
@@ -10179,5 +10110,5 @@
      * on both intel and AMD systems first.
      */
-    rc = RTTestCreate("tstIEMAimpl", &g_hTest);
+    rc = RTTestCreate("tstIEMAImpl", &g_hTest);
     AssertRCReturn(rc, RTEXITCODE_FAILURE);
     if (enmMode == kModeTest)
@@ -10203,101 +10134,8 @@
         if (RTTestErrorCount(g_hTest) == 0)
         {
-            if (fInt)
-            {
-                BinU8Test();
-                BinU16Test();
-                BinU32Test();
-                BinU64Test();
-                XchgTest();
-                XaddTest();
-                CmpXchgTest();
-                CmpXchg8bTest();
-                CmpXchg16bTest();
-                ShiftDblTest();
-                UnaryTest();
-                ShiftTest();
-                MulDivTest();
-                BswapTest();
-            }
-
-            if (fFpuLdSt)
-            {
-                FpuLoadConstTest();
-                FpuLdMemTest();
-                FpuLdIntTest();
-                FpuLdD80Test();
-                FpuStMemTest();
-                FpuStIntTest();
-                FpuStD80Test();
-            }
-
-            if (fFpuBinary1)
-            {
-                FpuBinaryR80Test();
-                FpuBinaryFswR80Test();
-                FpuBinaryEflR80Test();
-            }
-
-            if (fFpuBinary2)
-            {
-                FpuBinaryR64Test();
-                FpuBinaryR32Test();
-                FpuBinaryI32Test();
-                FpuBinaryI16Test();
-                FpuBinaryFswR64Test();
-                FpuBinaryFswR32Test();
-                FpuBinaryFswI32Test();
-                FpuBinaryFswI16Test();
-            }
-
-            if (fFpuOther)
-            {
-                FpuUnaryR80Test();
-                FpuUnaryFswR80Test();
-                FpuUnaryTwoR80Test();
-            }
-
-            if (fSseFpBinary)
-            {
-                SseBinaryR32Test();
-                SseBinaryR64Test();
-                SseBinaryU128R32Test();
-                SseBinaryU128R64Test();
-
-                SseBinaryI32R64Test();
-                SseBinaryI64R64Test();
-                SseBinaryI32R32Test();
-                SseBinaryI64R32Test();
-
-                SseBinaryR64I32Test();
-                SseBinaryR64I64Test();
-                SseBinaryR32I32Test();
-                SseBinaryR32I64Test();
-            }
-
-            if (fSseFpOther)
-            {
-                SseCompareEflR32R32Test();
-                SseCompareEflR64R64Test();
-                SseCompareEflR64R64Test();
-                SseCompareF2XmmR32Imm8Test();
-                SseCompareF2XmmR64Imm8Test();
-                SseConvertXmmI32R32Test();
-                SseConvertXmmR32I32Test();
-                SseConvertXmmI32R64Test();
-                SseConvertXmmR64I32Test();
-                SseConvertMmXmmTest();
-                SseConvertXmmR32MmTest();
-                SseConvertXmmR64MmTest();
-                SseConvertMmI32XmmR32Test();
-            }
-
-            if (fSsePcmpxstrx)
-            {
-                SseComparePcmpistriTest();
-                SseComparePcmpistrmTest();
-                SseComparePcmpestriTest();
-                SseComparePcmpestrmTest();
-            }
+            /* Loop thru the groups and call test function for anything that's enabled. */
+            for (size_t i = 0; i < RT_ELEMENTS(s_aGroups); i++)
+                if ((s_aGroups[i].fCategory & fCategories))
+                    s_aGroups[i].pfnTest();
         }
         return RTTestSummaryAndDestroy(g_hTest);
Index: /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.S
===================================================================
--- /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.S	(revision 103074)
+++ /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.S	(revision 103075)
@@ -191,16 +191,16 @@
 IEM_TEST_DATA and_u64_locked, "tstIEMAImplDataInt-and_u64_locked.bin.gz"
 IEM_TEST_DATA arpl, "tstIEMAImplDataInt-arpl.bin.gz"
-IEM_TEST_DATA bsf_u16_amd, "tstIEMAImplDataInt-bsf_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u16_intel, "tstIEMAImplDataInt-bsf_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA bsf_u32_amd, "tstIEMAImplDataInt-bsf_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u32_intel, "tstIEMAImplDataInt-bsf_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA bsf_u64_amd, "tstIEMAImplDataInt-bsf_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u64_intel, "tstIEMAImplDataInt-bsf_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u16_amd, "tstIEMAImplDataInt-bsr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u16_intel, "tstIEMAImplDataInt-bsr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u32_amd, "tstIEMAImplDataInt-bsr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u32_intel, "tstIEMAImplDataInt-bsr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u64_amd, "tstIEMAImplDataInt-bsr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u64_intel, "tstIEMAImplDataInt-bsr_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA bsf_u16_amd, "tstIEMAImplDataInt-bsf_u16_amd.bin.gz"
+IEM_TEST_DATA bsf_u16_intel, "tstIEMAImplDataInt-bsf_u16_intel.bin.gz"
+IEM_TEST_DATA bsf_u32_amd, "tstIEMAImplDataInt-bsf_u32_amd.bin.gz"
+IEM_TEST_DATA bsf_u32_intel, "tstIEMAImplDataInt-bsf_u32_intel.bin.gz"
+IEM_TEST_DATA bsf_u64_amd, "tstIEMAImplDataInt-bsf_u64_amd.bin.gz"
+IEM_TEST_DATA bsf_u64_intel, "tstIEMAImplDataInt-bsf_u64_intel.bin.gz"
+IEM_TEST_DATA bsr_u16_amd, "tstIEMAImplDataInt-bsr_u16_amd.bin.gz"
+IEM_TEST_DATA bsr_u16_intel, "tstIEMAImplDataInt-bsr_u16_intel.bin.gz"
+IEM_TEST_DATA bsr_u32_amd, "tstIEMAImplDataInt-bsr_u32_amd.bin.gz"
+IEM_TEST_DATA bsr_u32_intel, "tstIEMAImplDataInt-bsr_u32_intel.bin.gz"
+IEM_TEST_DATA bsr_u64_amd, "tstIEMAImplDataInt-bsr_u64_amd.bin.gz"
+IEM_TEST_DATA bsr_u64_intel, "tstIEMAImplDataInt-bsr_u64_intel.bin.gz"
 IEM_TEST_DATA btc_u16, "tstIEMAImplDataInt-btc_u16.bin.gz"
 IEM_TEST_DATA btc_u16_locked, "tstIEMAImplDataInt-btc_u16_locked.bin.gz"
@@ -236,34 +236,34 @@
 IEM_TEST_DATA dec_u64, "tstIEMAImplDataInt-dec_u64.bin.gz"
 IEM_TEST_DATA dec_u64_locked, "tstIEMAImplDataInt-dec_u64_locked.bin.gz"
-IEM_TEST_DATA div_u8_amd, "tstIEMAImplDataInt-div_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u8_intel, "tstIEMAImplDataInt-div_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u16_amd, "tstIEMAImplDataInt-div_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u16_intel, "tstIEMAImplDataInt-div_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u32_amd, "tstIEMAImplDataInt-div_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u32_intel, "tstIEMAImplDataInt-div_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u64_amd, "tstIEMAImplDataInt-div_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u64_intel, "tstIEMAImplDataInt-div_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u8_amd, "tstIEMAImplDataInt-idiv_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u8_intel, "tstIEMAImplDataInt-idiv_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u16_amd, "tstIEMAImplDataInt-idiv_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u16_intel, "tstIEMAImplDataInt-idiv_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u32_amd, "tstIEMAImplDataInt-idiv_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u32_intel, "tstIEMAImplDataInt-idiv_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u64_amd, "tstIEMAImplDataInt-idiv_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u64_intel, "tstIEMAImplDataInt-idiv_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u16_amd, "tstIEMAImplDataInt-imul_two_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u16_intel, "tstIEMAImplDataInt-imul_two_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u32_amd, "tstIEMAImplDataInt-imul_two_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u32_intel, "tstIEMAImplDataInt-imul_two_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u64_amd, "tstIEMAImplDataInt-imul_two_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u64_intel, "tstIEMAImplDataInt-imul_two_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u8_amd, "tstIEMAImplDataInt-imul_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u8_intel, "tstIEMAImplDataInt-imul_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u16_amd, "tstIEMAImplDataInt-imul_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u16_intel, "tstIEMAImplDataInt-imul_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u32_amd, "tstIEMAImplDataInt-imul_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u32_intel, "tstIEMAImplDataInt-imul_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u64_amd, "tstIEMAImplDataInt-imul_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u64_intel, "tstIEMAImplDataInt-imul_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA div_u8_amd, "tstIEMAImplDataInt-div_u8_amd.bin.gz"
+IEM_TEST_DATA div_u8_intel, "tstIEMAImplDataInt-div_u8_intel.bin.gz"
+IEM_TEST_DATA div_u16_amd, "tstIEMAImplDataInt-div_u16_amd.bin.gz"
+IEM_TEST_DATA div_u16_intel, "tstIEMAImplDataInt-div_u16_intel.bin.gz"
+IEM_TEST_DATA div_u32_amd, "tstIEMAImplDataInt-div_u32_amd.bin.gz"
+IEM_TEST_DATA div_u32_intel, "tstIEMAImplDataInt-div_u32_intel.bin.gz"
+IEM_TEST_DATA div_u64_amd, "tstIEMAImplDataInt-div_u64_amd.bin.gz"
+IEM_TEST_DATA div_u64_intel, "tstIEMAImplDataInt-div_u64_intel.bin.gz"
+IEM_TEST_DATA idiv_u8_amd, "tstIEMAImplDataInt-idiv_u8_amd.bin.gz"
+IEM_TEST_DATA idiv_u8_intel, "tstIEMAImplDataInt-idiv_u8_intel.bin.gz"
+IEM_TEST_DATA idiv_u16_amd, "tstIEMAImplDataInt-idiv_u16_amd.bin.gz"
+IEM_TEST_DATA idiv_u16_intel, "tstIEMAImplDataInt-idiv_u16_intel.bin.gz"
+IEM_TEST_DATA idiv_u32_amd, "tstIEMAImplDataInt-idiv_u32_amd.bin.gz"
+IEM_TEST_DATA idiv_u32_intel, "tstIEMAImplDataInt-idiv_u32_intel.bin.gz"
+IEM_TEST_DATA idiv_u64_amd, "tstIEMAImplDataInt-idiv_u64_amd.bin.gz"
+IEM_TEST_DATA idiv_u64_intel, "tstIEMAImplDataInt-idiv_u64_intel.bin.gz"
+IEM_TEST_DATA imul_two_u16_amd, "tstIEMAImplDataInt-imul_two_u16_amd.bin.gz"
+IEM_TEST_DATA imul_two_u16_intel, "tstIEMAImplDataInt-imul_two_u16_intel.bin.gz"
+IEM_TEST_DATA imul_two_u32_amd, "tstIEMAImplDataInt-imul_two_u32_amd.bin.gz"
+IEM_TEST_DATA imul_two_u32_intel, "tstIEMAImplDataInt-imul_two_u32_intel.bin.gz"
+IEM_TEST_DATA imul_two_u64_amd, "tstIEMAImplDataInt-imul_two_u64_amd.bin.gz"
+IEM_TEST_DATA imul_two_u64_intel, "tstIEMAImplDataInt-imul_two_u64_intel.bin.gz"
+IEM_TEST_DATA imul_u8_amd, "tstIEMAImplDataInt-imul_u8_amd.bin.gz"
+IEM_TEST_DATA imul_u8_intel, "tstIEMAImplDataInt-imul_u8_intel.bin.gz"
+IEM_TEST_DATA imul_u16_amd, "tstIEMAImplDataInt-imul_u16_amd.bin.gz"
+IEM_TEST_DATA imul_u16_intel, "tstIEMAImplDataInt-imul_u16_intel.bin.gz"
+IEM_TEST_DATA imul_u32_amd, "tstIEMAImplDataInt-imul_u32_amd.bin.gz"
+IEM_TEST_DATA imul_u32_intel, "tstIEMAImplDataInt-imul_u32_intel.bin.gz"
+IEM_TEST_DATA imul_u64_amd, "tstIEMAImplDataInt-imul_u64_amd.bin.gz"
+IEM_TEST_DATA imul_u64_intel, "tstIEMAImplDataInt-imul_u64_intel.bin.gz"
 IEM_TEST_DATA inc_u8, "tstIEMAImplDataInt-inc_u8.bin.gz"
 IEM_TEST_DATA inc_u8_locked, "tstIEMAImplDataInt-inc_u8_locked.bin.gz"
@@ -274,12 +274,12 @@
 IEM_TEST_DATA inc_u64, "tstIEMAImplDataInt-inc_u64.bin.gz"
 IEM_TEST_DATA inc_u64_locked, "tstIEMAImplDataInt-inc_u64_locked.bin.gz"
-IEM_TEST_DATA mul_u8_amd, "tstIEMAImplDataInt-mul_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u8_intel, "tstIEMAImplDataInt-mul_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u16_amd, "tstIEMAImplDataInt-mul_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u16_intel, "tstIEMAImplDataInt-mul_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u32_amd, "tstIEMAImplDataInt-mul_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u32_intel, "tstIEMAImplDataInt-mul_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u64_amd, "tstIEMAImplDataInt-mul_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u64_intel, "tstIEMAImplDataInt-mul_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA mul_u8_amd, "tstIEMAImplDataInt-mul_u8_amd.bin.gz"
+IEM_TEST_DATA mul_u8_intel, "tstIEMAImplDataInt-mul_u8_intel.bin.gz"
+IEM_TEST_DATA mul_u16_amd, "tstIEMAImplDataInt-mul_u16_amd.bin.gz"
+IEM_TEST_DATA mul_u16_intel, "tstIEMAImplDataInt-mul_u16_intel.bin.gz"
+IEM_TEST_DATA mul_u32_amd, "tstIEMAImplDataInt-mul_u32_amd.bin.gz"
+IEM_TEST_DATA mul_u32_intel, "tstIEMAImplDataInt-mul_u32_intel.bin.gz"
+IEM_TEST_DATA mul_u64_amd, "tstIEMAImplDataInt-mul_u64_amd.bin.gz"
+IEM_TEST_DATA mul_u64_intel, "tstIEMAImplDataInt-mul_u64_intel.bin.gz"
 IEM_TEST_DATA neg_u8, "tstIEMAImplDataInt-neg_u8.bin.gz"
 IEM_TEST_DATA neg_u8_locked, "tstIEMAImplDataInt-neg_u8_locked.bin.gz"
@@ -306,44 +306,44 @@
 IEM_TEST_DATA or_u64, "tstIEMAImplDataInt-or_u64.bin.gz"
 IEM_TEST_DATA or_u64_locked, "tstIEMAImplDataInt-or_u64_locked.bin.gz"
-IEM_TEST_DATA rcl_u8_amd, "tstIEMAImplDataInt-rcl_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u8_intel, "tstIEMAImplDataInt-rcl_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u16_amd, "tstIEMAImplDataInt-rcl_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u16_intel, "tstIEMAImplDataInt-rcl_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u32_amd, "tstIEMAImplDataInt-rcl_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u32_intel, "tstIEMAImplDataInt-rcl_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u64_amd, "tstIEMAImplDataInt-rcl_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u64_intel, "tstIEMAImplDataInt-rcl_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u8_amd, "tstIEMAImplDataInt-rcr_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u8_intel, "tstIEMAImplDataInt-rcr_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u16_amd, "tstIEMAImplDataInt-rcr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u16_intel, "tstIEMAImplDataInt-rcr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u32_amd, "tstIEMAImplDataInt-rcr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u32_intel, "tstIEMAImplDataInt-rcr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u64_amd, "tstIEMAImplDataInt-rcr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u64_intel, "tstIEMAImplDataInt-rcr_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u8_amd, "tstIEMAImplDataInt-rol_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u8_intel, "tstIEMAImplDataInt-rol_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u16_amd, "tstIEMAImplDataInt-rol_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u16_intel, "tstIEMAImplDataInt-rol_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u32_amd, "tstIEMAImplDataInt-rol_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u32_intel, "tstIEMAImplDataInt-rol_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u64_amd, "tstIEMAImplDataInt-rol_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u64_intel, "tstIEMAImplDataInt-rol_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u8_amd, "tstIEMAImplDataInt-ror_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u8_intel, "tstIEMAImplDataInt-ror_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u16_amd, "tstIEMAImplDataInt-ror_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u16_intel, "tstIEMAImplDataInt-ror_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u32_amd, "tstIEMAImplDataInt-ror_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u32_intel, "tstIEMAImplDataInt-ror_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u64_amd, "tstIEMAImplDataInt-ror_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u64_intel, "tstIEMAImplDataInt-ror_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u8_amd, "tstIEMAImplDataInt-sar_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u8_intel, "tstIEMAImplDataInt-sar_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u16_amd, "tstIEMAImplDataInt-sar_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u16_intel, "tstIEMAImplDataInt-sar_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u32_amd, "tstIEMAImplDataInt-sar_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u32_intel, "tstIEMAImplDataInt-sar_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u64_amd, "tstIEMAImplDataInt-sar_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u64_intel, "tstIEMAImplDataInt-sar_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA rcl_u8_amd, "tstIEMAImplDataInt-rcl_u8_amd.bin.gz"
+IEM_TEST_DATA rcl_u8_intel, "tstIEMAImplDataInt-rcl_u8_intel.bin.gz"
+IEM_TEST_DATA rcl_u16_amd, "tstIEMAImplDataInt-rcl_u16_amd.bin.gz"
+IEM_TEST_DATA rcl_u16_intel, "tstIEMAImplDataInt-rcl_u16_intel.bin.gz"
+IEM_TEST_DATA rcl_u32_amd, "tstIEMAImplDataInt-rcl_u32_amd.bin.gz"
+IEM_TEST_DATA rcl_u32_intel, "tstIEMAImplDataInt-rcl_u32_intel.bin.gz"
+IEM_TEST_DATA rcl_u64_amd, "tstIEMAImplDataInt-rcl_u64_amd.bin.gz"
+IEM_TEST_DATA rcl_u64_intel, "tstIEMAImplDataInt-rcl_u64_intel.bin.gz"
+IEM_TEST_DATA rcr_u8_amd, "tstIEMAImplDataInt-rcr_u8_amd.bin.gz"
+IEM_TEST_DATA rcr_u8_intel, "tstIEMAImplDataInt-rcr_u8_intel.bin.gz"
+IEM_TEST_DATA rcr_u16_amd, "tstIEMAImplDataInt-rcr_u16_amd.bin.gz"
+IEM_TEST_DATA rcr_u16_intel, "tstIEMAImplDataInt-rcr_u16_intel.bin.gz"
+IEM_TEST_DATA rcr_u32_amd, "tstIEMAImplDataInt-rcr_u32_amd.bin.gz"
+IEM_TEST_DATA rcr_u32_intel, "tstIEMAImplDataInt-rcr_u32_intel.bin.gz"
+IEM_TEST_DATA rcr_u64_amd, "tstIEMAImplDataInt-rcr_u64_amd.bin.gz"
+IEM_TEST_DATA rcr_u64_intel, "tstIEMAImplDataInt-rcr_u64_intel.bin.gz"
+IEM_TEST_DATA rol_u8_amd, "tstIEMAImplDataInt-rol_u8_amd.bin.gz"
+IEM_TEST_DATA rol_u8_intel, "tstIEMAImplDataInt-rol_u8_intel.bin.gz"
+IEM_TEST_DATA rol_u16_amd, "tstIEMAImplDataInt-rol_u16_amd.bin.gz"
+IEM_TEST_DATA rol_u16_intel, "tstIEMAImplDataInt-rol_u16_intel.bin.gz"
+IEM_TEST_DATA rol_u32_amd, "tstIEMAImplDataInt-rol_u32_amd.bin.gz"
+IEM_TEST_DATA rol_u32_intel, "tstIEMAImplDataInt-rol_u32_intel.bin.gz"
+IEM_TEST_DATA rol_u64_amd, "tstIEMAImplDataInt-rol_u64_amd.bin.gz"
+IEM_TEST_DATA rol_u64_intel, "tstIEMAImplDataInt-rol_u64_intel.bin.gz"
+IEM_TEST_DATA ror_u8_amd, "tstIEMAImplDataInt-ror_u8_amd.bin.gz"
+IEM_TEST_DATA ror_u8_intel, "tstIEMAImplDataInt-ror_u8_intel.bin.gz"
+IEM_TEST_DATA ror_u16_amd, "tstIEMAImplDataInt-ror_u16_amd.bin.gz"
+IEM_TEST_DATA ror_u16_intel, "tstIEMAImplDataInt-ror_u16_intel.bin.gz"
+IEM_TEST_DATA ror_u32_amd, "tstIEMAImplDataInt-ror_u32_amd.bin.gz"
+IEM_TEST_DATA ror_u32_intel, "tstIEMAImplDataInt-ror_u32_intel.bin.gz"
+IEM_TEST_DATA ror_u64_amd, "tstIEMAImplDataInt-ror_u64_amd.bin.gz"
+IEM_TEST_DATA ror_u64_intel, "tstIEMAImplDataInt-ror_u64_intel.bin.gz"
+IEM_TEST_DATA sar_u8_amd, "tstIEMAImplDataInt-sar_u8_amd.bin.gz"
+IEM_TEST_DATA sar_u8_intel, "tstIEMAImplDataInt-sar_u8_intel.bin.gz"
+IEM_TEST_DATA sar_u16_amd, "tstIEMAImplDataInt-sar_u16_amd.bin.gz"
+IEM_TEST_DATA sar_u16_intel, "tstIEMAImplDataInt-sar_u16_intel.bin.gz"
+IEM_TEST_DATA sar_u32_amd, "tstIEMAImplDataInt-sar_u32_amd.bin.gz"
+IEM_TEST_DATA sar_u32_intel, "tstIEMAImplDataInt-sar_u32_intel.bin.gz"
+IEM_TEST_DATA sar_u64_amd, "tstIEMAImplDataInt-sar_u64_amd.bin.gz"
+IEM_TEST_DATA sar_u64_intel, "tstIEMAImplDataInt-sar_u64_intel.bin.gz"
 IEM_TEST_DATA sbb_u8, "tstIEMAImplDataInt-sbb_u8.bin.gz"
 IEM_TEST_DATA sbb_u8_locked, "tstIEMAImplDataInt-sbb_u8_locked.bin.gz"
@@ -354,32 +354,32 @@
 IEM_TEST_DATA sbb_u64, "tstIEMAImplDataInt-sbb_u64.bin.gz"
 IEM_TEST_DATA sbb_u64_locked, "tstIEMAImplDataInt-sbb_u64_locked.bin.gz"
-IEM_TEST_DATA shld_u16_amd, "tstIEMAImplDataInt-shld_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u16_intel, "tstIEMAImplDataInt-shld_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shld_u32_amd, "tstIEMAImplDataInt-shld_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u32_intel, "tstIEMAImplDataInt-shld_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shld_u64_amd, "tstIEMAImplDataInt-shld_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u64_intel, "tstIEMAImplDataInt-shld_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u8_amd, "tstIEMAImplDataInt-shl_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u8_intel, "tstIEMAImplDataInt-shl_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u16_amd, "tstIEMAImplDataInt-shl_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u16_intel, "tstIEMAImplDataInt-shl_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u32_amd, "tstIEMAImplDataInt-shl_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u32_intel, "tstIEMAImplDataInt-shl_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u64_amd, "tstIEMAImplDataInt-shl_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u64_intel, "tstIEMAImplDataInt-shl_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u16_amd, "tstIEMAImplDataInt-shrd_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u16_intel, "tstIEMAImplDataInt-shrd_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u32_amd, "tstIEMAImplDataInt-shrd_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u32_intel, "tstIEMAImplDataInt-shrd_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u64_amd, "tstIEMAImplDataInt-shrd_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u64_intel, "tstIEMAImplDataInt-shrd_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u8_amd, "tstIEMAImplDataInt-shr_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u8_intel, "tstIEMAImplDataInt-shr_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u16_amd, "tstIEMAImplDataInt-shr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u16_intel, "tstIEMAImplDataInt-shr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u32_amd, "tstIEMAImplDataInt-shr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u32_intel, "tstIEMAImplDataInt-shr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u64_amd, "tstIEMAImplDataInt-shr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u64_intel, "tstIEMAImplDataInt-shr_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA shld_u16_amd, "tstIEMAImplDataInt-shld_u16_amd.bin.gz"
+IEM_TEST_DATA shld_u16_intel, "tstIEMAImplDataInt-shld_u16_intel.bin.gz"
+IEM_TEST_DATA shld_u32_amd, "tstIEMAImplDataInt-shld_u32_amd.bin.gz"
+IEM_TEST_DATA shld_u32_intel, "tstIEMAImplDataInt-shld_u32_intel.bin.gz"
+IEM_TEST_DATA shld_u64_amd, "tstIEMAImplDataInt-shld_u64_amd.bin.gz"
+IEM_TEST_DATA shld_u64_intel, "tstIEMAImplDataInt-shld_u64_intel.bin.gz"
+IEM_TEST_DATA shl_u8_amd, "tstIEMAImplDataInt-shl_u8_amd.bin.gz"
+IEM_TEST_DATA shl_u8_intel, "tstIEMAImplDataInt-shl_u8_intel.bin.gz"
+IEM_TEST_DATA shl_u16_amd, "tstIEMAImplDataInt-shl_u16_amd.bin.gz"
+IEM_TEST_DATA shl_u16_intel, "tstIEMAImplDataInt-shl_u16_intel.bin.gz"
+IEM_TEST_DATA shl_u32_amd, "tstIEMAImplDataInt-shl_u32_amd.bin.gz"
+IEM_TEST_DATA shl_u32_intel, "tstIEMAImplDataInt-shl_u32_intel.bin.gz"
+IEM_TEST_DATA shl_u64_amd, "tstIEMAImplDataInt-shl_u64_amd.bin.gz"
+IEM_TEST_DATA shl_u64_intel, "tstIEMAImplDataInt-shl_u64_intel.bin.gz"
+IEM_TEST_DATA shrd_u16_amd, "tstIEMAImplDataInt-shrd_u16_amd.bin.gz"
+IEM_TEST_DATA shrd_u16_intel, "tstIEMAImplDataInt-shrd_u16_intel.bin.gz"
+IEM_TEST_DATA shrd_u32_amd, "tstIEMAImplDataInt-shrd_u32_amd.bin.gz"
+IEM_TEST_DATA shrd_u32_intel, "tstIEMAImplDataInt-shrd_u32_intel.bin.gz"
+IEM_TEST_DATA shrd_u64_amd, "tstIEMAImplDataInt-shrd_u64_amd.bin.gz"
+IEM_TEST_DATA shrd_u64_intel, "tstIEMAImplDataInt-shrd_u64_intel.bin.gz"
+IEM_TEST_DATA shr_u8_amd, "tstIEMAImplDataInt-shr_u8_amd.bin.gz"
+IEM_TEST_DATA shr_u8_intel, "tstIEMAImplDataInt-shr_u8_intel.bin.gz"
+IEM_TEST_DATA shr_u16_amd, "tstIEMAImplDataInt-shr_u16_amd.bin.gz"
+IEM_TEST_DATA shr_u16_intel, "tstIEMAImplDataInt-shr_u16_intel.bin.gz"
+IEM_TEST_DATA shr_u32_amd, "tstIEMAImplDataInt-shr_u32_amd.bin.gz"
+IEM_TEST_DATA shr_u32_intel, "tstIEMAImplDataInt-shr_u32_intel.bin.gz"
+IEM_TEST_DATA shr_u64_amd, "tstIEMAImplDataInt-shr_u64_amd.bin.gz"
+IEM_TEST_DATA shr_u64_intel, "tstIEMAImplDataInt-shr_u64_intel.bin.gz"
 IEM_TEST_DATA sub_u8, "tstIEMAImplDataInt-sub_u8.bin.gz"
 IEM_TEST_DATA sub_u8_locked, "tstIEMAImplDataInt-sub_u8_locked.bin.gz"
Index: /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.asm
===================================================================
--- /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.asm	(revision 103074)
+++ /trunk/src/VBox/VMM/testcase/tstIEMAImplDataSseBinary.asm	(revision 103075)
@@ -189,16 +189,16 @@
 IEM_TEST_DATA and_u64_locked, "tstIEMAImplDataInt-and_u64_locked.bin.gz"
 IEM_TEST_DATA arpl, "tstIEMAImplDataInt-arpl.bin.gz"
-IEM_TEST_DATA bsf_u16_amd, "tstIEMAImplDataInt-bsf_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u16_intel, "tstIEMAImplDataInt-bsf_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA bsf_u32_amd, "tstIEMAImplDataInt-bsf_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u32_intel, "tstIEMAImplDataInt-bsf_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA bsf_u64_amd, "tstIEMAImplDataInt-bsf_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA bsf_u64_intel, "tstIEMAImplDataInt-bsf_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u16_amd, "tstIEMAImplDataInt-bsr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u16_intel, "tstIEMAImplDataInt-bsr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u32_amd, "tstIEMAImplDataInt-bsr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u32_intel, "tstIEMAImplDataInt-bsr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA bsr_u64_amd, "tstIEMAImplDataInt-bsr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA bsr_u64_intel, "tstIEMAImplDataInt-bsr_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA bsf_u16_amd, "tstIEMAImplDataInt-bsf_u16_amd.bin.gz"
+IEM_TEST_DATA bsf_u16_intel, "tstIEMAImplDataInt-bsf_u16_intel.bin.gz"
+IEM_TEST_DATA bsf_u32_amd, "tstIEMAImplDataInt-bsf_u32_amd.bin.gz"
+IEM_TEST_DATA bsf_u32_intel, "tstIEMAImplDataInt-bsf_u32_intel.bin.gz"
+IEM_TEST_DATA bsf_u64_amd, "tstIEMAImplDataInt-bsf_u64_amd.bin.gz"
+IEM_TEST_DATA bsf_u64_intel, "tstIEMAImplDataInt-bsf_u64_intel.bin.gz"
+IEM_TEST_DATA bsr_u16_amd, "tstIEMAImplDataInt-bsr_u16_amd.bin.gz"
+IEM_TEST_DATA bsr_u16_intel, "tstIEMAImplDataInt-bsr_u16_intel.bin.gz"
+IEM_TEST_DATA bsr_u32_amd, "tstIEMAImplDataInt-bsr_u32_amd.bin.gz"
+IEM_TEST_DATA bsr_u32_intel, "tstIEMAImplDataInt-bsr_u32_intel.bin.gz"
+IEM_TEST_DATA bsr_u64_amd, "tstIEMAImplDataInt-bsr_u64_amd.bin.gz"
+IEM_TEST_DATA bsr_u64_intel, "tstIEMAImplDataInt-bsr_u64_intel.bin.gz"
 IEM_TEST_DATA btc_u16, "tstIEMAImplDataInt-btc_u16.bin.gz"
 IEM_TEST_DATA btc_u16_locked, "tstIEMAImplDataInt-btc_u16_locked.bin.gz"
@@ -234,34 +234,34 @@
 IEM_TEST_DATA dec_u64, "tstIEMAImplDataInt-dec_u64.bin.gz"
 IEM_TEST_DATA dec_u64_locked, "tstIEMAImplDataInt-dec_u64_locked.bin.gz"
-IEM_TEST_DATA div_u8_amd, "tstIEMAImplDataInt-div_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u8_intel, "tstIEMAImplDataInt-div_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u16_amd, "tstIEMAImplDataInt-div_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u16_intel, "tstIEMAImplDataInt-div_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u32_amd, "tstIEMAImplDataInt-div_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u32_intel, "tstIEMAImplDataInt-div_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA div_u64_amd, "tstIEMAImplDataInt-div_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA div_u64_intel, "tstIEMAImplDataInt-div_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u8_amd, "tstIEMAImplDataInt-idiv_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u8_intel, "tstIEMAImplDataInt-idiv_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u16_amd, "tstIEMAImplDataInt-idiv_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u16_intel, "tstIEMAImplDataInt-idiv_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u32_amd, "tstIEMAImplDataInt-idiv_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u32_intel, "tstIEMAImplDataInt-idiv_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA idiv_u64_amd, "tstIEMAImplDataInt-idiv_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA idiv_u64_intel, "tstIEMAImplDataInt-idiv_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u16_amd, "tstIEMAImplDataInt-imul_two_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u16_intel, "tstIEMAImplDataInt-imul_two_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u32_amd, "tstIEMAImplDataInt-imul_two_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u32_intel, "tstIEMAImplDataInt-imul_two_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_two_u64_amd, "tstIEMAImplDataInt-imul_two_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_two_u64_intel, "tstIEMAImplDataInt-imul_two_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u8_amd, "tstIEMAImplDataInt-imul_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u8_intel, "tstIEMAImplDataInt-imul_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u16_amd, "tstIEMAImplDataInt-imul_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u16_intel, "tstIEMAImplDataInt-imul_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u32_amd, "tstIEMAImplDataInt-imul_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u32_intel, "tstIEMAImplDataInt-imul_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA imul_u64_amd, "tstIEMAImplDataInt-imul_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA imul_u64_intel, "tstIEMAImplDataInt-imul_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA div_u8_amd, "tstIEMAImplDataInt-div_u8_amd.bin.gz"
+IEM_TEST_DATA div_u8_intel, "tstIEMAImplDataInt-div_u8_intel.bin.gz"
+IEM_TEST_DATA div_u16_amd, "tstIEMAImplDataInt-div_u16_amd.bin.gz"
+IEM_TEST_DATA div_u16_intel, "tstIEMAImplDataInt-div_u16_intel.bin.gz"
+IEM_TEST_DATA div_u32_amd, "tstIEMAImplDataInt-div_u32_amd.bin.gz"
+IEM_TEST_DATA div_u32_intel, "tstIEMAImplDataInt-div_u32_intel.bin.gz"
+IEM_TEST_DATA div_u64_amd, "tstIEMAImplDataInt-div_u64_amd.bin.gz"
+IEM_TEST_DATA div_u64_intel, "tstIEMAImplDataInt-div_u64_intel.bin.gz"
+IEM_TEST_DATA idiv_u8_amd, "tstIEMAImplDataInt-idiv_u8_amd.bin.gz"
+IEM_TEST_DATA idiv_u8_intel, "tstIEMAImplDataInt-idiv_u8_intel.bin.gz"
+IEM_TEST_DATA idiv_u16_amd, "tstIEMAImplDataInt-idiv_u16_amd.bin.gz"
+IEM_TEST_DATA idiv_u16_intel, "tstIEMAImplDataInt-idiv_u16_intel.bin.gz"
+IEM_TEST_DATA idiv_u32_amd, "tstIEMAImplDataInt-idiv_u32_amd.bin.gz"
+IEM_TEST_DATA idiv_u32_intel, "tstIEMAImplDataInt-idiv_u32_intel.bin.gz"
+IEM_TEST_DATA idiv_u64_amd, "tstIEMAImplDataInt-idiv_u64_amd.bin.gz"
+IEM_TEST_DATA idiv_u64_intel, "tstIEMAImplDataInt-idiv_u64_intel.bin.gz"
+IEM_TEST_DATA imul_two_u16_amd, "tstIEMAImplDataInt-imul_two_u16_amd.bin.gz"
+IEM_TEST_DATA imul_two_u16_intel, "tstIEMAImplDataInt-imul_two_u16_intel.bin.gz"
+IEM_TEST_DATA imul_two_u32_amd, "tstIEMAImplDataInt-imul_two_u32_amd.bin.gz"
+IEM_TEST_DATA imul_two_u32_intel, "tstIEMAImplDataInt-imul_two_u32_intel.bin.gz"
+IEM_TEST_DATA imul_two_u64_amd, "tstIEMAImplDataInt-imul_two_u64_amd.bin.gz"
+IEM_TEST_DATA imul_two_u64_intel, "tstIEMAImplDataInt-imul_two_u64_intel.bin.gz"
+IEM_TEST_DATA imul_u8_amd, "tstIEMAImplDataInt-imul_u8_amd.bin.gz"
+IEM_TEST_DATA imul_u8_intel, "tstIEMAImplDataInt-imul_u8_intel.bin.gz"
+IEM_TEST_DATA imul_u16_amd, "tstIEMAImplDataInt-imul_u16_amd.bin.gz"
+IEM_TEST_DATA imul_u16_intel, "tstIEMAImplDataInt-imul_u16_intel.bin.gz"
+IEM_TEST_DATA imul_u32_amd, "tstIEMAImplDataInt-imul_u32_amd.bin.gz"
+IEM_TEST_DATA imul_u32_intel, "tstIEMAImplDataInt-imul_u32_intel.bin.gz"
+IEM_TEST_DATA imul_u64_amd, "tstIEMAImplDataInt-imul_u64_amd.bin.gz"
+IEM_TEST_DATA imul_u64_intel, "tstIEMAImplDataInt-imul_u64_intel.bin.gz"
 IEM_TEST_DATA inc_u8, "tstIEMAImplDataInt-inc_u8.bin.gz"
 IEM_TEST_DATA inc_u8_locked, "tstIEMAImplDataInt-inc_u8_locked.bin.gz"
@@ -272,12 +272,12 @@
 IEM_TEST_DATA inc_u64, "tstIEMAImplDataInt-inc_u64.bin.gz"
 IEM_TEST_DATA inc_u64_locked, "tstIEMAImplDataInt-inc_u64_locked.bin.gz"
-IEM_TEST_DATA mul_u8_amd, "tstIEMAImplDataInt-mul_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u8_intel, "tstIEMAImplDataInt-mul_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u16_amd, "tstIEMAImplDataInt-mul_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u16_intel, "tstIEMAImplDataInt-mul_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u32_amd, "tstIEMAImplDataInt-mul_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u32_intel, "tstIEMAImplDataInt-mul_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA mul_u64_amd, "tstIEMAImplDataInt-mul_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA mul_u64_intel, "tstIEMAImplDataInt-mul_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA mul_u8_amd, "tstIEMAImplDataInt-mul_u8_amd.bin.gz"
+IEM_TEST_DATA mul_u8_intel, "tstIEMAImplDataInt-mul_u8_intel.bin.gz"
+IEM_TEST_DATA mul_u16_amd, "tstIEMAImplDataInt-mul_u16_amd.bin.gz"
+IEM_TEST_DATA mul_u16_intel, "tstIEMAImplDataInt-mul_u16_intel.bin.gz"
+IEM_TEST_DATA mul_u32_amd, "tstIEMAImplDataInt-mul_u32_amd.bin.gz"
+IEM_TEST_DATA mul_u32_intel, "tstIEMAImplDataInt-mul_u32_intel.bin.gz"
+IEM_TEST_DATA mul_u64_amd, "tstIEMAImplDataInt-mul_u64_amd.bin.gz"
+IEM_TEST_DATA mul_u64_intel, "tstIEMAImplDataInt-mul_u64_intel.bin.gz"
 IEM_TEST_DATA neg_u8, "tstIEMAImplDataInt-neg_u8.bin.gz"
 IEM_TEST_DATA neg_u8_locked, "tstIEMAImplDataInt-neg_u8_locked.bin.gz"
@@ -304,44 +304,44 @@
 IEM_TEST_DATA or_u64, "tstIEMAImplDataInt-or_u64.bin.gz"
 IEM_TEST_DATA or_u64_locked, "tstIEMAImplDataInt-or_u64_locked.bin.gz"
-IEM_TEST_DATA rcl_u8_amd, "tstIEMAImplDataInt-rcl_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u8_intel, "tstIEMAImplDataInt-rcl_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u16_amd, "tstIEMAImplDataInt-rcl_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u16_intel, "tstIEMAImplDataInt-rcl_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u32_amd, "tstIEMAImplDataInt-rcl_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u32_intel, "tstIEMAImplDataInt-rcl_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rcl_u64_amd, "tstIEMAImplDataInt-rcl_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rcl_u64_intel, "tstIEMAImplDataInt-rcl_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u8_amd, "tstIEMAImplDataInt-rcr_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u8_intel, "tstIEMAImplDataInt-rcr_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u16_amd, "tstIEMAImplDataInt-rcr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u16_intel, "tstIEMAImplDataInt-rcr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u32_amd, "tstIEMAImplDataInt-rcr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u32_intel, "tstIEMAImplDataInt-rcr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rcr_u64_amd, "tstIEMAImplDataInt-rcr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rcr_u64_intel, "tstIEMAImplDataInt-rcr_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u8_amd, "tstIEMAImplDataInt-rol_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u8_intel, "tstIEMAImplDataInt-rol_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u16_amd, "tstIEMAImplDataInt-rol_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u16_intel, "tstIEMAImplDataInt-rol_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u32_amd, "tstIEMAImplDataInt-rol_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u32_intel, "tstIEMAImplDataInt-rol_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA rol_u64_amd, "tstIEMAImplDataInt-rol_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA rol_u64_intel, "tstIEMAImplDataInt-rol_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u8_amd, "tstIEMAImplDataInt-ror_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u8_intel, "tstIEMAImplDataInt-ror_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u16_amd, "tstIEMAImplDataInt-ror_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u16_intel, "tstIEMAImplDataInt-ror_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u32_amd, "tstIEMAImplDataInt-ror_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u32_intel, "tstIEMAImplDataInt-ror_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA ror_u64_amd, "tstIEMAImplDataInt-ror_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA ror_u64_intel, "tstIEMAImplDataInt-ror_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u8_amd, "tstIEMAImplDataInt-sar_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u8_intel, "tstIEMAImplDataInt-sar_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u16_amd, "tstIEMAImplDataInt-sar_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u16_intel, "tstIEMAImplDataInt-sar_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u32_amd, "tstIEMAImplDataInt-sar_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u32_intel, "tstIEMAImplDataInt-sar_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA sar_u64_amd, "tstIEMAImplDataInt-sar_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA sar_u64_intel, "tstIEMAImplDataInt-sar_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA rcl_u8_amd, "tstIEMAImplDataInt-rcl_u8_amd.bin.gz"
+IEM_TEST_DATA rcl_u8_intel, "tstIEMAImplDataInt-rcl_u8_intel.bin.gz"
+IEM_TEST_DATA rcl_u16_amd, "tstIEMAImplDataInt-rcl_u16_amd.bin.gz"
+IEM_TEST_DATA rcl_u16_intel, "tstIEMAImplDataInt-rcl_u16_intel.bin.gz"
+IEM_TEST_DATA rcl_u32_amd, "tstIEMAImplDataInt-rcl_u32_amd.bin.gz"
+IEM_TEST_DATA rcl_u32_intel, "tstIEMAImplDataInt-rcl_u32_intel.bin.gz"
+IEM_TEST_DATA rcl_u64_amd, "tstIEMAImplDataInt-rcl_u64_amd.bin.gz"
+IEM_TEST_DATA rcl_u64_intel, "tstIEMAImplDataInt-rcl_u64_intel.bin.gz"
+IEM_TEST_DATA rcr_u8_amd, "tstIEMAImplDataInt-rcr_u8_amd.bin.gz"
+IEM_TEST_DATA rcr_u8_intel, "tstIEMAImplDataInt-rcr_u8_intel.bin.gz"
+IEM_TEST_DATA rcr_u16_amd, "tstIEMAImplDataInt-rcr_u16_amd.bin.gz"
+IEM_TEST_DATA rcr_u16_intel, "tstIEMAImplDataInt-rcr_u16_intel.bin.gz"
+IEM_TEST_DATA rcr_u32_amd, "tstIEMAImplDataInt-rcr_u32_amd.bin.gz"
+IEM_TEST_DATA rcr_u32_intel, "tstIEMAImplDataInt-rcr_u32_intel.bin.gz"
+IEM_TEST_DATA rcr_u64_amd, "tstIEMAImplDataInt-rcr_u64_amd.bin.gz"
+IEM_TEST_DATA rcr_u64_intel, "tstIEMAImplDataInt-rcr_u64_intel.bin.gz"
+IEM_TEST_DATA rol_u8_amd, "tstIEMAImplDataInt-rol_u8_amd.bin.gz"
+IEM_TEST_DATA rol_u8_intel, "tstIEMAImplDataInt-rol_u8_intel.bin.gz"
+IEM_TEST_DATA rol_u16_amd, "tstIEMAImplDataInt-rol_u16_amd.bin.gz"
+IEM_TEST_DATA rol_u16_intel, "tstIEMAImplDataInt-rol_u16_intel.bin.gz"
+IEM_TEST_DATA rol_u32_amd, "tstIEMAImplDataInt-rol_u32_amd.bin.gz"
+IEM_TEST_DATA rol_u32_intel, "tstIEMAImplDataInt-rol_u32_intel.bin.gz"
+IEM_TEST_DATA rol_u64_amd, "tstIEMAImplDataInt-rol_u64_amd.bin.gz"
+IEM_TEST_DATA rol_u64_intel, "tstIEMAImplDataInt-rol_u64_intel.bin.gz"
+IEM_TEST_DATA ror_u8_amd, "tstIEMAImplDataInt-ror_u8_amd.bin.gz"
+IEM_TEST_DATA ror_u8_intel, "tstIEMAImplDataInt-ror_u8_intel.bin.gz"
+IEM_TEST_DATA ror_u16_amd, "tstIEMAImplDataInt-ror_u16_amd.bin.gz"
+IEM_TEST_DATA ror_u16_intel, "tstIEMAImplDataInt-ror_u16_intel.bin.gz"
+IEM_TEST_DATA ror_u32_amd, "tstIEMAImplDataInt-ror_u32_amd.bin.gz"
+IEM_TEST_DATA ror_u32_intel, "tstIEMAImplDataInt-ror_u32_intel.bin.gz"
+IEM_TEST_DATA ror_u64_amd, "tstIEMAImplDataInt-ror_u64_amd.bin.gz"
+IEM_TEST_DATA ror_u64_intel, "tstIEMAImplDataInt-ror_u64_intel.bin.gz"
+IEM_TEST_DATA sar_u8_amd, "tstIEMAImplDataInt-sar_u8_amd.bin.gz"
+IEM_TEST_DATA sar_u8_intel, "tstIEMAImplDataInt-sar_u8_intel.bin.gz"
+IEM_TEST_DATA sar_u16_amd, "tstIEMAImplDataInt-sar_u16_amd.bin.gz"
+IEM_TEST_DATA sar_u16_intel, "tstIEMAImplDataInt-sar_u16_intel.bin.gz"
+IEM_TEST_DATA sar_u32_amd, "tstIEMAImplDataInt-sar_u32_amd.bin.gz"
+IEM_TEST_DATA sar_u32_intel, "tstIEMAImplDataInt-sar_u32_intel.bin.gz"
+IEM_TEST_DATA sar_u64_amd, "tstIEMAImplDataInt-sar_u64_amd.bin.gz"
+IEM_TEST_DATA sar_u64_intel, "tstIEMAImplDataInt-sar_u64_intel.bin.gz"
 IEM_TEST_DATA sbb_u8, "tstIEMAImplDataInt-sbb_u8.bin.gz"
 IEM_TEST_DATA sbb_u8_locked, "tstIEMAImplDataInt-sbb_u8_locked.bin.gz"
@@ -352,32 +352,32 @@
 IEM_TEST_DATA sbb_u64, "tstIEMAImplDataInt-sbb_u64.bin.gz"
 IEM_TEST_DATA sbb_u64_locked, "tstIEMAImplDataInt-sbb_u64_locked.bin.gz"
-IEM_TEST_DATA shld_u16_amd, "tstIEMAImplDataInt-shld_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u16_intel, "tstIEMAImplDataInt-shld_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shld_u32_amd, "tstIEMAImplDataInt-shld_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u32_intel, "tstIEMAImplDataInt-shld_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shld_u64_amd, "tstIEMAImplDataInt-shld_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shld_u64_intel, "tstIEMAImplDataInt-shld_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u8_amd, "tstIEMAImplDataInt-shl_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u8_intel, "tstIEMAImplDataInt-shl_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u16_amd, "tstIEMAImplDataInt-shl_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u16_intel, "tstIEMAImplDataInt-shl_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u32_amd, "tstIEMAImplDataInt-shl_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u32_intel, "tstIEMAImplDataInt-shl_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shl_u64_amd, "tstIEMAImplDataInt-shl_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shl_u64_intel, "tstIEMAImplDataInt-shl_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u16_amd, "tstIEMAImplDataInt-shrd_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u16_intel, "tstIEMAImplDataInt-shrd_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u32_amd, "tstIEMAImplDataInt-shrd_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u32_intel, "tstIEMAImplDataInt-shrd_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shrd_u64_amd, "tstIEMAImplDataInt-shrd_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shrd_u64_intel, "tstIEMAImplDataInt-shrd_u64_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u8_amd, "tstIEMAImplDataInt-shr_u8_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u8_intel, "tstIEMAImplDataInt-shr_u8_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u16_amd, "tstIEMAImplDataInt-shr_u16_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u16_intel, "tstIEMAImplDataInt-shr_u16_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u32_amd, "tstIEMAImplDataInt-shr_u32_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u32_intel, "tstIEMAImplDataInt-shr_u32_intel-Intel.bin.gz"
-IEM_TEST_DATA shr_u64_amd, "tstIEMAImplDataInt-shr_u64_amd-Amd.bin.gz"
-IEM_TEST_DATA shr_u64_intel, "tstIEMAImplDataInt-shr_u64_intel-Intel.bin.gz"
+IEM_TEST_DATA shld_u16_amd, "tstIEMAImplDataInt-shld_u16_amd.bin.gz"
+IEM_TEST_DATA shld_u16_intel, "tstIEMAImplDataInt-shld_u16_intel.bin.gz"
+IEM_TEST_DATA shld_u32_amd, "tstIEMAImplDataInt-shld_u32_amd.bin.gz"
+IEM_TEST_DATA shld_u32_intel, "tstIEMAImplDataInt-shld_u32_intel.bin.gz"
+IEM_TEST_DATA shld_u64_amd, "tstIEMAImplDataInt-shld_u64_amd.bin.gz"
+IEM_TEST_DATA shld_u64_intel, "tstIEMAImplDataInt-shld_u64_intel.bin.gz"
+IEM_TEST_DATA shl_u8_amd, "tstIEMAImplDataInt-shl_u8_amd.bin.gz"
+IEM_TEST_DATA shl_u8_intel, "tstIEMAImplDataInt-shl_u8_intel.bin.gz"
+IEM_TEST_DATA shl_u16_amd, "tstIEMAImplDataInt-shl_u16_amd.bin.gz"
+IEM_TEST_DATA shl_u16_intel, "tstIEMAImplDataInt-shl_u16_intel.bin.gz"
+IEM_TEST_DATA shl_u32_amd, "tstIEMAImplDataInt-shl_u32_amd.bin.gz"
+IEM_TEST_DATA shl_u32_intel, "tstIEMAImplDataInt-shl_u32_intel.bin.gz"
+IEM_TEST_DATA shl_u64_amd, "tstIEMAImplDataInt-shl_u64_amd.bin.gz"
+IEM_TEST_DATA shl_u64_intel, "tstIEMAImplDataInt-shl_u64_intel.bin.gz"
+IEM_TEST_DATA shrd_u16_amd, "tstIEMAImplDataInt-shrd_u16_amd.bin.gz"
+IEM_TEST_DATA shrd_u16_intel, "tstIEMAImplDataInt-shrd_u16_intel.bin.gz"
+IEM_TEST_DATA shrd_u32_amd, "tstIEMAImplDataInt-shrd_u32_amd.bin.gz"
+IEM_TEST_DATA shrd_u32_intel, "tstIEMAImplDataInt-shrd_u32_intel.bin.gz"
+IEM_TEST_DATA shrd_u64_amd, "tstIEMAImplDataInt-shrd_u64_amd.bin.gz"
+IEM_TEST_DATA shrd_u64_intel, "tstIEMAImplDataInt-shrd_u64_intel.bin.gz"
+IEM_TEST_DATA shr_u8_amd, "tstIEMAImplDataInt-shr_u8_amd.bin.gz"
+IEM_TEST_DATA shr_u8_intel, "tstIEMAImplDataInt-shr_u8_intel.bin.gz"
+IEM_TEST_DATA shr_u16_amd, "tstIEMAImplDataInt-shr_u16_amd.bin.gz"
+IEM_TEST_DATA shr_u16_intel, "tstIEMAImplDataInt-shr_u16_intel.bin.gz"
+IEM_TEST_DATA shr_u32_amd, "tstIEMAImplDataInt-shr_u32_amd.bin.gz"
+IEM_TEST_DATA shr_u32_intel, "tstIEMAImplDataInt-shr_u32_intel.bin.gz"
+IEM_TEST_DATA shr_u64_amd, "tstIEMAImplDataInt-shr_u64_amd.bin.gz"
+IEM_TEST_DATA shr_u64_intel, "tstIEMAImplDataInt-shr_u64_intel.bin.gz"
 IEM_TEST_DATA sub_u8, "tstIEMAImplDataInt-sub_u8.bin.gz"
 IEM_TEST_DATA sub_u8_locked, "tstIEMAImplDataInt-sub_u8_locked.bin.gz"
