]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Heroic patch from Tom Hughes:
authorNicholas Nethercote <n.nethercote@gmail.com>
Wed, 11 Feb 2004 23:33:29 +0000 (23:33 +0000)
committerNicholas Nethercote <n.nethercote@gmail.com>
Wed, 11 Feb 2004 23:33:29 +0000 (23:33 +0000)
  This patch adds translation tests for most of the basic x86 instructions and
  fixes a few missing/broken instructions to work properly.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2242

14 files changed:
coregrind/vg_from_ucode.c
coregrind/vg_helpers.S
coregrind/vg_include.h
coregrind/vg_main.c
coregrind/vg_to_ucode.c
coregrind/vg_translate.c
include/vg_skin.h.base
memcheck/mc_translate.c
none/tests/Makefile.am
none/tests/gen_insn_test.pl
none/tests/insn_mmx.def
none/tests/insn_sse.def
none/tests/insn_sse2.def
tests/cputest.c

index bb24e69aea27134085d7ddbcfdd79f0a60e4b019..859d098a5e77a1f0cb0645ce5a46c45dbc236231 100644 (file)
@@ -4217,7 +4217,7 @@ static void emitUInstr ( UCodeBlock* cb, Int i,
          break;
 
       case SSE2a1_MemRd:
-         vg_assert(u->size == 4 || u->size == 16);
+         vg_assert(u->size == 4 || u->size == 8 || u->size == 16);
          vg_assert(u->tag1 == Lit16);
          vg_assert(u->tag2 == Lit16);
          vg_assert(u->tag3 == RealReg);
index d5a8e87e8a06763088473799c4a89516d10a7b11..291c88b87d469ae32c90a55207427bc07a0dc789 100644 (file)
@@ -315,13 +315,66 @@ VG_(helper_DAA):
        ret
        
 
+/* Similarly, do %ax = AAS(%ax). */
+.global VG_(helper_AAS)
+VG_(helper_AAS):
+       pushl   %eax
+       movl    8(%esp), %eax
+       aas
+       movl    %eax, 8(%esp)
+       popl    %eax
+       ret
+
+
+/* Similarly, do %ax = AAA(%ax). */
+.global VG_(helper_AAA)
+VG_(helper_AAA):
+       pushl   %eax
+       movl    8(%esp), %eax
+       aaa
+       movl    %eax, 8(%esp)
+       popl    %eax
+       ret
+
+
+/* Similarly, do %ax = AAD(%ax). */
+.global VG_(helper_AAD)
+VG_(helper_AAD):
+       pushl   %eax
+       movl    8(%esp), %eax
+       aad
+       movl    %eax, 8(%esp)
+       popl    %eax
+       ret
+
+
+/* Similarly, do %ax = AAM(%ax). */
+.global VG_(helper_AAM)
+VG_(helper_AAM):
+       pushl   %eax
+       movl    8(%esp), %eax
+       aam
+       movl    %eax, 8(%esp)
+       popl    %eax
+       ret
+       
+
 /* Bit scan forwards/reverse.  Sets flags (??).
    On entry:
        value, replaced by result
        RA   <- %esp
 */
-.global VG_(helper_bsr)
-VG_(helper_bsr):
+.global VG_(helper_bsrw)
+VG_(helper_bsrw):
+       pushl   %eax
+       movw    12(%esp), %ax
+       bsrw    8(%esp), %ax
+       movw    %ax, 12(%esp)
+       popl    %eax
+       ret
+
+.global VG_(helper_bsrl)
+VG_(helper_bsrl):
        pushl   %eax
        movl    12(%esp), %eax
        bsrl    8(%esp), %eax
@@ -329,8 +382,17 @@ VG_(helper_bsr):
        popl    %eax
        ret
 
-.global VG_(helper_bsf)
-VG_(helper_bsf):
+.global VG_(helper_bsfw)
+VG_(helper_bsfw):
+       pushl   %eax
+       movw    12(%esp), %ax
+       bsfw    8(%esp), %ax
+       movw    %ax, 12(%esp)
+       popl    %eax
+       ret
+
+.global VG_(helper_bsfl)
+VG_(helper_bsfl):
        pushl   %eax
        movl    12(%esp), %eax
        bsfl    8(%esp), %eax
@@ -448,7 +510,7 @@ VG_(helper_STD):
        popl    %eax
        ret
 
-/* Clear/set the carry flag. */
+/* Clear/set/complement the carry flag. */
 .global VG_(helper_CLC)
 VG_(helper_CLC):
         clc
@@ -459,6 +521,11 @@ VG_(helper_STC):
         stc
         ret
 
+.global VG_(helper_CMC)
+VG_(helper_CMC):
+        cmc
+        ret
+
 /* Signed 32-to-64 multiply. */
 .globl VG_(helper_imul_32_64)
 VG_(helper_imul_32_64):
index c2d46b4d816261bb71ac3b501b488212278e9a92..f69969925dbfcae7a40263cacf526ce8c20e968e 100644 (file)
@@ -1656,6 +1656,7 @@ extern void VG_(helper_get_dirflag);
 
 extern void VG_(helper_CLC);
 extern void VG_(helper_STC);
+extern void VG_(helper_CMC);
 
 extern void VG_(helper_shldl);
 extern void VG_(helper_shldw);
@@ -1668,14 +1669,20 @@ extern void VG_(helper_OUT);
 extern void VG_(helper_RDTSC);
 extern void VG_(helper_CPUID);
 
-extern void VG_(helper_bsf);
-extern void VG_(helper_bsr);
+extern void VG_(helper_bsfw);
+extern void VG_(helper_bsfl);
+extern void VG_(helper_bsrw);
+extern void VG_(helper_bsrl);
 
 extern void VG_(helper_fstsw_AX);
 extern void VG_(helper_SAHF);
 extern void VG_(helper_LAHF);
 extern void VG_(helper_DAS);
 extern void VG_(helper_DAA);
+extern void VG_(helper_AAS);
+extern void VG_(helper_AAA);
+extern void VG_(helper_AAD);
+extern void VG_(helper_AAM);
 
 extern void VG_(helper_cmpxchg8b);
 
index 08a6fe4575fdd7420c9af6e362654a08e760b1a1..f4f95bab930b6998928a74d892565a91d2cf7942 100644 (file)
@@ -2143,6 +2143,7 @@ Int VGOFF_(helper_STD) = INVALID_OFFSET;
 Int VGOFF_(helper_get_dirflag) = INVALID_OFFSET;
 Int VGOFF_(helper_CLC) = INVALID_OFFSET;
 Int VGOFF_(helper_STC) = INVALID_OFFSET;
+Int VGOFF_(helper_CMC) = INVALID_OFFSET;
 Int VGOFF_(helper_shldl) = INVALID_OFFSET;
 Int VGOFF_(helper_shldw) = INVALID_OFFSET;
 Int VGOFF_(helper_shrdl) = INVALID_OFFSET;
@@ -2152,13 +2153,19 @@ Int VGOFF_(helper_OUT) = INVALID_OFFSET;
 Int VGOFF_(helper_RDTSC) = INVALID_OFFSET;
 Int VGOFF_(helper_CPUID) = INVALID_OFFSET;
 Int VGOFF_(helper_BSWAP) = INVALID_OFFSET;
-Int VGOFF_(helper_bsf) = INVALID_OFFSET;
-Int VGOFF_(helper_bsr) = INVALID_OFFSET;
+Int VGOFF_(helper_bsfw) = INVALID_OFFSET;
+Int VGOFF_(helper_bsfl) = INVALID_OFFSET;
+Int VGOFF_(helper_bsrw) = INVALID_OFFSET;
+Int VGOFF_(helper_bsrl) = INVALID_OFFSET;
 Int VGOFF_(helper_fstsw_AX) = INVALID_OFFSET;
 Int VGOFF_(helper_SAHF) = INVALID_OFFSET;
 Int VGOFF_(helper_LAHF) = INVALID_OFFSET;
 Int VGOFF_(helper_DAS) = INVALID_OFFSET;
 Int VGOFF_(helper_DAA) = INVALID_OFFSET;
+Int VGOFF_(helper_AAS) = INVALID_OFFSET;
+Int VGOFF_(helper_AAA) = INVALID_OFFSET;
+Int VGOFF_(helper_AAD) = INVALID_OFFSET;
+Int VGOFF_(helper_AAM) = INVALID_OFFSET;
 Int VGOFF_(helper_cmpxchg8b) = INVALID_OFFSET;
 Int VGOFF_(helper_undefined_instruction) = INVALID_OFFSET;
 
@@ -2437,17 +2444,21 @@ static void init_baseBlock ( Addr client_eip, Addr esp_at_startup )
    HELPER(get_dirflag);
 
    HELPER(CLC);            HELPER(STC);
+   HELPER(CMC);
 
    HELPER(shldl);          HELPER(shldw);
    HELPER(shrdl);          HELPER(shrdw);
 
    HELPER(RDTSC);          HELPER(CPUID);
 
-   HELPER(bsf);            HELPER(bsr);
+   HELPER(bsfw);           HELPER(bsfl);
+   HELPER(bsrw);           HELPER(bsrl);
 
    HELPER(fstsw_AX);
    HELPER(SAHF);           HELPER(LAHF);
    HELPER(DAS);            HELPER(DAA);
+   HELPER(AAS);            HELPER(AAA);
+   HELPER(AAD);            HELPER(AAM);
    HELPER(IN);             HELPER(OUT);
    HELPER(cmpxchg8b);
 
index ae06d21e741d8f1439b6cf9abef4a20ea223f25e..0b4f59d633027cceb49e49e39e8224711696fe30 100644 (file)
@@ -2687,10 +2687,7 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
 
    Int t_addr, t_bitno, t_mask, t_fetched, t_esp, temp, lit;
 
-   /* 2 and 4 are actually possible. */
    vg_assert(sz == 2 || sz == 4);
-   /* We only handle 4. */
-   vg_assert(sz == 4);
 
    t_addr = t_bitno = t_mask 
           = t_fetched = t_esp = temp = INVALID_TEMPREG;
@@ -2704,18 +2701,24 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
 
    uInstr2(cb, GET,  sz, ArchReg, gregOfRM(modrm), TempReg, t_bitno);
 
+   if (sz == 2) {
+      uInstr1(cb, WIDEN, 4, TempReg, t_bitno);
+      LAST_UINSTR(cb).extra4b = 2;
+      LAST_UINSTR(cb).signed_widen = False;
+   }
+   
    if (epartIsReg(modrm)) {
       eip++;
       /* Get it onto the client's stack. */
       t_esp = newTemp(cb);
       t_addr = newTemp(cb);
       uInstr2(cb, GET,   4, ArchReg,  R_ESP, TempReg, t_esp);
-      uInstr2(cb, SUB,  sz, Literal,  0,     TempReg, t_esp);
+      uInstr2(cb, SUB,   4, Literal,  0,     TempReg, t_esp);
       uLiteral(cb, sz);
       uInstr2(cb, PUT,   4, TempReg,  t_esp, ArchReg, R_ESP);
       uInstr2(cb, GET,   sz, ArchReg, eregOfRM(modrm), TempReg, temp);
       uInstr2(cb, STORE, sz, TempReg, temp, TempReg, t_esp);
-      /* Make ta point at it. */
+      /* Make t_addr point at it. */
       uInstr2(cb, MOV,   4,  TempReg, t_esp, TempReg, t_addr);
       /* Mask out upper bits of the shift amount, since we're doing a
          reg. */
@@ -2728,7 +2731,7 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
       eip   += HI8(pair);
    }
   
-   /* At this point: ta points to the address being operated on.  If
+   /* At this point: t_addr points to the address being operated on.  If
       it was a reg, we will have pushed it onto the client's stack.
       t_bitno is the bit number, suitable masked in the case of a reg.  */
    
@@ -2738,12 +2741,12 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
    uInstr2(cb, SAR, 4, Literal, 0, TempReg, temp);
    uLiteral(cb, 3);
    uInstr2(cb, ADD, 4, TempReg, temp, TempReg, t_addr);
-   /* ta now holds effective address */
+   /* t_addr now holds effective address */
 
    uInstr2(cb, MOV, 4, Literal, 0, TempReg, lit);
    uLiteral(cb, 7);
    uInstr2(cb, AND, 4, TempReg, lit, TempReg, t_bitno);
-   /* bitno contains offset of bit within byte */
+   /* t_bitno contains offset of bit within byte */
 
    if (op != BtOpNone) {
       t_mask = newTemp(cb);
@@ -2751,7 +2754,7 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
       uLiteral(cb, 1);
       uInstr2(cb, SHL, 4, TempReg, t_bitno, TempReg, t_mask);
    }
-   /* mask is now a suitable byte mask */
+   /* t_mask is now a suitable byte mask */
 
    uInstr2(cb, LOAD, 1, TempReg, t_addr, TempReg, t_fetched);
    if (op != BtOpNone) {
@@ -2781,20 +2784,20 @@ Addr dis_bt_G_E ( UCodeBlock* cb,
    uInstr2(cb, MOV, 4, Literal, 0, TempReg, lit);
    uLiteral(cb, 1);
    uInstr2(cb, AND, 4, TempReg, lit, TempReg, t_fetched);
-   /* fetched is now 1 or 0 */
+   /* t_fetched is now 1 or 0 */
 
    /* NEG is a handy way to convert zero/nonzero into the carry
       flag. */
    uInstr1(cb, NEG, 4, TempReg, t_fetched);
    setFlagsFromUOpcode(cb, NEG);
-   /* fetched is now in carry flag */
+   /* t_fetched is now in carry flag */
 
    /* Move reg operand from stack back to reg */
    if (epartIsReg(modrm)) {
       /* t_esp still points at it. */
       uInstr2(cb, LOAD, sz, TempReg, t_esp, TempReg, temp);
       uInstr2(cb, PUT,  sz, TempReg, temp, ArchReg, eregOfRM(modrm));
-      uInstr2(cb, ADD,  sz, Literal, 0, TempReg, t_esp);
+      uInstr2(cb, ADD,  4,  Literal, 0, TempReg, t_esp);
       uLiteral(cb, sz);
       uInstr2(cb, PUT,  4,  TempReg, t_esp, ArchReg, R_ESP);
    }
@@ -2821,9 +2824,12 @@ Addr dis_bs_E_G ( UCodeBlock* cb,
    Bool  isReg;
 
    vg_assert(sz == 2 || sz == 4);
-   vg_assert(sz==4);
 
-   helper = fwds ? VGOFF_(helper_bsf) : VGOFF_(helper_bsr);
+   if (fwds)
+      helper = sz == 2 ? VGOFF_(helper_bsfw) : VGOFF_(helper_bsfl);
+   else
+      helper = sz == 2 ? VGOFF_(helper_bsrw) : VGOFF_(helper_bsrl);
+   
    modrm  = getUChar(eip);
    t1     = newTemp(cb);
    t      = newTemp(cb);
@@ -4201,7 +4207,7 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
    /* PSHUFW */
    if (sz == 4
        && insn[0] == 0x0F && insn[1] == 0x70) {
-      eip = dis_SSE2_reg_or_mem_Imm8 ( cb, sorb, eip+2, 16
+      eip = dis_SSE2_reg_or_mem_Imm8 ( cb, sorb, eip+2, 8
                                            "pshufw",
                                            insn[0], insn[1] );
       goto decode_success;
@@ -5289,13 +5295,53 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
       uInstr1(cb, PUSH, 4, TempReg, t1);
       uInstr1(cb, CALLM, 0, Lit16, 
                   opc == 0x27 ? VGOFF_(helper_DAA) : VGOFF_(helper_DAS) );
-      uFlagsRWU(cb, FlagsAC, FlagsOSZACP, FlagsEmpty);
+      uFlagsRWU(cb, FlagsAC, FlagsSZACP, FlagO);
       uInstr1(cb, POP, 4, TempReg, t1);
       uInstr0(cb, CALLM_E, 0);
       uInstr2(cb, PUT, 1, TempReg, t1, ArchReg, R_AL);
       DIP(opc == 0x27 ? "daa\n" : "das\n");
       break;
 
+   case 0x37: /* AAA */
+   case 0x3F: /* AAS */
+      t1 = newTemp(cb);
+      uInstr2(cb, GET, 2, ArchReg, R_EAX, TempReg, t1);
+      /* Widen %AL to 32 bits, so it's all defined when we push it. */
+      uInstr1(cb, WIDEN, 4, TempReg, t1);
+      LAST_UINSTR(cb).extra4b = 2;
+      LAST_UINSTR(cb).signed_widen = False;
+      uInstr0(cb, CALLM_S, 0);
+      uInstr1(cb, PUSH, 4, TempReg, t1);
+      uInstr1(cb, CALLM, 0, Lit16, 
+                  opc == 0x37 ? VGOFF_(helper_AAA) : VGOFF_(helper_AAS) );
+      uFlagsRWU(cb, FlagA, FlagsAC, FlagsEmpty);
+      uInstr1(cb, POP, 4, TempReg, t1);
+      uInstr0(cb, CALLM_E, 0);
+      uInstr2(cb, PUT, 2, TempReg, t1, ArchReg, R_EAX);
+      DIP(opc == 0x37 ? "aaa\n" : "aas\n");
+      break;
+
+   case 0xD4: /* AAM */
+   case 0xD5: /* AAD */
+      d32 = getUChar(eip); eip++;
+      if (d32 != 10) VG_(core_panic)("disInstr: AAM/AAD but base not 10 !");
+      t1 = newTemp(cb);
+      uInstr2(cb, GET, 2, ArchReg, R_EAX, TempReg, t1);
+      /* Widen %AX to 32 bits, so it's all defined when we push it. */
+      uInstr1(cb, WIDEN, 4, TempReg, t1);
+      LAST_UINSTR(cb).extra4b = 2;
+      LAST_UINSTR(cb).signed_widen = False;
+      uInstr0(cb, CALLM_S, 0);
+      uInstr1(cb, PUSH, 4, TempReg, t1);
+      uInstr1(cb, CALLM, 0, Lit16, 
+                  opc == 0xD4 ? VGOFF_(helper_AAM) : VGOFF_(helper_AAD) );
+      uFlagsRWU(cb, FlagsEmpty, FlagsSZP, FlagsEmpty);
+      uInstr1(cb, POP, 4, TempReg, t1);
+      uInstr0(cb, CALLM_E, 0);
+      uInstr2(cb, PUT, 2, TempReg, t1, ArchReg, R_EAX);
+      DIP(opc == 0xD4 ? "aam\n" : "aad\n");
+      break;
+
    /* ------------------------ CWD/CDQ -------------------- */
 
    case 0x98: /* CBW */
@@ -5654,6 +5700,9 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
    case 0x1C: /* SBB Ib, AL */
       eip = dis_op_imm_A(cb, 1, SBB, True, eip, "sbb" );
       break;
+   case 0x1D: /* SBB Iv, eAX */
+      eip = dis_op_imm_A(cb, sz, SBB, True, eip, "sbb" );
+      break;
 
    case 0x24: /* AND Ib, AL */
       eip = dis_op_imm_A(cb, 1, AND, True, eip, "and" );
@@ -5778,6 +5827,9 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
       eip = dis_op2_G_E ( cb, sorb, ADC, True, sz, eip, "adc" );
       break;
 
+   case 0x18: /* SBB Gb,Eb */
+      eip = dis_op2_G_E ( cb, sorb, SBB, True, 1, eip, "sbb" );
+      break;
    case 0x19: /* SBB Gv,Ev */
       eip = dis_op2_G_E ( cb, sorb, SBB, True, sz, eip, "sbb" );
       break;
@@ -6095,11 +6147,19 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
    case 0xF9: /* STC */
       uInstr0(cb, CALLM_S, 0);
       uInstr1(cb, CALLM, 0, Lit16, VGOFF_(helper_STC));
-      uFlagsRWU(cb, FlagsEmpty, FlagC, FlagsOSZCP);
+      uFlagsRWU(cb, FlagsEmpty, FlagC, FlagsOSZAP);
       uInstr0(cb, CALLM_E, 0);
       DIP("stc\n");
       break;
 
+   case 0xF5: /* CMC */
+      uInstr0(cb, CALLM_S, 0);
+      uInstr1(cb, CALLM, 0, Lit16, VGOFF_(helper_CMC));
+      uFlagsRWU(cb, FlagC, FlagC, FlagsOSZAP);
+      uInstr0(cb, CALLM_E, 0);
+      DIP("cmc\n");
+      break;
+
    case 0xF2: { /* REPNE prefix insn */
       Addr eip_orig = eip - 1;
       vg_assert(sorb == 0);
@@ -6685,6 +6745,9 @@ static Addr disInstr ( UCodeBlock* cb, Addr eip, Bool* isEnd )
 
       /* =-=-=-=-=-=-=-=-=- CMPXCHG -=-=-=-=-=-=-=-=-=-= */
 
+      case 0xC0: /* XADD Gb,Eb */
+         eip = dis_xadd_G_E ( cb, sorb, 1, eip );
+         break;
       case 0xC1: /* XADD Gv,Ev */
          eip = dis_xadd_G_E ( cb, sorb, sz, eip );
          break;
index 58e70def3494b49b35c8ccb7338c8a177b2aa99a..faaf8776ba614b1c09909dd7d13e495e6de7a34e 100644 (file)
@@ -567,7 +567,7 @@ Bool VG_(saneUInstr) ( Bool beforeRA, Bool beforeLiveness, UInstr* u )
    /* Fields checked:        lit32   size  flags_r/w tag1   tag2   tag3    (rest) */
    case SSE2a_MemWr:  return LIT0 && SZsse2 && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
    case SSE2a_MemRd:  return LIT0 && SZsse2 && CCa  && Ls1 && Ls2 && TR3 && XOTHER;
-   case SSE2a1_MemRd: return LIT0 && SZ416  && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
+   case SSE2a1_MemRd: return LIT0 && SZsse3 && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
    case SSE2g_RegWr:  return LIT0 && SZ4    && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
    case SSE2g1_RegWr: return LIT8 && SZ4    && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
    case SSE2e1_RegRd: return LIT8 && SZ2    && CC0  && Ls1 && Ls2 && TR3 && XOTHER;
index dd61569fb6ce1e1c78b4167e088b776cdddf86da..c294a45680a3f8990eab5f1b6deac228c410f23c 100644 (file)
@@ -931,6 +931,7 @@ typedef UChar FlagSet;
 #define FlagsOSACP  (FlagO | FlagS |         FlagA | FlagC | FlagP)
 #define FlagsSZACP  (        FlagS | FlagZ | FlagA | FlagC | FlagP)
 #define FlagsSZAP   (        FlagS | FlagZ | FlagA |         FlagP)
+#define FlagsSZP    (        FlagS | FlagZ |                 FlagP)
 #define FlagsZCP    (                FlagZ         | FlagC | FlagP)
 #define FlagsOC     (FlagO |                         FlagC        )
 #define FlagsAC     (                        FlagA | FlagC        )
@@ -1185,6 +1186,7 @@ extern Int VGOFF_(helper_get_dirflag);
 
 extern Int VGOFF_(helper_CLC);
 extern Int VGOFF_(helper_STC);
+extern Int VGOFF_(helper_CMC);
 
 extern Int VGOFF_(helper_shldl);
 extern Int VGOFF_(helper_shldw);
@@ -1197,14 +1199,20 @@ extern Int VGOFF_(helper_CPUID);
 extern Int VGOFF_(helper_IN);
 extern Int VGOFF_(helper_OUT);
 
-extern Int VGOFF_(helper_bsf);
-extern Int VGOFF_(helper_bsr);
+extern Int VGOFF_(helper_bsfw);
+extern Int VGOFF_(helper_bsfl);
+extern Int VGOFF_(helper_bsrw);
+extern Int VGOFF_(helper_bsrl);
 
 extern Int VGOFF_(helper_fstsw_AX);
 extern Int VGOFF_(helper_SAHF);
 extern Int VGOFF_(helper_LAHF);
 extern Int VGOFF_(helper_DAS);
 extern Int VGOFF_(helper_DAA);
+extern Int VGOFF_(helper_AAS);
+extern Int VGOFF_(helper_AAA);
+extern Int VGOFF_(helper_AAD);
+extern Int VGOFF_(helper_AAM);
 
 extern Int VGOFF_(helper_cmpxchg8b);
 
index 8f24e2af8302064b7ba515a3698915c650b9d607..fc62ba91e1f6cd3ce64329493ba30216f4c0fa3f 100644 (file)
@@ -718,9 +718,9 @@ static UCodeBlock* memcheck_instrument ( UCodeBlock* cb_in )
                Noticed by Kevin Ryde <user42@zip.com.au>
             */
            /* sk_assert(u_in->flags_w != FlagsEmpty); */
-            qs = getOperandShadow(cb, u_in->size, u_in->tag1, u_in->val1);
+            qs = getOperandShadow(cb, 1, u_in->tag1, u_in->val1);
             /* We can safely modify qs; cast it to 0-size. */
-            create_PCast(cb, u_in->size, 0, qs);
+            create_PCast(cb, 1, 0, qs);
             qd = SHADOW(u_in->val2);
             create_PCast(cb, u_in->size, 0, qd);
             /* qs is cast-to-0(shift count#), and qd is cast-to-0(value#). */
@@ -1086,7 +1086,7 @@ static UCodeBlock* memcheck_instrument ( UCodeBlock* cb_in )
          case SSE3e1_RegRd:
             sk_assert(u_in->tag3 == TempReg);
 
-            if (u_in->opcode == SSE3e1_RegRd) {
+            if (u_in->opcode == SSE2e1_RegRd || u_in->opcode == SSE3e1_RegRd) {
                sk_assert(u_in->size == 2);
             } else {
                sk_assert(u_in->size == 4);
@@ -1111,7 +1111,8 @@ static UCodeBlock* memcheck_instrument ( UCodeBlock* cb_in )
          case SSE3a_MemWr:
          case SSE2a_MemWr:
          case SSE2a_MemRd:
-         case SSE3a1_MemRd: { 
+         case SSE3a1_MemRd:
+         case SSE2a1_MemRd: { 
             Bool is_load;
             Int t_size;
 
@@ -1121,6 +1122,7 @@ static UCodeBlock* memcheck_instrument ( UCodeBlock* cb_in )
             t_size = INVALID_TEMPREG;
             is_load = u_in->opcode==SSE2a_MemRd 
                       || u_in->opcode==SSE3a_MemRd
+                      || u_in->opcode==SSE2a1_MemRd
                       || u_in->opcode==SSE3a1_MemRd;
 
             sk_assert(u_in->tag3 == TempReg);
index 1e503c131cb07ba01d9fdb8c6dea2b8bc855f6e9..3821150c553b162c2c899ca2173a07326b15e276 100644 (file)
@@ -24,7 +24,10 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
        fpu_lazy_eflags.vgtest \
        fucomip.stderr.exp fucomip.vgtest \
        gxx304.stderr.exp gxx304.vgtest \
+       insn_basic.stderr.exp insn_basic.stdout.exp insn_basic.vgtest \
+       insn_cmov.stderr.exp insn_cmov.stdout.exp insn_cmov.vgtest \
        insn_mmx.stderr.exp insn_mmx.stdout.exp insn_mmx.vgtest \
+       insn_mmxext.stderr.exp insn_mmxext.stdout.exp insn_mmxext.vgtest \
        insn_sse.stderr.exp insn_sse.stdout.exp insn_sse.vgtest \
        insn_sse2.stderr.exp insn_sse2.stdout.exp insn_sse2.vgtest \
        map_unmap.stdout.exp map_unmap.vgtest \
@@ -51,7 +54,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
 check_PROGRAMS = \
        args bitfield1 bt_everything bt_literal coolo_strlen \
        cpuid dastest discard exec-sigmask floored fork fpu_lazy_eflags \
-       fucomip insn_mmx insn_sse insn_sse2 \
+       fucomip insn_basic insn_cmov insn_mmx insn_mmxext insn_sse insn_sse2 \
        munmap_exe map_unmap mremap rcl_assert \
        rcrl readline1 resolv seg_override sha1_test shortpush shorts smc1 \
        tls.so tls2.so tls pth_blockedsig \
@@ -76,8 +79,14 @@ floored_SOURCES      = floored.c
 floored_LDADD          = -lm
 fpu_lazy_eflags_SOURCES        = fpu_lazy_eflags.c
 fucomip_SOURCES        = fucomip.c
+insn_basic_SOURCES     = insn_basic.def
+insn_basic_LDADD       = -lm
+insn_cmov_SOURCES      = insn_cmov.def
+insn_cmov_LDADD                = -lm
 insn_mmx_SOURCES       = insn_mmx.def
 insn_mmx_LDADD         = -lm
+insn_mmxext_SOURCES    = insn_mmxext.def
+insn_mmxext_LDADD      = -lm
 insn_sse_SOURCES       = insn_sse.def
 insn_sse_LDADD         = -lm
 insn_sse2_SOURCES      = insn_sse2.def
@@ -122,5 +131,13 @@ gxx304_SOURCES             = gxx304.cpp
 # must be built with these flags -- bug only occurred with them
 fpu_lazy_eflags.o: CFLAGS += -O2 -mcpu=pentiumpro -march=pentiumpro
 
+# rebuild instruction tests if test generator changes
+insn_basic.c: gen_insn_test.pl
+insn_cmov.c: gen_insn_test.pl
+insn_mmx.c: gen_insn_test.pl
+insn_mmxext.c: gen_insn_test.pl
+insn_sse.c: gen_insn_test.pl
+insn_sse2.c: gen_insn_test.pl
+
 .def.c:
        $(PERL) gen_insn_test.pl < $< > $@
index 42f902b3d9628ae324d044e58c7194a78079aa83..363e71b8778fe8ffafd7dcae82c3018b06bf38ea 100644 (file)
@@ -4,13 +4,17 @@ use strict;
 use warnings;
 
 our %ArgTypes = (
-                 r => "reg_t",
+                 r8 => "reg8_t",
+                 r16 => "reg16_t",
+                 r32 => "reg32_t",
                  mm => "mm_reg_t",
                  xmm => "xmm_reg_t",
-                 m32 => "reg_t",
+                 m8 => "reg8_t",
+                 m16 => "reg16_t",
+                 m32 => "reg32_t",
                  m64 => "mm_reg_t",
                  m128 => "xmm_reg_t",
-                 eflags => "reg_t"
+                 eflags => "reg32_t"
                  );
 
 our %SubTypeFormats = (
@@ -39,7 +43,34 @@ our %SubTypeSuffixes = (
                         pd => ""
                         );
 
-our @IntRegs = ( "eax", "ebx", "ecx", "edx" );
+our %RegNums = (
+                al => 0, ax => 0, eax => 0,
+                bl => 1, bx => 1, ebx => 1,
+                cl => 2, cx => 2, ecx => 2,
+                dl => 3, dx => 3, edx => 3,
+                ah => 4,
+                bh => 5,
+                ch => 6,
+                dh => 7
+                );
+
+our %RegTypes = (
+                 al => "r8", ah => "r8", ax => "r16", eax => "r32",
+                 bl => "r8", bh => "r8", bx => "r16", ebx => "r32",
+                 cl => "r8", ch => "r8", cx => "r16", ecx => "r32",
+                 dl => "r8", dh => "r8", dx => "r16", edx => "r32"
+                 );
+
+our @IntRegs = (
+                { r8 => "al", r16 => "ax", r32 => "eax" },
+                { r8 => "bl", r16 => "bx", r32 => "ebx" },
+                { r8 => "cl", r16 => "cx", r32 => "ecx" },
+                { r8 => "dl", r16 => "dx", r32 => "edx" },
+                { r8 => "ah" },
+                { r8 => "bh" },
+                { r8 => "ch" },
+                { r8 => "dh" }
+                );
 
 print <<EOF;
 #include <math.h>
@@ -49,10 +80,26 @@ print <<EOF;
 #include <stdlib.h>
 
 typedef union {
+  char sb[1];
+  unsigned char ub[1];
+} reg8_t;
+
+typedef union {
+  char sb[2];
+  unsigned char ub[2];
+  short sw[1];
+  unsigned short uw[1];
+} reg16_t;
+
+typedef union {
+  char sb[4];
+  unsigned char ub[4];
+  short sw[2];
+  unsigned short uw[2];
   long int sd[1];
   unsigned long int ud[1];
   float ps[1];
-} reg_t;
+} reg32_t;
 
 typedef union {
   char sb[8];
@@ -106,9 +153,22 @@ while (<>)
 {
     next if /^#/;
 
-    my @args = split(/\s+/, $_);
-    my $insn = shift @args;
-    my $result = pop @args;
+    my $insn;
+    my $presets;
+    my $args;
+    my $results;
+
+    if (/^(\S+)\s+(?:(\S+(?:\s+\S+)*)\s+:\s+)?((?:\S+\s+)*)=>\s+(\S+(?:\s+\S+)*)$/)
+    {
+        $insn = $1;
+        $presets = $2 || "";
+        $args = $3;
+        $results = $4;
+    }
+    else
+    {
+        die "Can't parse test $_";
+    }
     
     $tests{$insn}++;
     
@@ -119,25 +179,103 @@ while (<>)
     print qq|static void $test(void)\n|;
     print qq|\{\n|;
 
-    my $argc = 0;
-    my @argtypes;
-    my @argsubtypes;
-    my @argindexes;
-    my @argvalues;
+    my @intregs = @IntRegs;
+    my @mmregs = map { "mm$_" } (0 .. 7);
+    my @xmmregs = map { "xmm$_" } (0 .. 7);
+
+    my @presets;
+    my $presetc = 0;
+    my $eflagsmask;
+    my $eflagsset;
     
-    foreach my $arg (@args)
+    foreach my $preset (split(/\s+/, $presets))
+    {
+        if ($preset =~ /^([abcd][lh]|[abcd]x|e[abcd]x)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
+        {
+            my $name = "preset$presetc";
+            my $type = $RegTypes{$1};
+            my $regnum = $RegNums{$1};
+            my $register = $intregs[$regnum];
+            my $subtype = $2;
+            my @values = split(/,/, $3);
+    
+            die "Register $1 already used" unless defined($register);
+
+            my $preset = {
+                name => $name,
+                type => $type,
+                subtype => $subtype,
+                register => $register
+            };
+
+            delete($intregs[$regnum]);
+
+            push @presets, $preset;
+            
+            print qq|   $ArgTypes{$type} $name = \{|;
+            
+            my $valuec = 0;
+            
+            foreach my $value (@values)
     {
-        if ($arg =~ /^(r|mm|xmm|m32|m64|m128)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
+                print qq|,| if $valuec > 0;
+                print qq| .$subtype\[$valuec\] = $value$SubTypeSuffixes{$subtype}|;
+                $valuec++;
+            }
+            
+            print qq| \};\n|;
+
+            $presetc++;
+        }
+        elsif ($preset =~ /^(eflags)\[([^\]]+)\]$/)
         {
             my $type = $1;
+            my @values = split(/,/, $2);
+
+            $values[0] = oct($values[0]) if $values[0] =~ /^0/;
+            $values[1] = oct($values[1]) if $values[1] =~ /^0/;
+
+            $eflagsmask = sprintf "0x%x", ~$values[0];
+            $eflagsset = sprintf "0x%x", $values[1];
+        }
+        else
+        {
+            die "Can't parse preset $preset";
+        }
+    }
+
+    my @args;
+    my $argc = 0;
+    
+    foreach my $arg (split(/\s+/, $args))
+    {
+        my $name = "arg$argc";
+
+        if ($arg =~ /^([abcd]l|[abcd]x|e[abcd]x|r8|r16|r32|mm|xmm|m8|m16|m32|m64|m128)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
+        {
+            my $type = $RegTypes{$1} || $1;
+            my $regnum = $RegNums{$1};
+            my $register = $intregs[$regnum] if defined($regnum);
             my $subtype = $2;
             my @values = split(/,/, $3);
             
-            push @argtypes, $type;
-            push @argsubtypes, $subtype;
-            push @argvalues, undef;
+            die "Register $1 already used" if defined($regnum) && !defined($register);
+
+            my $arg = {
+                name => $name,
+                type => $type,
+                subtype => $subtype
+            };
+
+            if (defined($register))
+            {
+                $arg->{register} = $register;
+                delete($intregs[$regnum]);
+            }
 
-            print qq|   $ArgTypes{$type} arg$argc = \{|;
+            push @args, $arg;
+            
+            print qq|   $ArgTypes{$type} $name = \{|;
             
             my $valuec = 0;
             
@@ -150,14 +288,17 @@ while (<>)
 
             print qq| \};\n|;
         }
-        elsif ($arg =~ /^(imm8)\[([^\]]+)\]$/)
+        elsif ($arg =~ /^(imm8|imm16|imm32)\[([^\]]+)\]$/)
         {
             my $type = $1;
             my $value = $2;
             
-            push @argtypes, $type;
-            push @argsubtypes, undef;
-            push @argvalues, $value;
+            my $arg = {
+                type => $type,
+                value => $value
+            };
+
+            push @args, $arg;
         }
         else
         {
@@ -167,31 +308,111 @@ while (<>)
         $argc++;
     }
     
-    my $resultarg;
-    my $resulttype;
-    my $resultsubtype;
-    my @resultvalues;
+    foreach my $arg (@presets, @args)
+    {
+        if ($arg->{type} =~ /^(r8|r16|r32|m8|m16|m32)$/)
+        {
+            while (!exists($arg->{register}) || !defined($arg->{register}))
+            {
+                $arg->{register} = shift @intregs;
+            }
+
+            $arg->{register} = $arg->{register}->{$arg->{type}};
+        }
+        elsif ($arg->{type} =~ /^(mm|m64)$/)
+        {
+            $arg->{register} = shift @mmregs;
+        }
+        elsif ($arg->{type} =~ /^(xmm|m128)$/)
+        {
+            $arg->{register} = shift @xmmregs;
+        }
+    }
+
+    my @results;
+    my $resultc = 0;
+    
+    foreach my $result (split(/\s+/, $results))
+    {
+        my $name = "result$resultc";
     
     if ($result =~ /^(\d+)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
     {
-        $resultarg = $1;
-        $resulttype = $argtypes[$resultarg];
-        $resultsubtype = $2;
-        @resultvalues = split(/,/, $3);
+            my $index = $1;
+            my $type = $args[$index]->{type};
+            my $subtype = $2;
+            my @values = split(/,/, $3);
+            
+            die "Argument $index not specified" unless exists($args[$index]);
+
+            my $result = {
+                name => $name,
+                type => $type,
+                subtype => $subtype,
+                arg => $args[$index],
+                register => $args[$index]->{register},
+                values => [ @values ]
+            };
+
+            push @results, $result;
+
+            print qq|   $ArgTypes{$type} $name|;
+            print qq| = arg$index| if $type =~ /^m(8|16|32|64|128)$/;
+            print qq|;\n|;
+
+            $args[$index]->{result} = $result;
+        }
+        elsif ($result =~ /^([abcd][lh]|[abcd]x|e[abcd]x)\.(sb|ub|sw|uw|sd|ud|sq|uq|ps|pd)\[([^\]]+)\]$/)
+        {
+            my $register = $1;
+            my $type = $RegTypes{$register};
+            my $subtype = $2;
+            my @values = split(/,/, $3);
+                        
+            my $result = {
+                name => $name,
+                type => $type,
+                subtype => $subtype,
+                register => $register,
+                values => [ @values ]
+            };
+
+            push @results, $result;
+
+            print qq|   $ArgTypes{$type} $name;\n|;
     }
     elsif ($result =~ /^eflags\[([^\]]+)\]$/)
     {
-        $resultarg = -1;
-        $resulttype = "eflags";
-        $resultsubtype = "ud";
-        @resultvalues = split(/,/, $1);
+            my @values = split(/,/, $1);
+
+            $values[0] = oct($values[0]) if $values[0] =~ /^0/;
+            $values[1] = oct($values[1]) if $values[1] =~ /^0/;
+
+            my $result = {
+                name => $name,
+                type => "eflags",
+                subtype => "ud",
+                values => [ map { sprintf "0x%x", $_ } @values ]
+            };
+
+            push @results, $result;
+            
+            print qq|   $ArgTypes{eflags} $name;\n|;
+
+            if (!defined($eflagsmask) && !defined($eflagsset))
+            {
+                $eflagsmask = sprintf "0x%x", ~$values[0];
+                $eflagsset = sprintf "0x%x", $values[0] & ~$values[1];
+            }
     }
     else
     {
         die "Can't parse result $result";
     }
     
-    print qq|   $ArgTypes{$resulttype} result;\n|;
+        $resultc++;
+    }
+    
     print qq|   char state\[108\];\n|;
     print qq|\n|;
     print qq|   if (sigsetjmp(catchpoint, 1) == 0)\n|;
@@ -199,73 +420,65 @@ while (<>)
     print qq|      asm\(\n|;
     print qq|         \"fsave %\[state\]\\n\"\n|;
     
-    foreach my $arg (0 .. $#args)
+    foreach my $arg (@presets, @args)
     {
-        if ($argtypes[$arg] eq "r")
+        if ($arg->{type} eq "r8")
         {
-            print qq|         \"movl %\[arg$arg\], %%$IntRegs[$arg]\\n\"\n|;
+            print qq|         \"movb %\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
         }
-        elsif ($argtypes[$arg] eq "mm")
+        elsif ($arg->{type} eq "r16")
         {
-            print qq|         \"movq %\[arg$arg\], %%mm$arg\\n\"\n|;
+            print qq|         \"movw %\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
         }
-        elsif ($argtypes[$arg] eq "xmm")
+        elsif ($arg->{type} eq "r32")
         {
-            print qq|         \"movlps 0%\[arg$arg\], %%xmm$arg\\n\"\n|;
-            print qq|         \"movhps 8%\[arg$arg\], %%xmm$arg\\n\"\n|;
+            print qq|         \"movl %\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
         }
-    }
-    
-    if ($resulttype eq "m32")
+        elsif ($arg->{type} eq "mm")
     {
-        print qq|         \"movl %\[arg$resultarg\], %%$IntRegs[$resultarg]\\n\"\n|;
-        print qq|         \"movl %%$IntRegs[$resultarg], %\[result\]\\n\"\n|;
+            print qq|         \"movq %\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
     }
-    elsif ($resulttype eq "m64")
+        elsif ($arg->{type} eq "xmm")
     {
-        print qq|         \"movq %\[arg$resultarg\], %%mm$resultarg\\n\"\n|;
-        print qq|         \"movq %%mm$resultarg, %\[result\]\\n\"\n|;
+            print qq|         \"movlps 0%\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
+            print qq|         \"movhps 8%\[$arg->{name}\], %%$arg->{register}\\n\"\n|;
+    }
     }
-    elsif ($resulttype eq "m128")
+    
+    if (defined($eflagsmask) || defined($eflagsset))
     {
-        print qq|         \"movlps 0%\[arg$resultarg\], %%xmm$resultarg\\n\"\n|;
-        print qq|         \"movhps 8%\[arg$resultarg\], %%xmm$resultarg\\n\"\n|;
-        print qq|         \"movlps %%xmm$resultarg, 0%\[result\]\\n\"\n|;
-        print qq|         \"movhps %%xmm$resultarg, 8%\[result\]\\n\"\n|;
+        print qq|         \"pushfl\\n\"\n|;
+        print qq|         \"andl \$$eflagsmask, (%%esp)\\n\"\n| if defined($eflagsmask);
+        print qq|         \"orl \$$eflagsset, (%%esp)\\n\"\n| if defined($eflagsset);
+        print qq|         \"popfl\\n\"\n|;
     }
 
     print qq|         \"$insn|;
     
     my $prefix = " ";
     
-    foreach my $arg (0 .. $#args)
-    {
-        if ($argtypes[$arg] eq "r")
-        {
-            print qq|$prefix%%$IntRegs[$arg]|;
-        }
-        elsif ($argtypes[$arg] eq "mm")
+    foreach my $arg (@args)
         {
-            print qq|$prefix%%mm$arg|;
-        }
-        elsif ($argtypes[$arg] eq "xmm")
+        next if $arg->{type} eq "eflags";
+
+        if ($arg->{type} =~ /^(r8|r16|r32|mm|xmm)$/)
         {
-            print qq|$prefix%%xmm$arg|;
+            print qq|$prefix%%$arg->{register}|;
         }
-        elsif ($argtypes[$arg] eq "m32" || $argtypes[$arg] eq "m64" || $argtypes[$arg] eq "m128")
+        elsif ($arg->{type} =~ /^(m(8|16|32|64|128))$/)
         {
-            if ($arg == $resultarg)
+            if (exists($arg->{result}))
             {
-                print qq|$prefix%\[result\]|;
+                print qq|$prefix%\[$arg->{result}->{name}\]|;
             }
             else
             {
-                print qq|$prefix%\[arg$arg\]|;
+                print qq|$prefix%\[$arg->{name}\]|;
             }
         }
-        elsif ($argtypes[$arg] eq "imm8")
+        elsif ($arg->{type} =~ /^imm(8|16|32)$/)
         {
-            print qq|$prefix\$$argvalues[$arg]|;
+            print qq|$prefix\$$arg->{value}|;
         }
 
         $prefix = ", ";
@@ -273,77 +486,82 @@ while (<>)
 
     print qq|\\n\"\n|;
 
-    if ($resulttype eq "r")
+    foreach my $result (@results)
     {
-        print qq|         \"movl %%$IntRegs[$resultarg], %\[result\]\\n\"\n|;
+        if ($result->{type} eq "r8")
+        {
+            print qq|         \"movb %%$result->{register}, %\[$result->{name}\]\\n\"\n|;
+        }
+        elsif ($result->{type} eq "r16")
+    {
+            print qq|         \"movw %%$result->{register}, %\[$result->{name}\]\\n\"\n|;
     }
-    elsif ($resulttype eq "mm")
+        elsif ($result->{type} eq "r32")
     {
-        print qq|         \"movq %%mm$resultarg, %\[result\]\\n\"\n|;
+            print qq|         \"movl %%$result->{register}, %\[$result->{name}\]\\n\"\n|;
     }
-    elsif ($resulttype eq "xmm")
+        elsif ($result->{type} eq "mm")
     {
-        print qq|         \"movlps %%xmm$resultarg, 0%\[result\]\\n\"\n|;
-        print qq|         \"movhps %%xmm$resultarg, 8%\[result\]\\n\"\n|;
+            print qq|         \"movq %%$result->{register}, %\[$result->{name}\]\\n\"\n|;
     }
-    elsif ($resulttype eq "eflags")
+        elsif ($result->{type} eq "xmm")
+        {
+            print qq|         \"movlps %%$result->{register}, 0%\[$result->{name}\]\\n\"\n|;
+            print qq|         \"movhps %%$result->{register}, 8%\[$result->{name}\]\\n\"\n|;
+        }
+        elsif ($result->{type} eq "eflags")
     {
         print qq|         \"pushfl\\n\"\n|;
-        print qq|         \"popl %\[result\]\\n\"\n|;
+            print qq|         \"popl %\[$result->{name}\]\\n\"\n|;
+        }
     }
 
-    print qq|         \"emms\\n\"\n|;
     print qq|         \"frstor %\[state\]\\n\"\n|;
 
     print qq|         :|;
 
-    if ($resulttype eq "m32" || $resulttype eq "m64" || 
-        $resulttype eq "m128" || $resulttype eq "eflags")
+    $prefix = " ";
+
+    foreach my $result (@results)
+    {
+        if ($result->{type} =~ /^(m(8|16|32|64|128)|eflags)$/)
     {
-        print qq| \[result\] \"=m\" \(result\)|;
+            print qq|$prefix\[$result->{name}\] \"=m\" \($result->{name}\)|;
+            $prefix = ", ";
+        }
     }
 
     print qq|\n|;
     
     $prefix = "         : ";
     
-    foreach my $arg (0 .. $#args)
+    foreach my $arg (@presets, @args)
     {
-        if (!defined($argvalues[$arg]))
+        if (defined($arg->{name}))
         {
-            print qq|$prefix\[arg$arg\] \"m\" \(arg$arg\)|;
+            print qq|$prefix\[$arg->{name}\] \"m\" \($arg->{name}\)|;
             $prefix = ", ";
         }
     }
     
-    if ($resulttype eq "r" || $resulttype eq "mm" ||
-        $resulttype eq "xmm" || $resulttype eq "elags")
+    foreach my $result (@results)
     {
-        print qq|$prefix\[result\] \"m\" \(result\)|;
+        if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
+        {
+            print qq|$prefix\[$result->{name}\] \"m\" \($result->{name}\)|;
+            $prefix = ", ";
+        }
     }
 
-    print qq|\[state\] \"m\" \(state[0]\)\n|;
+    print qq|$prefix\[state\] \"m\" \(state[0]\)\n|;
 
     $prefix = "         : ";
 
-    foreach my $arg (0 .. $#args)
-    {
-        if ($argtypes[$arg] eq "r" ||
-            ($arg == $resultarg && $argtypes[$arg] eq "m32"))
-        {
-            print qq|$prefix\"$IntRegs[$arg]\"|;
-            $prefix = ", ";
-        }
-        elsif ($argtypes[$arg] eq "mm" ||
-               ($arg == $resultarg && $argtypes[$arg] eq "m64"))
+    foreach my $arg (@presets, @args)
         {
-            print qq|$prefix\"mm$arg\"|;
-            $prefix = ", ";
-        }
-        elsif ($argtypes[$arg] eq "xmm" ||
-               ($arg == $resultarg && $argtypes[$arg] eq "m128"))
+        if ($arg->{register})
         {
-            print qq|$prefix\"xmm$arg\"|;
+            print qq|$prefix\"$arg->{register}\"|;
             $prefix = ", ";
         }
     }
@@ -355,33 +573,43 @@ while (<>)
     
     print qq|      if \(|;
     
-    if ($resulttype eq "eflags")
+    $prefix = "";
+            
+    foreach my $result (@results)
     {
-        print qq|\(result.ud[0] & $resultvalues[0]UL\) == $resultvalues[1]UL|;
+        my $type = $result->{type};
+        my $subtype = $result->{subtype};
+        my $suffix = $SubTypeSuffixes{$subtype};
+        my @values = @{$result->{values}};
+
+        if ($type eq "eflags")
+    {
+            print qq|${prefix}\($result->{name}.ud[0] & $values[0]UL\) == $values[1]UL|;
     }
     else
     {
-        $prefix = " ";
-    
-        foreach my $value (0 .. $#resultvalues)
+            foreach my $value (0 .. $#values)
         {
-            if ($resultsubtype eq "ps")
+                if ($subtype eq "ps")
             {
-                print qq|${prefix}eq_float(result.$resultsubtype\[$value\], $resultvalues[$value]$SubTypeSuffixes{$resultsubtype})|;
+                    print qq|${prefix}eq_float($result->{name}.$subtype\[$value\], $values[$value]$suffix)|;
             }
-            elsif ($resultsubtype eq "pd")
+                elsif ($subtype eq "pd")
             {
-                print qq|${prefix}eq_double(result.$resultsubtype\[$value\], $resultvalues[$value]$SubTypeSuffixes{$resultsubtype})|;
+                    print qq|${prefix}eq_double($result->{name}.$subtype\[$value\], $values[$value]$suffix)|;
             }
             else
             {
-                print qq|${prefix}result.$resultsubtype\[$value\] == $resultvalues[$value]$SubTypeSuffixes{$resultsubtype}|;
+                    print qq|${prefix}$result->{name}.$subtype\[$value\] == $values[$value]$suffix|;
             }
 
             $prefix = " && ";
         }
     }
     
+        $prefix = " &&\n          ";
+    }
+    
     print qq| \)\n|;
     print qq|      \{\n|;
     print qq|         printf("$test ... ok\\n");\n|;
@@ -390,15 +618,23 @@ while (<>)
     print qq|      \{\n|;
     print qq|         printf("$test ... not ok\\n");\n|;
     
-    if ($resulttype eq "eflags")
+    foreach my $result (@results)
+    {
+        my $type = $result->{type};
+        my $subtype = $result->{subtype};
+        my $suffix = $SubTypeSuffixes{$subtype};
+        my @values = @{$result->{values}};
+
+        if ($type eq "eflags")
     {
-        print qq|         printf("  eflags & 0x%lx = 0x%lx (expected 0x%lx)\\n", $resultvalues[0]UL, result.ud\[0\] & $resultvalues[0]UL, $resultvalues[1]UL);\n|;
+            print qq|         printf("  eflags & 0x%lx = 0x%lx (expected 0x%lx)\\n", $values[0]UL, $result->{name}.ud\[0\] & $values[0]UL, $values[1]UL);\n|;
     }
     else
     {
-        foreach my $value (0 .. $#resultvalues)
+            foreach my $value (0 .. $#values)
         {
-            print qq|         printf("  $resultsubtype\[$value\] = $SubTypeFormats{$resultsubtype} (expected $SubTypeFormats{$resultsubtype})\\n", result.$resultsubtype\[$value\], $resultvalues[$value]$SubTypeSuffixes{$resultsubtype});\n|;
+                print qq|         printf("  $result->{name}.$subtype\[$value\] = $SubTypeFormats{$subtype} (expected $SubTypeFormats{$subtype})\\n", $result->{name}.$subtype\[$value\], $values[$value]$suffix);\n|;
+            }
         }
     }
 
index a0b1c4abaf67e700ec961860901631da97de461f..7f6c7fb387799055915c50c434e8cf8aa569cf54 100644 (file)
-movd r.sd[1234] mm.sd[1111,2222] 1.sd[1234,0]
-movd m32.sd[1234] mm.sd[1111,2222] 1.sd[1234,0]
-movd mm.sd[1234,2222] r.sd[1111] 1.sd[1234]
-movd mm.sd[1234,2222] m32.sd[1111] 1.sd[1234]
-movq mm.uq[0x012345678abcdef] mm.uq[0x1212121234343434] 1.uq[0x012345678abcdef]
-movq m64.uq[0x012345678abcdef] mm.uq[0x1212121234343434] 1.uq[0x012345678abcdef]
-movq mm.uq[0x012345678abcdef] m64.uq[0x1212121234343434] 1.uq[0x012345678abcdef]
-packssdw mm.sd[12345,123456] mm.sd[-12345,-123456] 1.sw[-12345,-32768,12345,32767]
-packssdw m64.sd[12345,123456] mm.sd[-12345,-123456] 1.sw[-12345,-32768,12345,32767]
-packsswb mm.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] 1.sb[21,-21,127,-128,123,-123,127,-128]
-packsswb m64.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] 1.sb[21,-21,127,-128,123,-123,127,-128]
-packuswb mm.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] 1.ub[21,0,255,0,123,0,255,0]
-packuswb m64.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] 1.ub[21,0,255,0,123,0,255,0]
-paddb mm.sb[12,34,56,78,21,43,65,87] mm.sb[8,7,6,5,4,3,2,1] 1.sb[20,41,62,83,25,46,67,88]
-paddb m64.sb[12,34,56,78,21,43,65,87] mm.sb[8,7,6,5,4,3,2,1] 1.sb[20,41,62,83,25,46,67,88]
-paddd mm.sd[12345678,87654321] mm.sd[8765,4321] 1.sd[12354443,87658642]
-paddd m64.sd[12345678,87654321] mm.sd[8765,4321] 1.sd[12354443,87658642]
-paddsb mm.sb[25,-25,50,-50,100,-100,125,-125] mm.sb[40,-40,30,-30,20,-20,10,-10] 1.sb[65,-65,80,-80,120,-120,127,-128]
-paddsb m64.sb[25,-25,50,-50,100,-100,125,-125] mm.sb[40,-40,30,-30,20,-20,10,-10] 1.sb[65,-65,80,-80,120,-120,127,-128]
-paddsw mm.sw[12345,-12345,32145,-32145] mm.sw[32145,-32145,-12345,12345] 1.sw[32767,-32768,19800,-19800]
-paddsw m64.sw[12345,-12345,32145,-32145] mm.sw[32145,-32145,-12345,12345] 1.sw[32767,-32768,19800,-19800]
-paddusb mm.ub[25,50,75,100,125,150,175,200] mm.ub[10,20,30,40,50,60,70,80] 1.ub[35,70,105,140,175,210,245,255]
-paddusb m64.ub[25,50,75,100,125,150,175,200] mm.ub[10,20,30,40,50,60,70,80] 1.ub[35,70,105,140,175,210,245,255]
-paddusw mm.uw[22222,33333,44444,55555] mm.uw[6666,7777,8888,9999] 1.uw[28888,41110,53332,65535]
-paddusw m64.uw[22222,33333,44444,55555] mm.uw[6666,7777,8888,9999] 1.uw[28888,41110,53332,65535]
-paddw mm.sw[1234,5678,4321,8765] mm.sw[87,65,43,21] 1.sw[1321,5743,4364,8786]
-paddw m64.sw[1234,5678,4321,8765] mm.sw[87,65,43,21] 1.sw[1321,5743,4364,8786]
-pand mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0x0121452188a84420]
-pand m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0x0121452188a84420]
-pandn mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfc98301064002000]
-pandn m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfc98301064002000]
-pcmpeqb mm.ub[11,22,33,44,55,66,77,88] mm.ub[11,11,33,33,55,55,77,77] 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
-pcmpeqb m64.ub[11,22,33,44,55,66,77,88] mm.ub[11,11,33,33,55,55,77,77] 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
-pcmpeqd mm.ud[11223344,55667788] mm.ud[11223344,11223344] 1.ud[0xffffffff,0x00000000]
-pcmpeqd m64.ud[11223344,55667788] mm.ud[11223344,11223344] 1.ud[0xffffffff,0x00000000]
-pcmpeqw mm.uw[1122,3344,5566,7788] mm.uw[1122,1122,5566,5566] 1.uw[0xffff,0x0000,0xffff,0x0000]
-pcmpeqw m64.uw[1122,3344,5566,7788] mm.uw[1122,1122,5566,5566] 1.uw[0xffff,0x0000,0xffff,0x0000]
-pcmpgtb mm.sb[-77,-55,-33,-11,11,33,55,77] mm.sb[77,55,33,11,-11,-33,-55,-77] 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
-pcmpgtb m64.sb[-77,-55,-33,-11,11,33,55,77] mm.sb[77,55,33,11,-11,-33,-55,-77] 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
-pcmpgtd mm.sd[-11111111,11111111] mm.sd[11111111,-11111111] 1.ud[0xffffffff,0x00000000]
-pcmpgtd m64.sd[-11111111,11111111] mm.sd[11111111,-11111111] 1.ud[0xffffffff,0x00000000]
-pcmpgtw mm.sw[-3333,-1111,1111,3333] mm.sw[3333,1111,-1111,-3333] 1.uw[0xffff,0xffff,0x0000,0x0000]
-pcmpgtw m64.sw[-3333,-1111,1111,3333] mm.sw[3333,1111,-1111,-3333] 1.uw[0xffff,0xffff,0x0000,0x0000]
-pmaddwd mm.sw[1234,5678,-4321,-8765] mm.sw[1111,-2222,3333,-4444] 1.sd[-11245542,24549767]
-pmaddwd m64.sw[1234,5678,-4321,-8765] mm.sw[1111,-2222,3333,-4444] 1.sd[-11245542,24549767]
-pmulhw mm.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] 1.uw[0x0038,0xff69,0xffc7,0x0096]
-pmulhw m64.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] 1.uw[0x0038,0xff69,0xffc7,0x0096]
-pmullw mm.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] 1.uw[0x80b3,0x5378,0x7f4d,0xac88]
-pmullw m64.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] 1.uw[0x80b3,0x5378,0x7f4d,0xac88]
-por mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfdbb7577edabedef]
-por m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfdbb7577edabedef]
-pslld imm8[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0]
-pslld mm.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0]
-pslld m64.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0]
-psllq imm8[4] mm.uq[0x0123456789abcdef] 1.uq[0x123456789abcdef0]
-psllq mm.uq[4] mm.uq[0x0123456789abcdef] 1.uq[0x123456789abcdef0]
-psllq m64.uq[4] mm.uq[0x0123456789abcdef] 1.uq[0x123456789abcdef0]
-psllw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
-psllw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
-psllw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
-psrad imm8[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde]
-psrad mm.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde]
-psrad m64.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde]
-psraw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde]
-psraw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde]
-psraw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde]
-psrld imm8[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde]
-psrld mm.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde]
-psrld m64.uq[4] mm.ud[0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde]
-psrlq imm8[4] mm.uq[0x0123456789abcdef] 1.uq[0x00123456789abcde]
-psrlq mm.uq[4] mm.uq[0x0123456789abcdef] 1.uq[0x00123456789abcde]
-psrlq m64.uq[4] mm.uq[0x0123456789abcdef] 1.uq[0x00123456789abcde]
-psrlw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde]
-psrlw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde]
-psrlw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde]
-psubb mm.sb[8,7,6,5,4,3,2,1] mm.sb[12,34,56,78,21,43,65,87] 1.sb[4,27,50,73,17,40,63,86]
-psubb m64.sb[8,7,6,5,4,3,2,1] mm.sb[12,34,56,78,21,43,65,87] 1.sb[4,27,50,73,17,40,63,86]
-psubd mm.sd[8765,4321] mm.sd[12345678,87654321] 1.sd[12336913,87650000]
-psubd m64.sd[8765,4321] mm.sd[12345678,87654321] 1.sd[12336913,87650000]
-psubsb mm.sb[-50,50,-40,40,-30,30,-20,20] mm.sb[25,-25,50,-50,100,-100,125,-125] 1.sb[75,-75,90,-90,127,-128,127,-128]
-psubsb m64.sb[-50,50,-40,40,-30,30,-20,20] mm.sb[25,-25,50,-50,100,-100,125,-125] 1.sb[75,-75,90,-90,127,-128,127,-128]
-psubsw mm.sw[-32145,32145,12345,-12345] mm.sw[12345,-12345,32145,-32145] 1.sw[32767,-32768,19800,-19800]
-psubsw m64.sw[-32145,32145,12345,-12345] mm.sw[12345,-12345,32145,-32145] 1.sw[32767,-32768,19800,-19800]
-psubusb mm.ub[11,22,33,44,55,66,77,88] mm.ub[88,77,66,55,44,33,22,11] 1.ub[77,55,33,11,0,0,0,0]
-psubusb m64.ub[11,22,33,44,55,66,77,88] mm.ub[88,77,66,55,44,33,22,11] 1.ub[77,55,33,11,0,0,0,0]
-psubusw mm.uw[1122,3344,5566,7788] mm.uw[8877,6655,4433,2211] 1.uw[7755,3311,0,0]
-psubusw m64.uw[1122,3344,5566,7788] mm.uw[8877,6655,4433,2211] 1.uw[7755,3311,0,0]
-psubw mm.sw[87,65,43,21] mm.sw[1234,5678,4321,8765] 1.sw[1147,5613,4278,8744]
-psubw m64.sw[87,65,43,21] mm.sw[1234,5678,4321,8765] 1.sw[1147,5613,4278,8744]
-punpckhbw mm.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] 1.ub[55,21,66,43,77,65,88,87]
-punpckhbw m64.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] 1.ub[55,21,66,43,77,65,88,87]
-punpckhdq mm.ud[12345678,21436587] mm.ud[11223344,55667788] 1.ud[55667788,21436587]
-punpckhdq m64.ud[12345678,21436587] mm.ud[11223344,55667788] 1.ud[55667788,21436587]
-punpckhwd mm.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] 1.uw[5566,2143,7788,6587]
-punpckhwd m64.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] 1.uw[5566,2143,7788,6587]
-punpcklbw mm.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] 1.ub[11,12,22,34,33,56,44,78]
-punpcklbw m64.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] 1.ub[11,12,22,34,33,56,44,78]
-punpckldq mm.ud[12345678,21436587] mm.ud[11223344,55667788] 1.ud[11223344,12345678]
-punpckldq m64.ud[12345678,21436587] mm.ud[11223344,55667788] 1.ud[11223344,12345678]
-punpcklwd mm.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] 1.uw[1122,1234,3344,5678]
-punpcklwd m64.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] 1.uw[1122,1234,3344,5678]
-pxor mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfc9a30566503a9cf]
-pxor m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] 1.uq[0xfc9a30566503a9cf]
+movd r32.sd[1234] mm.sd[1111,2222] => 1.sd[1234,0]
+movd m32.sd[1234] mm.sd[1111,2222] => 1.sd[1234,0]
+movd mm.sd[1234,2222] r32.sd[1111] => 1.sd[1234]
+movd mm.sd[1234,2222] m32.sd[1111] => 1.sd[1234]
+movq mm.uq[0x012345678abcdef] mm.uq[0x1212121234343434] => 1.uq[0x012345678abcdef]
+movq m64.uq[0x012345678abcdef] mm.uq[0x1212121234343434] => 1.uq[0x012345678abcdef]
+movq mm.uq[0x012345678abcdef] m64.uq[0x1212121234343434] => 1.uq[0x012345678abcdef]
+packssdw mm.sd[12345,123456] mm.sd[-12345,-123456] => 1.sw[-12345,-32768,12345,32767]
+packssdw m64.sd[12345,123456] mm.sd[-12345,-123456] => 1.sw[-12345,-32768,12345,32767]
+packsswb mm.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] => 1.sb[21,-21,127,-128,123,-123,127,-128]
+packsswb m64.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] => 1.sb[21,-21,127,-128,123,-123,127,-128]
+packuswb mm.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] => 1.ub[21,0,255,0,123,0,255,0]
+packuswb m64.sw[123,-123,1234,-1234] mm.sw[21,-21,321,-321] => 1.ub[21,0,255,0,123,0,255,0]
+paddb mm.sb[12,34,56,78,21,43,65,87] mm.sb[8,7,6,5,4,3,2,1] => 1.sb[20,41,62,83,25,46,67,88]
+paddb m64.sb[12,34,56,78,21,43,65,87] mm.sb[8,7,6,5,4,3,2,1] => 1.sb[20,41,62,83,25,46,67,88]
+paddd mm.sd[12345678,87654321] mm.sd[8765,4321] => 1.sd[12354443,87658642]
+paddd m64.sd[12345678,87654321] mm.sd[8765,4321] => 1.sd[12354443,87658642]
+paddsb mm.sb[25,-25,50,-50,100,-100,125,-125] mm.sb[40,-40,30,-30,20,-20,10,-10] => 1.sb[65,-65,80,-80,120,-120,127,-128]
+paddsb m64.sb[25,-25,50,-50,100,-100,125,-125] mm.sb[40,-40,30,-30,20,-20,10,-10] => 1.sb[65,-65,80,-80,120,-120,127,-128]
+paddsw mm.sw[12345,-12345,32145,-32145] mm.sw[32145,-32145,-12345,12345] => 1.sw[32767,-32768,19800,-19800]
+paddsw m64.sw[12345,-12345,32145,-32145] mm.sw[32145,-32145,-12345,12345] => 1.sw[32767,-32768,19800,-19800]
+paddusb mm.ub[25,50,75,100,125,150,175,200] mm.ub[10,20,30,40,50,60,70,80] => 1.ub[35,70,105,140,175,210,245,255]
+paddusb m64.ub[25,50,75,100,125,150,175,200] mm.ub[10,20,30,40,50,60,70,80] => 1.ub[35,70,105,140,175,210,245,255]
+paddusw mm.uw[22222,33333,44444,55555] mm.uw[6666,7777,8888,9999] => 1.uw[28888,41110,53332,65535]
+paddusw m64.uw[22222,33333,44444,55555] mm.uw[6666,7777,8888,9999] => 1.uw[28888,41110,53332,65535]
+paddw mm.sw[1234,5678,4321,8765] mm.sw[87,65,43,21] => 1.sw[1321,5743,4364,8786]
+paddw m64.sw[1234,5678,4321,8765] mm.sw[87,65,43,21] => 1.sw[1321,5743,4364,8786]
+pand mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0x0121452188a84420]
+pand m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0x0121452188a84420]
+pandn mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfc98301064002000]
+pandn m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfc98301064002000]
+pcmpeqb mm.ub[11,22,33,44,55,66,77,88] mm.ub[11,11,33,33,55,55,77,77] => 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
+pcmpeqb m64.ub[11,22,33,44,55,66,77,88] mm.ub[11,11,33,33,55,55,77,77] => 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
+pcmpeqd mm.ud[11223344,55667788] mm.ud[11223344,11223344] => 1.ud[0xffffffff,0x00000000]
+pcmpeqd m64.ud[11223344,55667788] mm.ud[11223344,11223344] => 1.ud[0xffffffff,0x00000000]
+pcmpeqw mm.uw[1122,3344,5566,7788] mm.uw[1122,1122,5566,5566] => 1.uw[0xffff,0x0000,0xffff,0x0000]
+pcmpeqw m64.uw[1122,3344,5566,7788] mm.uw[1122,1122,5566,5566] => 1.uw[0xffff,0x0000,0xffff,0x0000]
+pcmpgtb mm.sb[-77,-55,-33,-11,11,33,55,77] mm.sb[77,55,33,11,-11,-33,-55,-77] => 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
+pcmpgtb m64.sb[-77,-55,-33,-11,11,33,55,77] mm.sb[77,55,33,11,-11,-33,-55,-77] => 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
+pcmpgtd mm.sd[-11111111,11111111] mm.sd[11111111,-11111111] => 1.ud[0xffffffff,0x00000000]
+pcmpgtd m64.sd[-11111111,11111111] mm.sd[11111111,-11111111] => 1.ud[0xffffffff,0x00000000]
+pcmpgtw mm.sw[-3333,-1111,1111,3333] mm.sw[3333,1111,-1111,-3333] => 1.uw[0xffff,0xffff,0x0000,0x0000]
+pcmpgtw m64.sw[-3333,-1111,1111,3333] mm.sw[3333,1111,-1111,-3333] => 1.uw[0xffff,0xffff,0x0000,0x0000]
+pmaddwd mm.sw[1234,5678,-4321,-8765] mm.sw[1111,-2222,3333,-4444] => 1.sd[-11245542,24549767]
+pmaddwd m64.sw[1234,5678,-4321,-8765] mm.sw[1111,-2222,3333,-4444] => 1.sd[-11245542,24549767]
+pmulhw mm.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] => 1.uw[0x0038,0xff69,0xffc7,0x0096]
+pmulhw m64.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] => 1.uw[0x0038,0xff69,0xffc7,0x0096]
+pmullw mm.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] => 1.uw[0x80b3,0x5378,0x7f4d,0xac88]
+pmullw m64.sw[1111,2222,-1111,-2222] mm.sw[3333,-4444,3333,-4444] => 1.uw[0x80b3,0x5378,0x7f4d,0xac88]
+por mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfdbb7577edabedef]
+por m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfdbb7577edabedef]
+pslld imm8[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0]
+pslld mm.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0]
+pslld m64.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0]
+psllq imm8[4] mm.uq[0x0123456789abcdef] => 1.uq[0x123456789abcdef0]
+psllq mm.uq[4] mm.uq[0x0123456789abcdef] => 1.uq[0x123456789abcdef0]
+psllq m64.uq[4] mm.uq[0x0123456789abcdef] => 1.uq[0x123456789abcdef0]
+psllw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
+psllw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
+psllw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0]
+psrad imm8[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde]
+psrad mm.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde]
+psrad m64.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde]
+psraw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde]
+psraw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde]
+psraw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde]
+psrld imm8[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde]
+psrld mm.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde]
+psrld m64.uq[4] mm.ud[0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde]
+psrlq imm8[4] mm.uq[0x0123456789abcdef] => 1.uq[0x00123456789abcde]
+psrlq mm.uq[4] mm.uq[0x0123456789abcdef] => 1.uq[0x00123456789abcde]
+psrlq m64.uq[4] mm.uq[0x0123456789abcdef] => 1.uq[0x00123456789abcde]
+psrlw imm8[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde]
+psrlw mm.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde]
+psrlw m64.uq[4] mm.uw[0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde]
+psubb mm.sb[8,7,6,5,4,3,2,1] mm.sb[12,34,56,78,21,43,65,87] => 1.sb[4,27,50,73,17,40,63,86]
+psubb m64.sb[8,7,6,5,4,3,2,1] mm.sb[12,34,56,78,21,43,65,87] => 1.sb[4,27,50,73,17,40,63,86]
+psubd mm.sd[8765,4321] mm.sd[12345678,87654321] => 1.sd[12336913,87650000]
+psubd m64.sd[8765,4321] mm.sd[12345678,87654321] => 1.sd[12336913,87650000]
+psubsb mm.sb[-50,50,-40,40,-30,30,-20,20] mm.sb[25,-25,50,-50,100,-100,125,-125] => 1.sb[75,-75,90,-90,127,-128,127,-128]
+psubsb m64.sb[-50,50,-40,40,-30,30,-20,20] mm.sb[25,-25,50,-50,100,-100,125,-125] => 1.sb[75,-75,90,-90,127,-128,127,-128]
+psubsw mm.sw[-32145,32145,12345,-12345] mm.sw[12345,-12345,32145,-32145] => 1.sw[32767,-32768,19800,-19800]
+psubsw m64.sw[-32145,32145,12345,-12345] mm.sw[12345,-12345,32145,-32145] => 1.sw[32767,-32768,19800,-19800]
+psubusb mm.ub[11,22,33,44,55,66,77,88] mm.ub[88,77,66,55,44,33,22,11] => 1.ub[77,55,33,11,0,0,0,0]
+psubusb m64.ub[11,22,33,44,55,66,77,88] mm.ub[88,77,66,55,44,33,22,11] => 1.ub[77,55,33,11,0,0,0,0]
+psubusw mm.uw[1122,3344,5566,7788] mm.uw[8877,6655,4433,2211] => 1.uw[7755,3311,0,0]
+psubusw m64.uw[1122,3344,5566,7788] mm.uw[8877,6655,4433,2211] => 1.uw[7755,3311,0,0]
+psubw mm.sw[87,65,43,21] mm.sw[1234,5678,4321,8765] => 1.sw[1147,5613,4278,8744]
+psubw m64.sw[87,65,43,21] mm.sw[1234,5678,4321,8765] => 1.sw[1147,5613,4278,8744]
+punpckhbw mm.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] => 1.ub[55,21,66,43,77,65,88,87]
+punpckhbw m64.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] => 1.ub[55,21,66,43,77,65,88,87]
+punpckhdq mm.ud[12345678,21436587] mm.ud[11223344,55667788] => 1.ud[55667788,21436587]
+punpckhdq m64.ud[12345678,21436587] mm.ud[11223344,55667788] => 1.ud[55667788,21436587]
+punpckhwd mm.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] => 1.uw[5566,2143,7788,6587]
+punpckhwd m64.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] => 1.uw[5566,2143,7788,6587]
+punpcklbw mm.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] => 1.ub[11,12,22,34,33,56,44,78]
+punpcklbw m64.ub[12,34,56,78,21,43,65,87] mm.ub[11,22,33,44,55,66,77,88] => 1.ub[11,12,22,34,33,56,44,78]
+punpckldq mm.ud[12345678,21436587] mm.ud[11223344,55667788] => 1.ud[11223344,12345678]
+punpckldq m64.ud[12345678,21436587] mm.ud[11223344,55667788] => 1.ud[11223344,12345678]
+punpcklwd mm.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] => 1.uw[1122,1234,3344,5678]
+punpcklwd m64.uw[1234,5678,2143,6587] mm.uw[1122,3344,5566,7788] => 1.uw[1122,1234,3344,5678]
+pxor mm.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfc9a30566503a9cf]
+pxor m64.uq[0xfdb97531eca86420] mm.uq[0x0123456789abcdef] => 1.uq[0xfc9a30566503a9cf]
index b2374105c2028e5ed3f4d5d08c777e9dd703de1c..b3d9edc92821b87faa52ac8a2cf4c712f5bbd004 100644 (file)
-addps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] 1.ps[56.78,90.11,65.43,98.76]
-addps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] 1.ps[56.78,90.11,65.43,98.76]
-addss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] 1.ps[56.78,33.33,22.22,11.11]
-addss m128.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] 1.ps[56.78,33.33,22.22,11.11]
-andnps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-andnps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-andps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-andps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-cmpeqps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpeqps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpeqss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpeqss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-cmpleps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpleps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpless xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpless m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-cmpltps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5677,234.5679,234.5677,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpltps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5677,234.5679,234.5677,234.5679] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpltss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5676,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpltss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-cmpneqps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpneqps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpneqss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpneqss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-cmpnleps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpnleps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpnless xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpnless m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-cmpnltps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5677,234.5679,234.5677] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpnltps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5677,234.5679,234.5677] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-cmpnltss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] 1.ud[0xffffffff,0,0,0]
-cmpnltss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5676,0.0,0.0,0.0] 1.ud[0x00000000,0,0,0]
-comiss xmm.ps[234.5678,0.0] xmm.ps[234.5679,0.0] eflags[0x8d5,0x000]
-comiss m32.ps[234.5678] xmm.ps[234.5679,0.0] eflags[0x8d5,0x000]
-comiss xmm.ps[234.5678,0.0] xmm.ps[234.5677,0.0] eflags[0x8d5,0x001]
-comiss m32.ps[234.5678] xmm.ps[234.5677,0.0] eflags[0x8d5,0x001]
-comiss xmm.ps[234.5678,0.0] xmm.ps[234.5678,0.0] eflags[0x8d5,0x040]
-comiss m32.ps[234.5678] xmm.ps[234.5678,0.0] eflags[0x8d5,0x040]
-cvtpi2ps mm.sd[1234,5678] xmm.ps[1.1,2.2,3.3,4.4] 1.ps[1234.0,5678.0,3.3,4.4]
-cvtpi2ps m64.sd[1234,5678] xmm.ps[1.1,2.2,3.3,4.4] 1.ps[1234.0,5678.0,3.3,4.4]
-cvtps2pi xmm.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] 1.sd[12,57]
-cvtps2pi m128.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] 1.sd[12,57]
-cvtsi2ss r.sd[12] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[12.0,2.22,3.33,4.44]
-cvtsi2ss m32.sd[12] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[12.0,2.22,3.33,4.44]
-cvtss2si xmm.ps[12.34,56.78,43.21,87.65] r.sd[99] 1.sd[12]
-cvtss2si m128.ps[56.78,12.34,87.65,43.21] r.sd[99] 1.sd[57]
-cvttps2pi xmm.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] 1.sd[12,56]
-cvttps2pi m128.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] 1.sd[12,56]
-cvttss2si xmm.ps[12.34,56.78,43.21,87.65] r.sd[99] 1.sd[12]
-cvttss2si m128.ps[56.78,12.34,87.65,43.21] r.sd[99] 1.sd[56]
-divps xmm.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] 1.ps[12.34,1.23,12.12,11.11]
-divps m128.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] 1.ps[12.34,1.23,12.12,11.11]
-divss xmm.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] 1.ps[12.34,3.69,48.48,55.55]
-divss m128.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] 1.ps[12.34,3.69,48.48,55.55]
-maxps xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[7.77,5.55,6.66,8.88]
-maxps m128.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[7.77,5.55,6.66,8.88]
-maxss xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[7.77,5.55,3.33,1.11]
-maxss m128.ps[8.88,6.66,4.44,2.22] xmm.ps[1.11,3.33,5.55,7.77] 1.ps[8.88,3.33,5.55,7.77]
-minps xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[2.22,4.44,3.33,1.11]
-minps m128.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[2.22,4.44,3.33,1.11]
-minss xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] 1.ps[2.22,5.55,3.33,1.11]
-minss m128.ps[8.88,6.66,4.44,2.22] xmm.ps[1.11,3.33,5.55,7.77] 1.ps[1.11,3.33,5.55,7.77]
-movaps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,43.21,87.65]
-movaps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,43.21,87.65]
-movhlps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[43.21,87.65,33.33,44.44]
-movhps m64.ps[12.34,56.78] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[11.11,22.22,12.34,56.78]
-movhps xmm.ps[12.34,56.78,43.21,87.65] m64.ps[11.11,22.22] 1.ps[43.21,87.65]
-movlhps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[11.11,22.22,12.34,56.78]
-movlps m64.ps[12.34,56.78] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,33.33,44.44]
-movlps xmm.ps[12.34,56.78,43.21,87.65] m64.ps[11.11,22.22] 1.ps[12.34,56.78]
-movmskps xmm.ps[12.34,-56.78,43.21,-87.65] r.sd[0] 1.sd[10]
-movntps xmm.ps[12.34,56.78,43.21,87.65] m128.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,43.21,87.65]
-movntq mm.uq[0x0123456789abcdef] m64.uq[0x1212121234343434] 1.uq[0x0123456789abcdef]
-movss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,22.22,33.33,44.44]
-movss m32.ps[12.34] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,0.0,0.0,0.0]
-movss xmm.ps[12.34,56.78,43.21,87.65] m32.ps[11.11] 1.ps[12.34]
-movups xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,43.21,87.65]
-movups m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] 1.ps[12.34,56.78,43.21,87.65]
-mulps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] 1.ps[61.70,227.12,129.63,175.30]
-mulps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] 1.ps[61.70,227.12,129.63,175.30]
-mulss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] 1.ps[61.70,4.0,3.0,2.0]
-mulss m128.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] 1.ps[61.70,4.0,3.0,2.0]
-orps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-orps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-pavgb mm.ub[11,22,33,44,55,66,77,88] mm.ub[15,25,35,45,55,65,75,85] 1.ub[13,24,34,45,55,66,76,87]
-pavgb m64.ub[11,22,33,44,55,66,77,88] mm.ub[15,25,35,45,55,65,75,85] 1.ub[13,24,34,45,55,66,76,87]
-pavgw mm.uw[1122,3344,5566,7788] mm.uw[1525,3545,5565,7585] 1.uw[1324,3445,5566,7687]
-pavgw m64.uw[1122,3344,5566,7788] mm.uw[1525,3545,5565,7585] 1.uw[1324,3445,5566,7687]
-pextrw imm8[0] mm.uw[1234,5678,4321,8765] r.ud[0xffffffff] 2.ud[1234]
-pextrw imm8[1] mm.uw[1234,5678,4321,8765] r.ud[0xffffffff] 2.ud[5678]
-pextrw imm8[2] mm.uw[1234,5678,4321,8765] r.ud[0xffffffff] 2.ud[4321]
-pextrw imm8[3] mm.uw[1234,5678,4321,8765] r.ud[0xffffffff] 2.ud[8765]
-pinsrw imm8[0] r.ud[0xffffffff] mm.uw[1234,5678,4321,8765] 2.uw[65535,5678,4321,8765]
-pinsrw imm8[1] r.ud[0xffffffff] mm.uw[1234,5678,4321,8765] 2.uw[1234,65535,4321,8765]
-pinsrw imm8[2] r.ud[0xffffffff] mm.uw[1234,5678,4321,8765] 2.uw[1234,5678,65535,8765]
-pinsrw imm8[3] r.ud[0xffffffff] mm.uw[1234,5678,4321,8765] 2.uw[1234,5678,4321,65535]
-pmaxsw mm.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] 1.sw[2,2,4,4]
-pmaxsw m64.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] 1.sw[2,2,4,4]
-pmaxub mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.ub[8,7,6,5,5,6,7,8]
-pmaxub m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.ub[8,7,6,5,5,6,7,8]
-pminsw mm.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] 1.sw[-1,-3,-3,-5]
-pminsw m64.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] 1.sw[-1,-3,-3,-5]
-pminub mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.ub[1,2,3,4,4,3,2,1]
-pminub m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.ub[1,2,3,4,4,3,2,1]
-pmovmskb mm.uq[0x8000000080008088] r.ud[0] 1.ud[0x8b]
-pmulhuw mm.uw[1111,2222,3333,4444] mm.uw[5555,6666,7777,8888] 1.uw[0x005e,0x00e2,0x018b,0x025a]
-pmulhuw m64.uw[1111,2222,3333,4444] mm.uw[5555,6666,7777,8888] 1.uw[0x005e,0x00e2,0x018b,0x025a]
-psadbw mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.sw[32,0,0,0]
-psadbw m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] 1.sw[32,0,0,0]
-pshufw imm8[0x1b] mm.sw[11,22,33,44] mm.sw[0,0,0,0] 2.sw[44,33,22,11]
-pshufw imm8[0x1b] m64.sw[11,22,33,44] mm.sw[0,0,0,0] 2.sw[44,33,22,11]
-rcpps xmm.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.5,0.25,2.0,4.0]
-rcpps m128.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.5,0.25,2.0,4.0]
-rcpss xmm.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.5,2.22,3.33,4.44]
-rcpss m128.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.5,2.22,3.33,4.44]
-rsqrtps xmm.ps[4.0,16.0,25.0,64.0] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.499878,0.249939,0.199982,0.124969]
-rsqrtps m128.ps[4.0,16.0,25.0,64.0] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.499878,0.249939,0.199982,0.124969]
-rsqrtss xmm.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.249939,2.22,3.33,4.44]
-rsqrtss m128.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[0.249939,2.22,3.33,4.44]
-shufps imm8[0xe4] xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[12.34,56.78,43.21,87.65] 2.ps[12.34,56.78,43.21,87.65]
-shufps imm8[0xb1] m128.ps[12.34,56.78,43.21,87.65] xmm.ps[12.34,56.78,43.21,87.65] 2.ps[56.78,12.34,87.65,43.21]
-sqrtps xmm.ps[16.0,25.0,36.0,49.0] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[4.0,5.0,6.0,7.0]
-sqrtps m128.ps[16.0,25.0,36.0,49.0] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[4.0,5.0,6.0,7.0]
-sqrtss xmm.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[4.0,2.22,3.33,4.44]
-sqrtss m128.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[4.0,2.22,3.33,4.44]
-subps xmm.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] 1.ps[31.66,-23.77,-21.21,-76.65]
-subps m128.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] 1.ps[31.66,-23.77,-21.21,-76.65]
-subss xmm.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] 1.ps[31.66,33.0,22.0,11.0]
-subss m128.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] 1.ps[31.66,33.0,22.0,11.0]
-ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5679,0.0] eflags[0x8d5,0x000]
-ucomiss m32.ps[234.5678] xmm.ps[234.5679,0.0] eflags[0x8d5,0x000]
-ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5677,0.0] eflags[0x8d5,0x001]
-ucomiss m32.ps[234.5678] xmm.ps[234.5677,0.0] eflags[0x8d5,0x001]
-ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5678,0.0] eflags[0x8d5,0x040]
-ucomiss m32.ps[234.5678] xmm.ps[234.5678,0.0] eflags[0x8d5,0x040]
-unpckhps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] 1.ps[55.66,43.21,77.88,87.65]
-unpckhps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] 1.ps[55.66,43.21,77.88,87.65]
-unpcklps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] 1.ps[11.22,12.34,33.44,56.78]
-unpcklps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] 1.ps[11.22,12.34,33.44,56.78]
-xorps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
-xorps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+addps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] => 1.ps[56.78,90.11,65.43,98.76]
+addps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] => 1.ps[56.78,90.11,65.43,98.76]
+addss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] => 1.ps[56.78,33.33,22.22,11.11]
+addss m128.ps[12.34,56.78,43.21,87.65] xmm.ps[44.44,33.33,22.22,11.11] => 1.ps[56.78,33.33,22.22,11.11]
+andnps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+andnps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+andps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+andps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+cmpeqps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpeqps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpeqss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpeqss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+cmpleps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpleps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5678,234.5679,234.5678,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpless xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpless m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+cmpltps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5677,234.5679,234.5677,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpltps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5677,234.5679,234.5677,234.5679] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpltss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5676,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpltss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+cmpneqps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpneqps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpneqss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpneqss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+cmpnleps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpnleps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5678,234.5679,234.5678] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpnless xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpnless m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5678,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+cmpnltps xmm.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5677,234.5679,234.5677] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpnltps m128.ps[234.5678,234.5678,234.5678,234.5678] xmm.ps[234.5679,234.5677,234.5679,234.5677] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+cmpnltss xmm.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5679,0.0,0.0,0.0] => 1.ud[0xffffffff,0,0,0]
+cmpnltss m128.ps[1234.5678,0.0,0.0,0.0] xmm.ps[1234.5676,0.0,0.0,0.0] => 1.ud[0x00000000,0,0,0]
+comiss xmm.ps[234.5678,0.0] xmm.ps[234.5679,0.0] => eflags[0x8d5,0x000]
+comiss m32.ps[234.5678] xmm.ps[234.5679,0.0] => eflags[0x8d5,0x000]
+comiss xmm.ps[234.5678,0.0] xmm.ps[234.5677,0.0] => eflags[0x8d5,0x001]
+comiss m32.ps[234.5678] xmm.ps[234.5677,0.0] => eflags[0x8d5,0x001]
+comiss xmm.ps[234.5678,0.0] xmm.ps[234.5678,0.0] => eflags[0x8d5,0x040]
+comiss m32.ps[234.5678] xmm.ps[234.5678,0.0] => eflags[0x8d5,0x040]
+cvtpi2ps mm.sd[1234,5678] xmm.ps[1.1,2.2,3.3,4.4] => 1.ps[1234.0,5678.0,3.3,4.4]
+cvtpi2ps m64.sd[1234,5678] xmm.ps[1.1,2.2,3.3,4.4] => 1.ps[1234.0,5678.0,3.3,4.4]
+cvtps2pi xmm.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] => 1.sd[12,57]
+cvtps2pi m128.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] => 1.sd[12,57]
+cvtsi2ss r32.sd[12] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[12.0,2.22,3.33,4.44]
+cvtsi2ss m32.sd[12] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[12.0,2.22,3.33,4.44]
+cvtss2si xmm.ps[12.34,56.78,43.21,87.65] r32.sd[99] => 1.sd[12]
+cvtss2si m128.ps[56.78,12.34,87.65,43.21] r32.sd[99] => 1.sd[57]
+cvttps2pi xmm.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] => 1.sd[12,56]
+cvttps2pi m128.ps[12.34,56.78,1.11,2.22] mm.sd[1,2] => 1.sd[12,56]
+cvttss2si xmm.ps[12.34,56.78,43.21,87.65] r32.sd[99] => 1.sd[12]
+cvttss2si m128.ps[56.78,12.34,87.65,43.21] r32.sd[99] => 1.sd[56]
+divps xmm.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] => 1.ps[12.34,1.23,12.12,11.11]
+divps m128.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] => 1.ps[12.34,1.23,12.12,11.11]
+divss xmm.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] => 1.ps[12.34,3.69,48.48,55.55]
+divss m128.ps[2.0,3.0,4.0,5.0] xmm.ps[24.68,3.69,48.48,55.55] => 1.ps[12.34,3.69,48.48,55.55]
+maxps xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[7.77,5.55,6.66,8.88]
+maxps m128.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[7.77,5.55,6.66,8.88]
+maxss xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[7.77,5.55,3.33,1.11]
+maxss m128.ps[8.88,6.66,4.44,2.22] xmm.ps[1.11,3.33,5.55,7.77] => 1.ps[8.88,3.33,5.55,7.77]
+minps xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[2.22,4.44,3.33,1.11]
+minps m128.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[2.22,4.44,3.33,1.11]
+minss xmm.ps[2.22,4.44,6.66,8.88] xmm.ps[7.77,5.55,3.33,1.11] => 1.ps[2.22,5.55,3.33,1.11]
+minss m128.ps[8.88,6.66,4.44,2.22] xmm.ps[1.11,3.33,5.55,7.77] => 1.ps[1.11,3.33,5.55,7.77]
+movaps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,43.21,87.65]
+movaps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,43.21,87.65]
+movhlps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[43.21,87.65,33.33,44.44]
+movhps m64.ps[12.34,56.78] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[11.11,22.22,12.34,56.78]
+movhps xmm.ps[12.34,56.78,43.21,87.65] m64.ps[11.11,22.22] => 1.ps[43.21,87.65]
+movlhps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[11.11,22.22,12.34,56.78]
+movlps m64.ps[12.34,56.78] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,33.33,44.44]
+movlps xmm.ps[12.34,56.78,43.21,87.65] m64.ps[11.11,22.22] => 1.ps[12.34,56.78]
+movmskps xmm.ps[12.34,-56.78,43.21,-87.65] r32.sd[0] => 1.sd[10]
+movntps xmm.ps[12.34,56.78,43.21,87.65] m128.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,43.21,87.65]
+movntq mm.uq[0x0123456789abcdef] m64.uq[0x1212121234343434] => 1.uq[0x0123456789abcdef]
+movss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,22.22,33.33,44.44]
+movss m32.ps[12.34] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,0.0,0.0,0.0]
+movss xmm.ps[12.34,56.78,43.21,87.65] m32.ps[11.11] => 1.ps[12.34]
+movups xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,43.21,87.65]
+movups m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.11,22.22,33.33,44.44] => 1.ps[12.34,56.78,43.21,87.65]
+mulps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] => 1.ps[61.70,227.12,129.63,175.30]
+mulps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] => 1.ps[61.70,227.12,129.63,175.30]
+mulss xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] => 1.ps[61.70,4.0,3.0,2.0]
+mulss m128.ps[12.34,56.78,43.21,87.65] xmm.ps[5.0,4.0,3.0,2.0] => 1.ps[61.70,4.0,3.0,2.0]
+orps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+orps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+pavgb mm.ub[11,22,33,44,55,66,77,88] mm.ub[15,25,35,45,55,65,75,85] => 1.ub[13,24,34,45,55,66,76,87]
+pavgb m64.ub[11,22,33,44,55,66,77,88] mm.ub[15,25,35,45,55,65,75,85] => 1.ub[13,24,34,45,55,66,76,87]
+pavgw mm.uw[1122,3344,5566,7788] mm.uw[1525,3545,5565,7585] => 1.uw[1324,3445,5566,7687]
+pavgw m64.uw[1122,3344,5566,7788] mm.uw[1525,3545,5565,7585] => 1.uw[1324,3445,5566,7687]
+pextrw imm8[0] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] => 2.ud[1234]
+pextrw imm8[1] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] => 2.ud[5678]
+pextrw imm8[2] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] => 2.ud[4321]
+pextrw imm8[3] mm.uw[1234,5678,4321,8765] r32.ud[0xffffffff] => 2.ud[8765]
+pinsrw imm8[0] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] => 2.uw[65535,5678,4321,8765]
+pinsrw imm8[1] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] => 2.uw[1234,65535,4321,8765]
+pinsrw imm8[2] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] => 2.uw[1234,5678,65535,8765]
+pinsrw imm8[3] r32.ud[0xffffffff] mm.uw[1234,5678,4321,8765] => 2.uw[1234,5678,4321,65535]
+pmaxsw mm.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] => 1.sw[2,2,4,4]
+pmaxsw m64.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] => 1.sw[2,2,4,4]
+pmaxub mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.ub[8,7,6,5,5,6,7,8]
+pmaxub m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.ub[8,7,6,5,5,6,7,8]
+pminsw mm.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] => 1.sw[-1,-3,-3,-5]
+pminsw m64.sw[-1,2,-3,4] mm.sw[2,-3,4,-5] => 1.sw[-1,-3,-3,-5]
+pminub mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.ub[1,2,3,4,4,3,2,1]
+pminub m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.ub[1,2,3,4,4,3,2,1]
+pmovmskb mm.uq[0x8000000080008088] r32.ud[0] => 1.ud[0x8b]
+pmulhuw mm.uw[1111,2222,3333,4444] mm.uw[5555,6666,7777,8888] => 1.uw[0x005e,0x00e2,0x018b,0x025a]
+pmulhuw m64.uw[1111,2222,3333,4444] mm.uw[5555,6666,7777,8888] => 1.uw[0x005e,0x00e2,0x018b,0x025a]
+psadbw mm.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.sw[32,0,0,0]
+psadbw m64.ub[1,2,3,4,5,6,7,8] mm.ub[8,7,6,5,4,3,2,1] => 1.sw[32,0,0,0]
+pshufw imm8[0x1b] mm.sw[11,22,33,44] mm.sw[0,0,0,0] => 2.sw[44,33,22,11]
+pshufw imm8[0x1b] m64.sw[11,22,33,44] mm.sw[0,0,0,0] => 2.sw[44,33,22,11]
+rcpps xmm.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.5,0.25,2.0,4.0]
+rcpps m128.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.5,0.25,2.0,4.0]
+rcpss xmm.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.5,2.22,3.33,4.44]
+rcpss m128.ps[2.0,4.0,0.5,0.25] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.5,2.22,3.33,4.44]
+rsqrtps xmm.ps[4.0,16.0,25.0,64.0] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.499878,0.249939,0.199982,0.124969]
+rsqrtps m128.ps[4.0,16.0,25.0,64.0] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.499878,0.249939,0.199982,0.124969]
+rsqrtss xmm.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.249939,2.22,3.33,4.44]
+rsqrtss m128.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[0.249939,2.22,3.33,4.44]
+shufps imm8[0xe4] xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[12.34,56.78,43.21,87.65] => 2.ps[12.34,56.78,43.21,87.65]
+shufps imm8[0xb1] m128.ps[12.34,56.78,43.21,87.65] xmm.ps[12.34,56.78,43.21,87.65] => 2.ps[56.78,12.34,87.65,43.21]
+sqrtps xmm.ps[16.0,25.0,36.0,49.0] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[4.0,5.0,6.0,7.0]
+sqrtps m128.ps[16.0,25.0,36.0,49.0] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[4.0,5.0,6.0,7.0]
+sqrtss xmm.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[4.0,2.22,3.33,4.44]
+sqrtss m128.ps[16.0,5.55,6.66,7.77] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[4.0,2.22,3.33,4.44]
+subps xmm.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] => 1.ps[31.66,-23.77,-21.21,-76.65]
+subps m128.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] => 1.ps[31.66,-23.77,-21.21,-76.65]
+subss xmm.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] => 1.ps[31.66,33.0,22.0,11.0]
+subss m128.ps[12.34,56.77,43.21,87.65] xmm.ps[44.0,33.0,22.0,11.0] => 1.ps[31.66,33.0,22.0,11.0]
+ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5679,0.0] => eflags[0x8d5,0x000]
+ucomiss m32.ps[234.5678] xmm.ps[234.5679,0.0] => eflags[0x8d5,0x000]
+ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5677,0.0] => eflags[0x8d5,0x001]
+ucomiss m32.ps[234.5678] xmm.ps[234.5677,0.0] => eflags[0x8d5,0x001]
+ucomiss xmm.ps[234.5678,0.0] xmm.ps[234.5678,0.0] => eflags[0x8d5,0x040]
+ucomiss m32.ps[234.5678] xmm.ps[234.5678,0.0] => eflags[0x8d5,0x040]
+unpckhps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] => 1.ps[55.66,43.21,77.88,87.65]
+unpckhps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] => 1.ps[55.66,43.21,77.88,87.65]
+unpcklps xmm.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] => 1.ps[11.22,12.34,33.44,56.78]
+unpcklps m128.ps[12.34,56.78,43.21,87.65] xmm.ps[11.22,33.44,55.66,77.88] => 1.ps[11.22,12.34,33.44,56.78]
+xorps xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+xorps m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
index 4aa6d7f8135e3ec5bdd3b35048d161bfc415feb9..442fff3956da08a65f6c45705a0593ea19310d38 100644 (file)
-addpd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] 1.pd[3456.79,9876.5432]
-addpd m128.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] 1.pd[3456.79,9876.5432]
-addsd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] 1.pd[3456.79,1111.1111]
-addsd m128.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] 1.pd[3456.79,1111.1111]
-andpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-andpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-andnpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-andnpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-cmpeqpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpeqpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpltpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5677,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpltpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5677,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmplepd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmplepd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpneqpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpneqpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpnltpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5677] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpnltpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5677] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpnlepd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpnlepd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] 1.uq[0xffffffffffffffff,0x0000000000000000]
-cmpeqsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] 1.uq[0xffffffffffffffff,0]
-cmpeqsd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0x0000000000000000,0]
-cmpltsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] 1.uq[0xffffffffffffffff,0]
-cmpltsd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0x0000000000000000,0]
-cmplesd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] 1.uq[0xffffffffffffffff,0]
-cmplesd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0x0000000000000000,0]
-cmpneqsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0xffffffffffffffff,0]
-cmpneqsd m128.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] 1.uq[0x0000000000000000,0]
-cmpnltsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0xffffffffffffffff,0]
-cmpnltsd m128.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] 1.uq[0x0000000000000000,0]
-cmpnlesd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] 1.uq[0xffffffffffffffff,0]
-cmpnlesd m128.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] 1.uq[0x0000000000000000,0]
-comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] eflags[0x8d5,0x000]
-comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] eflags[0x8d5,0x001]
-comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] eflags[0x8d5,0x040]
-comisd m64.pd[1234.5678] xmm.pd[1234.5679,0.0] eflags[0x8d5,0x000]
-comisd m64.pd[1234.5678] xmm.pd[1234.5677,0.0] eflags[0x8d5,0x001]
-comisd m64.pd[1234.5678] xmm.pd[1234.5678,0.0] eflags[0x8d5,0x040]
-cvtdq2pd xmm.sd[1234,5678,0,0] xmm.pd[0.0,0.0] 1.pd[1234.0,5678.0]
-cvtdq2pd m128.sd[1234,5678,0,0] xmm.pd[0.0,0.0] 1.pd[1234.0,5678.0]
-cvtdq2ps xmm.sd[1234,5678,-1234,-5678] xmm.ps[0.0,0.0,0.0,0.0] 1.ps[1234.0,5678.0,-1234.0,-5678.0]
-cvtdq2ps m128.sd[1234,5678,-1234,-5678] xmm.ps[0.0,0.0,0.0,0.0] 1.ps[1234.0,5678.0,-1234.0,-5678.0]
-cvtpd2dq xmm.pd[12.34,56.78] xmm.sd[1,2,3,4] 1.sd[12,57,0,0]
-cvtpd2dq m128.pd[12.34,56.78] xmm.sd[1,2,3,4] 1.sd[12,57,0,0]
-cvtpd2pi xmm.pd[12.34,56.78] mm.sd[1,2] 1.sd[12,57]
-cvtpd2pi m128.pd[12.34,56.78] mm.sd[1,2] 1.sd[12,57]
-cvtpd2ps xmm.pd[12.34,56.78] xmm.ps[1.1,2.2,3.3,4.4] 1.ps[12.34,56.78,0.0,0.0]
-cvtpd2ps m128.pd[12.34,56.78] xmm.ps[1.1,2.2,3.3,4.4] 1.ps[12.34,56.78,0.0,0.0]
-cvtpi2pd mm.sd[1234,5678] xmm.pd[1.1,2.2] 1.pd[1234.0,5678.0]
-cvtpi2pd m64.sd[1234,5678] xmm.pd[1.1,2.2] 1.pd[1234.0,5678.0]
-cvtps2dq xmm.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] 1.sd[12,57,43,88]
-cvtps2dq m128.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] 1.sd[12,57,43,88]
-cvtps2pd xmm.ps[12.34,56.78,1.1,2.2] xmm.pd[3.3,4.4] 1.pd[12.34,56.78]
-cvtps2pd m128.ps[12.34,56.78,1.1,2.2] xmm.pd[3.3,4.4] 1.pd[12.34,56.78]
-cvtsd2si xmm.pd[12.34,56.78] r.sd[99] 1.sd[12]
-cvtsd2si m128.pd[56.78,12.34] r.sd[99] 1.sd[57]
-cvtsd2ss xmm.pd[12.34,56.78] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[12.34,2.22,3.33,4.44]
-cvtsd2ss m128.pd[12.34,56.78] xmm.ps[1.11,2.22,3.33,4.44] 1.ps[12.34,2.22,3.33,4.44]
-cvtsi2sd r.sd[12] xmm.pd[1.11,2.22] 1.pd[12.0,2.22]
-cvtsi2sd m32.sd[12] xmm.pd[1.11,2.22] 1.pd[12.0,2.22]
-cvtss2sd xmm.ps[12.34,3.33,4.44,5.55] xmm.pd[1.11,2.22] 1.pd[12.34,2.22]
-cvtss2sd m128.ps[12.34,3.33,4.44,5.55] xmm.pd[1.11,2.22] 1.pd[12.34,2.22]
-cvttpd2pi xmm.pd[12.34,56.78] mm.sd[1,2] 1.sd[12,56]
-cvttpd2pi m128.pd[12.34,56.78] mm.sd[1,2] 1.sd[12,56]
-cvttpd2dq xmm.pd[12.34,56.78] xmm.sd[1,2,3,4] 1.sd[12,56,0,0]
-cvttpd2dq m128.pd[12.34,56.78] xmm.sd[1,2,3,4] 1.sd[12,56,0,0]
-cvttps2dq xmm.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] 1.sd[12,56,43,87]
-cvttps2dq m128.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] 1.sd[12,56,43,87]
-cvttsd2si xmm.pd[12.34,56.78] r.sd[99] 1.sd[12]
-cvttsd2si m128.pd[56.78,12.34] r.sd[99] 1.sd[56]
-divpd xmm.pd[2.0,3.0] xmm.pd[24.68,3.69] 1.pd[12.34,1.23]
-divpd m128.pd[2.0,3.0] xmm.pd[24.68,3.69] 1.pd[12.34,1.23]
-divsd xmm.pd[2.0,3.0] xmm.pd[24.68,3.69] 1.pd[12.34,3.69]
-divsd m128.pd[2.0,3.0] xmm.pd[24.68,3.69] 1.pd[12.34,3.69]
-maxpd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[55.555,44.444]
-maxpd m128.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[55.555,44.444]
-maxsd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[55.555,33.333]
-maxsd m128.pd[44.444,22.222] xmm.pd[33.333,55.555] 1.pd[44.444,55.555]
-minpd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[22.222,33.333]
-minpd m128.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[22.222,33.333]
-minsd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] 1.pd[22.222,33.333]
-minsd m128.pd[44.444,22.222] xmm.pd[33.333,55.555] 1.pd[33.333,55.555]
-movapd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,8765.4321]
-movapd m128.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,8765.4321]
-movd r.sd[1234] xmm.sd[1111,2222,3333,4444] 1.sd[1234,0,0,0]
-movd m32.sd[1234] xmm.sd[1111,2222,3333,4444] 1.sd[1234,0,0,0]
-movd xmm.sd[1234,2222,3333,4444] r.sd[1111] 1.sd[1234]
-movd xmm.sd[1234,2222,3333,4444] m32.sd[1111] 1.sd[1234]
-movdqa xmm.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdqa m128.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdqa xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdqu xmm.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdqu m128.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdqu xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movdq2q xmm.uq[0x012345678abcdef,0xfedcba9876543210] mm.uq[0x1212121234343434] 1.uq[0x012345678abcdef]
-movhpd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] 1.pd[1111.1111,1234.5678]
-movhpd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] 1.pd[8765.4321]
-movlpd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,2222.2222]
-movlpd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] 1.pd[1234.5678]
-movmskpd xmm.pd[1234.5678,-1234.5678] r.sd[0] 1.sd[2]
-movntdq xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0xfedcba9876543210]
-movnti r.sd[12345678] m32.sd[11111111] 1.sd[12345678]
-movntpd xmm.pd[1234.5678,8765.4321] m128.pd[1111.1111,2222.2222] 1.pd[1234.5678,8765.4321]
-movq2dq mm.uq[0x012345678abcdef] xmm.uq[0x1212121234343434,0x5656565678787878] 1.uq[0x012345678abcdef,0]
-movsd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,2222.2222]
-movsd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,0.0]
-movsd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] 1.pd[1234.5678]
-movupd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,8765.4321]
-movupd m128.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] 1.pd[1234.5678,8765.4321]
-mulpd xmm.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] 1.pd[3703.7034,17530.8642]
-mulpd m128.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] 1.pd[3703.7034,17530.8642]
-mulsd xmm.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] 1.pd[3703.7034,2.0]
-mulsd m128.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] 1.pd[3703.7034,2.0]
-orpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-orpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-packssdw xmm.sd[12345,-12345,123456,-123456] xmm.sd[4321,-4321,54321,-54321] 1.sw[4321,-4321,32767,-32768,12345,-12345,32767,-32768]
-packssdw m128.sd[12345,-12345,123456,-123456] xmm.sd[4321,-4321,54321,-54321] 1.sw[4321,-4321,32767,-32768,12345,-12345,32767,-32768]
-packsswb xmm.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] 1.sb[21,-21,127,-128,21,-21,127,-128,123,-123,127,-128,123,-123,127,-128]
-packsswb m128.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] 1.sb[21,-21,127,-128,21,-21,127,-128,123,-123,127,-128,123,-123,127,-128]
-packuswb xmm.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] 1.ub[21,0,255,0,21,0,255,0,123,0,255,0,123,0,255,0]
-packuswb m128.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] 1.ub[21,0,255,0,21,0,255,0,123,0,255,0,123,0,255,0]
-paddb xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] 1.sb[20,41,62,83,25,46,67,88,20,41,62,83,25,46,67,88]
-paddb m128.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] 1.sb[20,41,62,83,25,46,67,88,20,41,62,83,25,46,67,88]
-paddd xmm.sd[12345678,87654321,12345678,87654321] xmm.sd[8765,4321,8765,4321] 1.sd[12354443,87658642,12354443,87658642]
-paddd m128.sd[12345678,87654321,12345678,87654321] xmm.sd[8765,4321,8765,4321] 1.sd[12354443,87658642,12354443,87658642]
-paddq mm.sq[11111111] mm.sq[22222222] 1.sq[33333333]
-paddq m64.sq[11111111] mm.sq[22222222] 1.sq[33333333]
-paddq xmm.sq[11111111,22222222] xmm.sq[22222222,33333333] 1.sq[33333333,55555555]
-paddq m128.sq[11111111,22222222] xmm.sq[22222222,33333333] 1.sq[33333333,55555555]
-paddsb xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] xmm.sb[40,-40,30,-30,20,-20,10,-10,40,-40,30,-30,20,-20,10,-10] 1.sb[65,-65,80,-80,120,-120,127,-128,65,-65,80,-80,120,-120,127,-128]
-paddsb m128.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] xmm.sb[40,-40,30,-30,20,-20,10,-10,40,-40,30,-30,20,-20,10,-10] 1.sb[65,-65,80,-80,120,-120,127,-128,65,-65,80,-80,120,-120,127,-128]
-paddsw xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] xmm.sw[32145,-32145,-12345,12345,32145,-32145,-12345,12345] 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
-paddsw m128.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] xmm.sw[32145,-32145,-12345,12345,32145,-32145,-12345,12345] 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
-paddusb xmm.ub[25,50,75,100,125,150,175,200,25,50,75,100,125,150,175,200] xmm.ub[10,20,30,40,50,60,70,80,10,20,30,40,50,60,70,80] 1.ub[35,70,105,140,175,210,245,255,35,70,105,140,175,210,245,255]
-paddusb m128.ub[25,50,75,100,125,150,175,200,25,50,75,100,125,150,175,200] xmm.ub[10,20,30,40,50,60,70,80,10,20,30,40,50,60,70,80] 1.ub[35,70,105,140,175,210,245,255,35,70,105,140,175,210,245,255]
-paddusw xmm.uw[22222,33333,44444,55555,22222,33333,44444,55555] xmm.uw[6666,7777,8888,9999,6666,7777,8888,9999] 1.uw[28888,41110,53332,65535,28888,41110,53332,65535]
-paddusw m128.uw[22222,33333,44444,55555,22222,33333,44444,55555] xmm.uw[6666,7777,8888,9999,6666,7777,8888,9999] 1.uw[28888,41110,53332,65535,28888,41110,53332,65535]
-paddw xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] xmm.sw[87,65,43,21,87,65,43,21] 1.sw[1321,5743,4364,8786,1321,5743,4364,8786]
-paddw m128.sw[1234,5678,4321,8765,1234,5678,4321,8765] xmm.sw[87,65,43,21,87,65,43,21] 1.sw[1321,5743,4364,8786,1321,5743,4364,8786]
-pand xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-pand m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0x0121452188a84420,0x0121452188a84420]
-pandn xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-pandn m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc98301064002000,0x00020046010389cf]
-pavgb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[15,25,35,45,55,65,75,85,15,25,35,45,55,65,75,85] 1.ub[13,24,34,45,55,66,76,87,13,24,34,45,55,66,76,87]
-pavgb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[15,25,35,45,55,65,75,85,15,25,35,45,55,65,75,85] 1.ub[13,24,34,45,55,66,76,87,13,24,34,45,55,66,76,87]
-pavgw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1525,3545,5565,7585,1525,3545,5565,7585] 1.uw[1324,3445,5566,7687,1324,3445,5566,7687]
-pavgw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1525,3545,5565,7585,1525,3545,5565,7585] 1.uw[1324,3445,5566,7687,1324,3445,5566,7687]
-pcmpeqb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[11,11,33,33,55,55,77,77,11,11,33,33,55,55,77,77] 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
-pcmpeqb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[11,11,33,33,55,55,77,77,11,11,33,33,55,55,77,77] 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
-pcmpeqd xmm.ud[11223344,55667788,11223344,55667788] xmm.ud[11223344,11223344,11223344,11223344] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-pcmpeqd m128.ud[11223344,55667788,11223344,55667788] xmm.ud[11223344,11223344,11223344,11223344] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-pcmpeqw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1122,1122,5566,5566,1122,1122,5566,5566] 1.uw[0xffff,0x0000,0xffff,0x0000,0xffff,0x0000,0xffff,0x0000]
-pcmpeqw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1122,1122,5566,5566,1122,1122,5566,5566] 1.uw[0xffff,0x0000,0xffff,0x0000,0xffff,0x0000,0xffff,0x0000]
-pcmpgtb xmm.sb[-77,-55,-33,-11,11,33,55,77,-77,-55,-33,-11,11,33,55,77] xmm.sb[77,55,33,11,-11,-33,-55,-77,77,55,33,11,-11,-33,-55,-77] 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
-pcmpgtb m128.sb[-77,-55,-33,-11,11,33,55,77,-77,-55,-33,-11,11,33,55,77] xmm.sb[77,55,33,11,-11,-33,-55,-77,77,55,33,11,-11,-33,-55,-77] 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
-pcmpgtd xmm.sd[-11111111,11111111,-11111111,11111111] xmm.sd[11111111,-11111111,11111111,-11111111] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-pcmpgtd m128.sd[-11111111,11111111,-11111111,11111111] xmm.sd[11111111,-11111111,11111111,-11111111] 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
-pcmpgtw xmm.sw[-3333,-1111,1111,3333,-3333,-1111,1111,3333] xmm.sw[3333,1111,-1111,-3333,3333,1111,-1111,-3333] 1.uw[0xffff,0xffff,0x0000,0x0000,0xffff,0xffff,0x0000,0x0000]
-pcmpgtw m128.sw[-3333,-1111,1111,3333,-3333,-1111,1111,3333] xmm.sw[3333,1111,-1111,-3333,3333,1111,-1111,-3333] 1.uw[0xffff,0xffff,0x0000,0x0000,0xffff,0xffff,0x0000,0x0000]
-pextrw imm8[0] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[1234]
-pextrw imm8[1] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[5678]
-pextrw imm8[2] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[4321]
-pextrw imm8[3] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[8765]
-pextrw imm8[4] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[1111]
-pextrw imm8[5] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[2222]
-pextrw imm8[6] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[3333]
-pextrw imm8[7] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r.ud[0xffffffff] 2.ud[4444]
-pinsrw imm8[0] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[65535,5678,4321,8765,1111,2222,3333,4444]
-pinsrw imm8[1] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,65535,4321,8765,1111,2222,3333,4444]
-pinsrw imm8[2] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,65535,8765,1111,2222,3333,4444]
-pinsrw imm8[3] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,4321,65535,1111,2222,3333,4444]
-pinsrw imm8[4] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,4321,8765,65535,2222,3333,4444]
-pinsrw imm8[5] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,4321,8765,1111,65535,3333,4444]
-pinsrw imm8[6] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,4321,8765,1111,2222,65535,4444]
-pinsrw imm8[7] r.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] 2.uw[1234,5678,4321,8765,1111,2222,3333,65535]
-pmaddwd xmm.sw[1234,5678,-4321,-8765,1234,5678,-4321,-8765] xmm.sw[1111,-2222,3333,-4444,1111,-2222,3333,-4444] 1.sd[-11245542,24549767,-11245542,24549767]
-pmaddwd m128.sw[1234,5678,-4321,-8765,1234,5678,-4321,-8765] xmm.sw[1111,-2222,3333,-4444,1111,-2222,3333,-4444] 1.sd[-11245542,24549767,-11245542,24549767]
-pmaxsw xmm.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] 1.sw[2,2,4,4,6,6,8,8]
-pmaxsw m128.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] 1.sw[2,2,4,4,6,6,8,8]
-pmaxub xmm.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] 1.ub[25,24,23,22,21,20,19,18,18,19,20,21,22,23,24,25]
-pmaxub m128.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] 1.ub[25,24,23,22,21,20,19,18,18,19,20,21,22,23,24,25]
-pminsw xmm.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] 1.sw[-1,-3,-3,-5,-5,-7,-7,-9]
-pminsw m128.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] 1.sw[-1,-3,-3,-5,-5,-7,-7,-9]
-pminub xmm.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] 1.ub[10,11,12,13,14,15,16,17,17,16,15,14,13,12,11,10]
-pminub m128.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] 1.ub[10,11,12,13,14,15,16,17,17,16,15,14,13,12,11,10]
-pmovmskb xmm.uq[0x8000000080008088,0x8000000080008088] r.ud[0] 1.ud[0x8b8b]
-pmulhuw xmm.uw[1111,2222,3333,4444,5555,6666,7777,8888] xmm.uw[5555,6666,7777,8888,9999,1111,2222,3333] 1.uw[0x005e,0x00e2,0x018b,0x025a,0x034f,0x0071,0x0107,0x01c4]
-pmulhuw m128.uw[1111,2222,3333,4444,5555,6666,7777,8888] xmm.uw[5555,6666,7777,8888,9999,1111,2222,3333] 1.uw[0x005e,0x00e2,0x018b,0x025a,0x034f,0x0071,0x0107,0x01c4]
-pmulhw xmm.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] 1.uw[0x0038,0xff69,0xffc7,0x0096,0x0038,0xff69,0xffc7,0x0096]
-pmulhw m128.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] 1.uw[0x0038,0xff69,0xffc7,0x0096,0x0038,0xff69,0xffc7,0x0096]
-pmullw xmm.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] 1.uw[0x80b3,0x5378,0x7f4d,0xac88,0x80b3,0x5378,0x7f4d,0xac88]
-pmullw m128.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] 1.uw[0x80b3,0x5378,0x7f4d,0xac88,0x80b3,0x5378,0x7f4d,0xac88]
-pmuludq mm.ud[12345678,0] mm.ud[87654321,0] 1.uq[1082152022374638]
-pmuludq m64.ud[12345678,0] mm.ud[87654321,0] 1.uq[1082152022374638]
-pmuludq xmm.ud[12345678,0,87654321,0] xmm.ud[87654321,0,12345678,0] 1.uq[1082152022374638,1082152022374638]
-pmuludq m128.ud[12345678,0,87654321,0] xmm.ud[87654321,0,12345678,0] 1.uq[1082152022374638,1082152022374638]
-por xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-por m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
-psadbw xmm.ub[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] xmm.ub[16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] 1.sw[64,0,0,0,64,0,0,0]
-psadbw m128.ub[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] xmm.ub[16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] 1.sw[64,0,0,0,64,0,0,0]
-pshufd imm8[0x1b] xmm.sd[1122,3344,5566,7788] xmm.sd[0,0,0,0] 2.sd[7788,5566,3344,1122]
-pshufd imm8[0x1b] m128.sd[1122,3344,5566,7788] xmm.sd[0,0,0,0] 2.sd[7788,5566,3344,1122]
-pshufhw imm8[0x1b] xmm.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] 2.sw[11,22,33,44,88,77,66,55]
-pshufhw imm8[0x1b] m128.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] 2.sw[11,22,33,44,88,77,66,55]
-pshuflw imm8[0x1b] xmm.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] 2.sw[44,33,22,11,55,66,77,88]
-pshuflw imm8[0x1b] m128.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] 2.sw[44,33,22,11,55,66,77,88]
-pslld imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
-pslld xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
-pslld m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
-pslldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] 1.uq[0xccddeeff00000000,0x445566778899aabb]
-pslldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] 1.uq[0xccddeeff00000000,0x445566778899aabb]
-psllq imm8[4] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x123456789abcdef0,0x123456789abcdef0]
-psllq xmm.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x123456789abcdef0,0x123456789abcdef0]
-psllq m128.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x123456789abcdef0,0x123456789abcdef0]
-psllw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
-psllw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
-psllw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
-psrad imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
-psrad xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
-psrad m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
-psraw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
-psraw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
-psraw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
-psrld imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
-psrld xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
-psrld m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
-psrldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] 1.uq[0x445566778899aabb,0x0000000000112233]
-psrldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] 1.uq[0x445566778899aabb,0x0000000000112233]
-psrlq imm8[4] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x00123456789abcde,0x00123456789abcde]
-psrlq xmm.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x00123456789abcde,0x00123456789abcde]
-psrlq m128.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] 1.uq[0x00123456789abcde,0x00123456789abcde]
-psrlw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
-psrlw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
-psrlw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
-psubb xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] 1.sb[4,27,50,73,17,40,63,86,4,27,50,73,17,40,63,86]
-psubb m128.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] 1.sb[4,27,50,73,17,40,63,86,4,27,50,73,17,40,63,86]
-psubd xmm.sd[8765,4321,8765,4321] xmm.sd[12345678,87654321,12345678,87654321] 1.sd[12336913,87650000,12336913,87650000]
-psubd m128.sd[8765,4321,8765,4321] xmm.sd[12345678,87654321,12345678,87654321] 1.sd[12336913,87650000,12336913,87650000]
-psubq mm.sq[11111111] mm.sq[33333333] 1.sq[22222222]
-psubq m64.sq[11111111] mm.sq[33333333] 1.sq[22222222]
-psubq xmm.sq[11111111,22222222] xmm.sq[55555555,33333333] 1.sq[44444444,11111111]
-psubq m128.sq[11111111,22222222] xmm.sq[55555555,33333333] 1.sq[44444444,11111111]
-psubsb xmm.sb[-50,50,-40,40,-30,30,-20,20,-50,50,-40,40,-30,30,-20,20] xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] 1.sb[75,-75,90,-90,127,-128,127,-128,75,-75,90,-90,127,-128,127,-128]
-psubsb m128.sb[-50,50,-40,40,-30,30,-20,20,-50,50,-40,40,-30,30,-20,20] xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] 1.sb[75,-75,90,-90,127,-128,127,-128,75,-75,90,-90,127,-128,127,-128]
-psubsw xmm.sw[-32145,32145,12345,-12345,-32145,32145,12345,-12345] xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
-psubsw m128.sw[-32145,32145,12345,-12345,-32145,32145,12345,-12345] xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
-psubusb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[88,77,66,55,44,33,22,11,88,77,66,55,44,33,22,11] 1.ub[77,55,33,11,0,0,0,0,77,55,33,11,0,0,0,0]
-psubusb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[88,77,66,55,44,33,22,11,88,77,66,55,44,33,22,11] 1.ub[77,55,33,11,0,0,0,0,77,55,33,11,0,0,0,0]
-psubusw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[8877,6655,4433,2211,8877,6655,4433,2211] 1.uw[7755,3311,0,0,7755,3311,0,0]
-psubusw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[8877,6655,4433,2211,8877,6655,4433,2211] 1.uw[7755,3311,0,0,7755,3311,0,0]
-psubw xmm.sw[87,65,43,21,87,65,43,21] xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] 1.sw[1147,5613,4278,8744,1147,5613,4278,8744]
-psubw m128.sw[87,65,43,21,87,65,43,21] xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] 1.sw[1147,5613,4278,8744,1147,5613,4278,8744]
-punpckhbw xmm.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] 1.ub[88,78,77,56,66,34,55,12,44,87,33,65,22,43,11,21]
-punpckhbw m128.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] 1.ub[88,78,77,56,66,34,55,12,44,87,33,65,22,43,11,21]
-punpckhdq xmm.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] 1.ud[88776655,78563412,44332211,87654321]
-punpckhdq m128.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] 1.ud[88776655,78563412,44332211,87654321]
-punpckhqdq xmm.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] 1.uq[8877665544332211,7856341287654321]
-punpckhqdq m128.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] 1.uq[8877665544332211,7856341287654321]
-punpckhwd xmm.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] 1.uw[8877,7856,6655,3412,4433,8765,2211,4321]
-punpckhwd m128.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] 1.uw[8877,7856,6655,3412,4433,8765,2211,4321]
-punpcklbw xmm.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] 1.ub[11,12,22,34,33,56,44,78,55,21,66,43,77,65,88,87]
-punpcklbw m128.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] 1.ub[11,12,22,34,33,56,44,78,55,21,66,43,77,65,88,87]
-punpckldq xmm.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] 1.ud[11223344,12345678,55667788,21436587]
-punpckldq m128.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] 1.ud[11223344,12345678,55667788,21436587]
-punpcklqdq xmm.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] 1.uq[1122334455667788,1234567821436587]
-punpcklqdq m128.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] 1.uq[1122334455667788,1234567821436587]
-punpcklwd xmm.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] 1.uw[1122,1234,3344,5678,5566,2143,7788,6587]
-punpcklwd m128.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] 1.uw[1122,1234,3344,5678,5566,2143,7788,6587]
-pxor xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
-pxor m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
-shufpd imm8[0x0] xmm.pd[1234.5678,8765.4321] xmm.pd[1234.5678,8765.4321] 2.pd[1234.5678,1234.5678]
-shufpd imm8[0x3] m128.pd[1234.5678,8765.4321] xmm.pd[1234.5678,8765.4321] 2.pd[8765.4321,8765.4321]
-sqrtpd xmm.pd[36.0,49.0] xmm.pd[1.11,2.22] 1.pd[6.0,7.0]
-sqrtpd m128.pd[36.0,49.0] xmm.pd[1.11,2.22] 1.pd[6.0,7.0]
-sqrtsd xmm.pd[36.0,5.55] xmm.pd[1.11,2.22] 1.pd[6.0,2.22]
-sqrtsd m128.pd[36.0,5.55] xmm.pd[1.11,2.22] 1.pd[6.0,2.22]
-subpd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] 1.pd[987.4322,-7654.4321]
-subpd m128.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] 1.pd[987.4322,-7654.4321]
-subsd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] 1.pd[987.4322,1111.0]
-subsd m128.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] 1.pd[987.4322,1111.0]
-ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] eflags[0x8d5,0x000]
-ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] eflags[0x8d5,0x001]
-ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] eflags[0x8d5,0x040]
-ucomisd m64.pd[1234.5678] xmm.pd[1234.5679,0.0] eflags[0x8d5,0x000]
-ucomisd m64.pd[1234.5678] xmm.pd[1234.5677,0.0] eflags[0x8d5,0x001]
-ucomisd m64.pd[1234.5678] xmm.pd[1234.5678,0.0] eflags[0x8d5,0x040]
-unpckhpd xmm.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] 1.pd[5566.7788,8765.4321]
-unpckhpd m128.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] 1.pd[5566.7788,8765.4321]
-unpcklpd xmm.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] 1.pd[1122.3344,1234.5678]
-unpcklpd m128.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] 1.pd[1122.3344,1234.5678]
-xorpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
-xorpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+addpd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] => 1.pd[3456.79,9876.5432]
+addpd m128.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] => 1.pd[3456.79,9876.5432]
+addsd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] => 1.pd[3456.79,1111.1111]
+addsd m128.pd[1234.5678,8765.4321] xmm.pd[2222.2222,1111.1111] => 1.pd[3456.79,1111.1111]
+andpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+andpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+andnpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+andnpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+cmpeqpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpeqpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpltpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5677,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpltpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5677,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmplepd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmplepd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5678,1234.5679] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpneqpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpneqpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpnltpd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5677] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpnltpd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5677] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpnlepd xmm.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpnlepd m128.pd[1234.5678,1234.5678] xmm.pd[1234.5679,1234.5678] => 1.uq[0xffffffffffffffff,0x0000000000000000]
+cmpeqsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => 1.uq[0xffffffffffffffff,0]
+cmpeqsd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0x0000000000000000,0]
+cmpltsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] => 1.uq[0xffffffffffffffff,0]
+cmpltsd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0x0000000000000000,0]
+cmplesd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => 1.uq[0xffffffffffffffff,0]
+cmplesd m128.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0x0000000000000000,0]
+cmpneqsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0xffffffffffffffff,0]
+cmpneqsd m128.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => 1.uq[0x0000000000000000,0]
+cmpnltsd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0xffffffffffffffff,0]
+cmpnltsd m128.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] => 1.uq[0x0000000000000000,0]
+cmpnlesd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => 1.uq[0xffffffffffffffff,0]
+cmpnlesd m128.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => 1.uq[0x0000000000000000,0]
+comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => eflags[0x8d5,0x000]
+comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] => eflags[0x8d5,0x001]
+comisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => eflags[0x8d5,0x040]
+comisd m64.pd[1234.5678] xmm.pd[1234.5679,0.0] => eflags[0x8d5,0x000]
+comisd m64.pd[1234.5678] xmm.pd[1234.5677,0.0] => eflags[0x8d5,0x001]
+comisd m64.pd[1234.5678] xmm.pd[1234.5678,0.0] => eflags[0x8d5,0x040]
+cvtdq2pd xmm.sd[1234,5678,0,0] xmm.pd[0.0,0.0] => 1.pd[1234.0,5678.0]
+cvtdq2pd m128.sd[1234,5678,0,0] xmm.pd[0.0,0.0] => 1.pd[1234.0,5678.0]
+cvtdq2ps xmm.sd[1234,5678,-1234,-5678] xmm.ps[0.0,0.0,0.0,0.0] => 1.ps[1234.0,5678.0,-1234.0,-5678.0]
+cvtdq2ps m128.sd[1234,5678,-1234,-5678] xmm.ps[0.0,0.0,0.0,0.0] => 1.ps[1234.0,5678.0,-1234.0,-5678.0]
+cvtpd2dq xmm.pd[12.34,56.78] xmm.sd[1,2,3,4] => 1.sd[12,57,0,0]
+cvtpd2dq m128.pd[12.34,56.78] xmm.sd[1,2,3,4] => 1.sd[12,57,0,0]
+cvtpd2pi xmm.pd[12.34,56.78] mm.sd[1,2] => 1.sd[12,57]
+cvtpd2pi m128.pd[12.34,56.78] mm.sd[1,2] => 1.sd[12,57]
+cvtpd2ps xmm.pd[12.34,56.78] xmm.ps[1.1,2.2,3.3,4.4] => 1.ps[12.34,56.78,0.0,0.0]
+cvtpd2ps m128.pd[12.34,56.78] xmm.ps[1.1,2.2,3.3,4.4] => 1.ps[12.34,56.78,0.0,0.0]
+cvtpi2pd mm.sd[1234,5678] xmm.pd[1.1,2.2] => 1.pd[1234.0,5678.0]
+cvtpi2pd m64.sd[1234,5678] xmm.pd[1.1,2.2] => 1.pd[1234.0,5678.0]
+cvtps2dq xmm.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] => 1.sd[12,57,43,88]
+cvtps2dq m128.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] => 1.sd[12,57,43,88]
+cvtps2pd xmm.ps[12.34,56.78,1.1,2.2] xmm.pd[3.3,4.4] => 1.pd[12.34,56.78]
+cvtps2pd m128.ps[12.34,56.78,1.1,2.2] xmm.pd[3.3,4.4] => 1.pd[12.34,56.78]
+cvtsd2si xmm.pd[12.34,56.78] r32.sd[99] => 1.sd[12]
+cvtsd2si m128.pd[56.78,12.34] r32.sd[99] => 1.sd[57]
+cvtsd2ss xmm.pd[12.34,56.78] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[12.34,2.22,3.33,4.44]
+cvtsd2ss m128.pd[12.34,56.78] xmm.ps[1.11,2.22,3.33,4.44] => 1.ps[12.34,2.22,3.33,4.44]
+cvtsi2sd r32.sd[12] xmm.pd[1.11,2.22] => 1.pd[12.0,2.22]
+cvtsi2sd m32.sd[12] xmm.pd[1.11,2.22] => 1.pd[12.0,2.22]
+cvtss2sd xmm.ps[12.34,3.33,4.44,5.55] xmm.pd[1.11,2.22] => 1.pd[12.34,2.22]
+cvtss2sd m128.ps[12.34,3.33,4.44,5.55] xmm.pd[1.11,2.22] => 1.pd[12.34,2.22]
+cvttpd2pi xmm.pd[12.34,56.78] mm.sd[1,2] => 1.sd[12,56]
+cvttpd2pi m128.pd[12.34,56.78] mm.sd[1,2] => 1.sd[12,56]
+cvttpd2dq xmm.pd[12.34,56.78] xmm.sd[1,2,3,4] => 1.sd[12,56,0,0]
+cvttpd2dq m128.pd[12.34,56.78] xmm.sd[1,2,3,4] => 1.sd[12,56,0,0]
+cvttps2dq xmm.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] => 1.sd[12,56,43,87]
+cvttps2dq m128.ps[12.34,56.78,43.21,87.65] xmm.sd[1,2,3,4] => 1.sd[12,56,43,87]
+cvttsd2si xmm.pd[12.34,56.78] r32.sd[99] => 1.sd[12]
+cvttsd2si m128.pd[56.78,12.34] r32.sd[99] => 1.sd[56]
+divpd xmm.pd[2.0,3.0] xmm.pd[24.68,3.69] => 1.pd[12.34,1.23]
+divpd m128.pd[2.0,3.0] xmm.pd[24.68,3.69] => 1.pd[12.34,1.23]
+divsd xmm.pd[2.0,3.0] xmm.pd[24.68,3.69] => 1.pd[12.34,3.69]
+divsd m128.pd[2.0,3.0] xmm.pd[24.68,3.69] => 1.pd[12.34,3.69]
+maxpd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[55.555,44.444]
+maxpd m128.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[55.555,44.444]
+maxsd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[55.555,33.333]
+maxsd m128.pd[44.444,22.222] xmm.pd[33.333,55.555] => 1.pd[44.444,55.555]
+minpd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[22.222,33.333]
+minpd m128.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[22.222,33.333]
+minsd xmm.pd[22.222,44.444] xmm.pd[55.555,33.333] => 1.pd[22.222,33.333]
+minsd m128.pd[44.444,22.222] xmm.pd[33.333,55.555] => 1.pd[33.333,55.555]
+movapd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,8765.4321]
+movapd m128.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,8765.4321]
+movd r32.sd[1234] xmm.sd[1111,2222,3333,4444] => 1.sd[1234,0,0,0]
+movd m32.sd[1234] xmm.sd[1111,2222,3333,4444] => 1.sd[1234,0,0,0]
+movd xmm.sd[1234,2222,3333,4444] r32.sd[1111] => 1.sd[1234]
+movd xmm.sd[1234,2222,3333,4444] m32.sd[1111] => 1.sd[1234]
+movdqa xmm.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdqa m128.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdqa xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdqu xmm.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdqu m128.uq[0x012345678abcdef,0xfedcba9876543210] xmm.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdqu xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movdq2q xmm.uq[0x012345678abcdef,0xfedcba9876543210] mm.uq[0x1212121234343434] => 1.uq[0x012345678abcdef]
+movhpd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] => 1.pd[1111.1111,1234.5678]
+movhpd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] => 1.pd[8765.4321]
+movlpd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,2222.2222]
+movlpd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] => 1.pd[1234.5678]
+movmskpd xmm.pd[1234.5678,-1234.5678] r32.sd[0] => 1.sd[2]
+movntdq xmm.uq[0x012345678abcdef,0xfedcba9876543210] m128.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0xfedcba9876543210]
+movnti r32.sd[12345678] m32.sd[11111111] => 1.sd[12345678]
+movntpd xmm.pd[1234.5678,8765.4321] m128.pd[1111.1111,2222.2222] => 1.pd[1234.5678,8765.4321]
+movq2dq mm.uq[0x012345678abcdef] xmm.uq[0x1212121234343434,0x5656565678787878] => 1.uq[0x012345678abcdef,0]
+movsd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,2222.2222]
+movsd m64.pd[1234.5678] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,0.0]
+movsd xmm.pd[1234.5678,8765.4321] m64.pd[1111.1111] => 1.pd[1234.5678]
+movupd xmm.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,8765.4321]
+movupd m128.pd[1234.5678,8765.4321] xmm.pd[1111.1111,2222.2222] => 1.pd[1234.5678,8765.4321]
+mulpd xmm.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] => 1.pd[3703.7034,17530.8642]
+mulpd m128.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] => 1.pd[3703.7034,17530.8642]
+mulsd xmm.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] => 1.pd[3703.7034,2.0]
+mulsd m128.pd[1234.5678,8765.4321] xmm.pd[3.0,2.0] => 1.pd[3703.7034,2.0]
+orpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+orpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+packssdw xmm.sd[12345,-12345,123456,-123456] xmm.sd[4321,-4321,54321,-54321] => 1.sw[4321,-4321,32767,-32768,12345,-12345,32767,-32768]
+packssdw m128.sd[12345,-12345,123456,-123456] xmm.sd[4321,-4321,54321,-54321] => 1.sw[4321,-4321,32767,-32768,12345,-12345,32767,-32768]
+packsswb xmm.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] => 1.sb[21,-21,127,-128,21,-21,127,-128,123,-123,127,-128,123,-123,127,-128]
+packsswb m128.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] => 1.sb[21,-21,127,-128,21,-21,127,-128,123,-123,127,-128,123,-123,127,-128]
+packuswb xmm.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] => 1.ub[21,0,255,0,21,0,255,0,123,0,255,0,123,0,255,0]
+packuswb m128.sw[123,-123,1234,-1234,123,-123,1234,-1234] xmm.sw[21,-21,321,-321,21,-21,321,-321] => 1.ub[21,0,255,0,21,0,255,0,123,0,255,0,123,0,255,0]
+paddb xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] => 1.sb[20,41,62,83,25,46,67,88,20,41,62,83,25,46,67,88]
+paddb m128.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] => 1.sb[20,41,62,83,25,46,67,88,20,41,62,83,25,46,67,88]
+paddd xmm.sd[12345678,87654321,12345678,87654321] xmm.sd[8765,4321,8765,4321] => 1.sd[12354443,87658642,12354443,87658642]
+paddd m128.sd[12345678,87654321,12345678,87654321] xmm.sd[8765,4321,8765,4321] => 1.sd[12354443,87658642,12354443,87658642]
+paddq mm.sq[11111111] mm.sq[22222222] => 1.sq[33333333]
+paddq m64.sq[11111111] mm.sq[22222222] => 1.sq[33333333]
+paddq xmm.sq[11111111,22222222] xmm.sq[22222222,33333333] => 1.sq[33333333,55555555]
+paddq m128.sq[11111111,22222222] xmm.sq[22222222,33333333] => 1.sq[33333333,55555555]
+paddsb xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] xmm.sb[40,-40,30,-30,20,-20,10,-10,40,-40,30,-30,20,-20,10,-10] => 1.sb[65,-65,80,-80,120,-120,127,-128,65,-65,80,-80,120,-120,127,-128]
+paddsb m128.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] xmm.sb[40,-40,30,-30,20,-20,10,-10,40,-40,30,-30,20,-20,10,-10] => 1.sb[65,-65,80,-80,120,-120,127,-128,65,-65,80,-80,120,-120,127,-128]
+paddsw xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] xmm.sw[32145,-32145,-12345,12345,32145,-32145,-12345,12345] => 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
+paddsw m128.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] xmm.sw[32145,-32145,-12345,12345,32145,-32145,-12345,12345] => 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
+paddusb xmm.ub[25,50,75,100,125,150,175,200,25,50,75,100,125,150,175,200] xmm.ub[10,20,30,40,50,60,70,80,10,20,30,40,50,60,70,80] => 1.ub[35,70,105,140,175,210,245,255,35,70,105,140,175,210,245,255]
+paddusb m128.ub[25,50,75,100,125,150,175,200,25,50,75,100,125,150,175,200] xmm.ub[10,20,30,40,50,60,70,80,10,20,30,40,50,60,70,80] => 1.ub[35,70,105,140,175,210,245,255,35,70,105,140,175,210,245,255]
+paddusw xmm.uw[22222,33333,44444,55555,22222,33333,44444,55555] xmm.uw[6666,7777,8888,9999,6666,7777,8888,9999] => 1.uw[28888,41110,53332,65535,28888,41110,53332,65535]
+paddusw m128.uw[22222,33333,44444,55555,22222,33333,44444,55555] xmm.uw[6666,7777,8888,9999,6666,7777,8888,9999] => 1.uw[28888,41110,53332,65535,28888,41110,53332,65535]
+paddw xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] xmm.sw[87,65,43,21,87,65,43,21] => 1.sw[1321,5743,4364,8786,1321,5743,4364,8786]
+paddw m128.sw[1234,5678,4321,8765,1234,5678,4321,8765] xmm.sw[87,65,43,21,87,65,43,21] => 1.sw[1321,5743,4364,8786,1321,5743,4364,8786]
+pand xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+pand m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0x0121452188a84420,0x0121452188a84420]
+pandn xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+pandn m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc98301064002000,0x00020046010389cf]
+pavgb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[15,25,35,45,55,65,75,85,15,25,35,45,55,65,75,85] => 1.ub[13,24,34,45,55,66,76,87,13,24,34,45,55,66,76,87]
+pavgb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[15,25,35,45,55,65,75,85,15,25,35,45,55,65,75,85] => 1.ub[13,24,34,45,55,66,76,87,13,24,34,45,55,66,76,87]
+pavgw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1525,3545,5565,7585,1525,3545,5565,7585] => 1.uw[1324,3445,5566,7687,1324,3445,5566,7687]
+pavgw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1525,3545,5565,7585,1525,3545,5565,7585] => 1.uw[1324,3445,5566,7687,1324,3445,5566,7687]
+pcmpeqb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[11,11,33,33,55,55,77,77,11,11,33,33,55,55,77,77] => 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
+pcmpeqb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[11,11,33,33,55,55,77,77,11,11,33,33,55,55,77,77] => 1.ub[0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]
+pcmpeqd xmm.ud[11223344,55667788,11223344,55667788] xmm.ud[11223344,11223344,11223344,11223344] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+pcmpeqd m128.ud[11223344,55667788,11223344,55667788] xmm.ud[11223344,11223344,11223344,11223344] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+pcmpeqw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1122,1122,5566,5566,1122,1122,5566,5566] => 1.uw[0xffff,0x0000,0xffff,0x0000,0xffff,0x0000,0xffff,0x0000]
+pcmpeqw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[1122,1122,5566,5566,1122,1122,5566,5566] => 1.uw[0xffff,0x0000,0xffff,0x0000,0xffff,0x0000,0xffff,0x0000]
+pcmpgtb xmm.sb[-77,-55,-33,-11,11,33,55,77,-77,-55,-33,-11,11,33,55,77] xmm.sb[77,55,33,11,-11,-33,-55,-77,77,55,33,11,-11,-33,-55,-77] => 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
+pcmpgtb m128.sb[-77,-55,-33,-11,11,33,55,77,-77,-55,-33,-11,11,33,55,77] xmm.sb[77,55,33,11,-11,-33,-55,-77,77,55,33,11,-11,-33,-55,-77] => 1.ub[0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]
+pcmpgtd xmm.sd[-11111111,11111111,-11111111,11111111] xmm.sd[11111111,-11111111,11111111,-11111111] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+pcmpgtd m128.sd[-11111111,11111111,-11111111,11111111] xmm.sd[11111111,-11111111,11111111,-11111111] => 1.ud[0xffffffff,0x00000000,0xffffffff,0x00000000]
+pcmpgtw xmm.sw[-3333,-1111,1111,3333,-3333,-1111,1111,3333] xmm.sw[3333,1111,-1111,-3333,3333,1111,-1111,-3333] => 1.uw[0xffff,0xffff,0x0000,0x0000,0xffff,0xffff,0x0000,0x0000]
+pcmpgtw m128.sw[-3333,-1111,1111,3333,-3333,-1111,1111,3333] xmm.sw[3333,1111,-1111,-3333,3333,1111,-1111,-3333] => 1.uw[0xffff,0xffff,0x0000,0x0000,0xffff,0xffff,0x0000,0x0000]
+pextrw imm8[0] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[1234]
+pextrw imm8[1] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[5678]
+pextrw imm8[2] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[4321]
+pextrw imm8[3] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[8765]
+pextrw imm8[4] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[1111]
+pextrw imm8[5] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[2222]
+pextrw imm8[6] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[3333]
+pextrw imm8[7] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] r32.ud[0xffffffff] => 2.ud[4444]
+pinsrw imm8[0] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[65535,5678,4321,8765,1111,2222,3333,4444]
+pinsrw imm8[1] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,65535,4321,8765,1111,2222,3333,4444]
+pinsrw imm8[2] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,65535,8765,1111,2222,3333,4444]
+pinsrw imm8[3] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,4321,65535,1111,2222,3333,4444]
+pinsrw imm8[4] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,4321,8765,65535,2222,3333,4444]
+pinsrw imm8[5] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,4321,8765,1111,65535,3333,4444]
+pinsrw imm8[6] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,4321,8765,1111,2222,65535,4444]
+pinsrw imm8[7] r32.ud[0xffffffff] xmm.uw[1234,5678,4321,8765,1111,2222,3333,4444] => 2.uw[1234,5678,4321,8765,1111,2222,3333,65535]
+pmaddwd xmm.sw[1234,5678,-4321,-8765,1234,5678,-4321,-8765] xmm.sw[1111,-2222,3333,-4444,1111,-2222,3333,-4444] => 1.sd[-11245542,24549767,-11245542,24549767]
+pmaddwd m128.sw[1234,5678,-4321,-8765,1234,5678,-4321,-8765] xmm.sw[1111,-2222,3333,-4444,1111,-2222,3333,-4444] => 1.sd[-11245542,24549767,-11245542,24549767]
+pmaxsw xmm.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] => 1.sw[2,2,4,4,6,6,8,8]
+pmaxsw m128.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] => 1.sw[2,2,4,4,6,6,8,8]
+pmaxub xmm.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] => 1.ub[25,24,23,22,21,20,19,18,18,19,20,21,22,23,24,25]
+pmaxub m128.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] => 1.ub[25,24,23,22,21,20,19,18,18,19,20,21,22,23,24,25]
+pminsw xmm.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] => 1.sw[-1,-3,-3,-5,-5,-7,-7,-9]
+pminsw m128.sw[-1,2,-3,4,-5,6,-7,8] xmm.sw[2,-3,4,-5,6,-7,8,-9] => 1.sw[-1,-3,-3,-5,-5,-7,-7,-9]
+pminub xmm.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] => 1.ub[10,11,12,13,14,15,16,17,17,16,15,14,13,12,11,10]
+pminub m128.ub[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25] xmm.ub[25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10] => 1.ub[10,11,12,13,14,15,16,17,17,16,15,14,13,12,11,10]
+pmovmskb xmm.uq[0x8000000080008088,0x8000000080008088] r32.ud[0] => 1.ud[0x8b8b]
+pmulhuw xmm.uw[1111,2222,3333,4444,5555,6666,7777,8888] xmm.uw[5555,6666,7777,8888,9999,1111,2222,3333] => 1.uw[0x005e,0x00e2,0x018b,0x025a,0x034f,0x0071,0x0107,0x01c4]
+pmulhuw m128.uw[1111,2222,3333,4444,5555,6666,7777,8888] xmm.uw[5555,6666,7777,8888,9999,1111,2222,3333] => 1.uw[0x005e,0x00e2,0x018b,0x025a,0x034f,0x0071,0x0107,0x01c4]
+pmulhw xmm.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] => 1.uw[0x0038,0xff69,0xffc7,0x0096,0x0038,0xff69,0xffc7,0x0096]
+pmulhw m128.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] => 1.uw[0x0038,0xff69,0xffc7,0x0096,0x0038,0xff69,0xffc7,0x0096]
+pmullw xmm.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] => 1.uw[0x80b3,0x5378,0x7f4d,0xac88,0x80b3,0x5378,0x7f4d,0xac88]
+pmullw m128.sw[1111,2222,-1111,-2222,1111,2222,-1111,-2222] xmm.sw[3333,-4444,3333,-4444,3333,-4444,3333,-4444] => 1.uw[0x80b3,0x5378,0x7f4d,0xac88,0x80b3,0x5378,0x7f4d,0xac88]
+pmuludq mm.ud[12345678,0] mm.ud[87654321,0] => 1.uq[1082152022374638]
+pmuludq m64.ud[12345678,0] mm.ud[87654321,0] => 1.uq[1082152022374638]
+pmuludq xmm.ud[12345678,0,87654321,0] xmm.ud[87654321,0,12345678,0] => 1.uq[1082152022374638,1082152022374638]
+pmuludq m128.ud[12345678,0,87654321,0] xmm.ud[87654321,0,12345678,0] => 1.uq[1082152022374638,1082152022374638]
+por xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+por m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfdbb7577edabedef,0xfdbb7577edabedef]
+psadbw xmm.ub[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] xmm.ub[16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] => 1.sw[64,0,0,0,64,0,0,0]
+psadbw m128.ub[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] xmm.ub[16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] => 1.sw[64,0,0,0,64,0,0,0]
+pshufd imm8[0x1b] xmm.sd[1122,3344,5566,7788] xmm.sd[0,0,0,0] => 2.sd[7788,5566,3344,1122]
+pshufd imm8[0x1b] m128.sd[1122,3344,5566,7788] xmm.sd[0,0,0,0] => 2.sd[7788,5566,3344,1122]
+pshufhw imm8[0x1b] xmm.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] => 2.sw[11,22,33,44,88,77,66,55]
+pshufhw imm8[0x1b] m128.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] => 2.sw[11,22,33,44,88,77,66,55]
+pshuflw imm8[0x1b] xmm.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] => 2.sw[44,33,22,11,55,66,77,88]
+pshuflw imm8[0x1b] m128.sw[11,22,33,44,55,66,77,88] xmm.sw[0,0,0,0,0,0,0,0] => 2.sw[44,33,22,11,55,66,77,88]
+pslld imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
+pslld xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
+pslld m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x12345670,0x9abcdef0,0x12345670,0x9abcdef0]
+pslldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] => 1.uq[0xccddeeff00000000,0x445566778899aabb]
+pslldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] => 1.uq[0xccddeeff00000000,0x445566778899aabb]
+psllq imm8[4] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x123456789abcdef0,0x123456789abcdef0]
+psllq xmm.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x123456789abcdef0,0x123456789abcdef0]
+psllq m128.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x123456789abcdef0,0x123456789abcdef0]
+psllw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
+psllw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
+psllw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x1230,0x5670,0x9ab0,0xdef0,0x1230,0x5670,0x9ab0,0xdef0]
+psrad imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
+psrad xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
+psrad m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0xf89abcde,0x00123456,0xf89abcde]
+psraw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
+psraw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
+psraw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0xf89a,0xfcde,0x0012,0x0456,0xf89a,0xfcde]
+psrld imm8[4] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
+psrld xmm.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
+psrld m128.uq[4,0] xmm.ud[0x01234567,0x89abcdef,0x01234567,0x89abcdef] => 1.ud[0x00123456,0x089abcde,0x00123456,0x089abcde]
+psrldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] => 1.uq[0x445566778899aabb,0x0000000000112233]
+psrldq imm8[4] xmm.uq[0x8899aabbccddeeff,0x0011223344556677] => 1.uq[0x445566778899aabb,0x0000000000112233]
+psrlq imm8[4] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x00123456789abcde,0x00123456789abcde]
+psrlq xmm.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x00123456789abcde,0x00123456789abcde]
+psrlq m128.uq[4,0] xmm.uq[0x0123456789abcdef,0x0123456789abcdef] => 1.uq[0x00123456789abcde,0x00123456789abcde]
+psrlw imm8[4] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
+psrlw xmm.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
+psrlw m128.uq[4,0] xmm.uw[0x0123,0x4567,0x89ab,0xcdef,0x0123,0x4567,0x89ab,0xcdef] => 1.uw[0x0012,0x0456,0x089a,0x0cde,0x0012,0x0456,0x089a,0x0cde]
+psubb xmm.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] => 1.sb[4,27,50,73,17,40,63,86,4,27,50,73,17,40,63,86]
+psubb m128.sb[8,7,6,5,4,3,2,1,8,7,6,5,4,3,2,1] xmm.sb[12,34,56,78,21,43,65,87,12,34,56,78,21,43,65,87] => 1.sb[4,27,50,73,17,40,63,86,4,27,50,73,17,40,63,86]
+psubd xmm.sd[8765,4321,8765,4321] xmm.sd[12345678,87654321,12345678,87654321] => 1.sd[12336913,87650000,12336913,87650000]
+psubd m128.sd[8765,4321,8765,4321] xmm.sd[12345678,87654321,12345678,87654321] => 1.sd[12336913,87650000,12336913,87650000]
+psubq mm.sq[11111111] mm.sq[33333333] => 1.sq[22222222]
+psubq m64.sq[11111111] mm.sq[33333333] => 1.sq[22222222]
+psubq xmm.sq[11111111,22222222] xmm.sq[55555555,33333333] => 1.sq[44444444,11111111]
+psubq m128.sq[11111111,22222222] xmm.sq[55555555,33333333] => 1.sq[44444444,11111111]
+psubsb xmm.sb[-50,50,-40,40,-30,30,-20,20,-50,50,-40,40,-30,30,-20,20] xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] => 1.sb[75,-75,90,-90,127,-128,127,-128,75,-75,90,-90,127,-128,127,-128]
+psubsb m128.sb[-50,50,-40,40,-30,30,-20,20,-50,50,-40,40,-30,30,-20,20] xmm.sb[25,-25,50,-50,100,-100,125,-125,25,-25,50,-50,100,-100,125,-125] => 1.sb[75,-75,90,-90,127,-128,127,-128,75,-75,90,-90,127,-128,127,-128]
+psubsw xmm.sw[-32145,32145,12345,-12345,-32145,32145,12345,-12345] xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] => 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
+psubsw m128.sw[-32145,32145,12345,-12345,-32145,32145,12345,-12345] xmm.sw[12345,-12345,32145,-32145,12345,-12345,32145,-32145] => 1.sw[32767,-32768,19800,-19800,32767,-32768,19800,-19800]
+psubusb xmm.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[88,77,66,55,44,33,22,11,88,77,66,55,44,33,22,11] => 1.ub[77,55,33,11,0,0,0,0,77,55,33,11,0,0,0,0]
+psubusb m128.ub[11,22,33,44,55,66,77,88,11,22,33,44,55,66,77,88] xmm.ub[88,77,66,55,44,33,22,11,88,77,66,55,44,33,22,11] => 1.ub[77,55,33,11,0,0,0,0,77,55,33,11,0,0,0,0]
+psubusw xmm.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[8877,6655,4433,2211,8877,6655,4433,2211] => 1.uw[7755,3311,0,0,7755,3311,0,0]
+psubusw m128.uw[1122,3344,5566,7788,1122,3344,5566,7788] xmm.uw[8877,6655,4433,2211,8877,6655,4433,2211] => 1.uw[7755,3311,0,0,7755,3311,0,0]
+psubw xmm.sw[87,65,43,21,87,65,43,21] xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] => 1.sw[1147,5613,4278,8744,1147,5613,4278,8744]
+psubw m128.sw[87,65,43,21,87,65,43,21] xmm.sw[1234,5678,4321,8765,1234,5678,4321,8765] => 1.sw[1147,5613,4278,8744,1147,5613,4278,8744]
+punpckhbw xmm.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] => 1.ub[88,78,77,56,66,34,55,12,44,87,33,65,22,43,11,21]
+punpckhbw m128.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] => 1.ub[88,78,77,56,66,34,55,12,44,87,33,65,22,43,11,21]
+punpckhdq xmm.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] => 1.ud[88776655,78563412,44332211,87654321]
+punpckhdq m128.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] => 1.ud[88776655,78563412,44332211,87654321]
+punpckhqdq xmm.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] => 1.uq[8877665544332211,7856341287654321]
+punpckhqdq m128.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] => 1.uq[8877665544332211,7856341287654321]
+punpckhwd xmm.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] => 1.uw[8877,7856,6655,3412,4433,8765,2211,4321]
+punpckhwd m128.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] => 1.uw[8877,7856,6655,3412,4433,8765,2211,4321]
+punpcklbw xmm.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] => 1.ub[11,12,22,34,33,56,44,78,55,21,66,43,77,65,88,87]
+punpcklbw m128.ub[12,34,56,78,21,43,65,87,78,56,34,12,87,65,43,21] xmm.ub[11,22,33,44,55,66,77,88,88,77,66,55,44,33,22,11] => 1.ub[11,12,22,34,33,56,44,78,55,21,66,43,77,65,88,87]
+punpckldq xmm.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] => 1.ud[11223344,12345678,55667788,21436587]
+punpckldq m128.ud[12345678,21436587,78563412,87654321] xmm.ud[11223344,55667788,88776655,44332211] => 1.ud[11223344,12345678,55667788,21436587]
+punpcklqdq xmm.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] => 1.uq[1122334455667788,1234567821436587]
+punpcklqdq m128.uq[1234567821436587,7856341287654321] xmm.uq[1122334455667788,8877665544332211] => 1.uq[1122334455667788,1234567821436587]
+punpcklwd xmm.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] => 1.uw[1122,1234,3344,5678,5566,2143,7788,6587]
+punpcklwd m128.uw[1234,5678,2143,6587,7856,3412,8765,4321] xmm.uw[1122,3344,5566,7788,8877,6655,4433,2211] => 1.uw[1122,1234,3344,5678,5566,2143,7788,6587]
+pxor xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+pxor m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+shufpd imm8[0x0] xmm.pd[1234.5678,8765.4321] xmm.pd[1234.5678,8765.4321] => 2.pd[1234.5678,1234.5678]
+shufpd imm8[0x3] m128.pd[1234.5678,8765.4321] xmm.pd[1234.5678,8765.4321] => 2.pd[8765.4321,8765.4321]
+sqrtpd xmm.pd[36.0,49.0] xmm.pd[1.11,2.22] => 1.pd[6.0,7.0]
+sqrtpd m128.pd[36.0,49.0] xmm.pd[1.11,2.22] => 1.pd[6.0,7.0]
+sqrtsd xmm.pd[36.0,5.55] xmm.pd[1.11,2.22] => 1.pd[6.0,2.22]
+sqrtsd m128.pd[36.0,5.55] xmm.pd[1.11,2.22] => 1.pd[6.0,2.22]
+subpd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] => 1.pd[987.4322,-7654.4321]
+subpd m128.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] => 1.pd[987.4322,-7654.4321]
+subsd xmm.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] => 1.pd[987.4322,1111.0]
+subsd m128.pd[1234.5678,8765.4321] xmm.pd[2222.0,1111.0] => 1.pd[987.4322,1111.0]
+ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5679,0.0] => eflags[0x8d5,0x000]
+ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5677,0.0] => eflags[0x8d5,0x001]
+ucomisd xmm.pd[1234.5678,0.0] xmm.pd[1234.5678,0.0] => eflags[0x8d5,0x040]
+ucomisd m64.pd[1234.5678] xmm.pd[1234.5679,0.0] => eflags[0x8d5,0x000]
+ucomisd m64.pd[1234.5678] xmm.pd[1234.5677,0.0] => eflags[0x8d5,0x001]
+ucomisd m64.pd[1234.5678] xmm.pd[1234.5678,0.0] => eflags[0x8d5,0x040]
+unpckhpd xmm.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] => 1.pd[5566.7788,8765.4321]
+unpckhpd m128.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] => 1.pd[5566.7788,8765.4321]
+unpcklpd xmm.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] => 1.pd[1122.3344,1234.5678]
+unpcklpd m128.pd[1234.5678,8765.4321] xmm.pd[1122.3344,5566.7788] => 1.pd[1122.3344,1234.5678]
+xorpd xmm.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
+xorpd m128.uq[0xfdb97531eca86420,0x0123456789abcdef] xmm.uq[0x0123456789abcdef,0xfdb97531eca86420] => 1.uq[0xfc9a30566503a9cf,0xfc9a30566503a9cf]
index 9e4b0ca7bb22f7ab07d9a741f30e44295992e4dd..16248f0b7e243b51f6e644b65437dd2cc3e35fe2 100644 (file)
@@ -2,7 +2,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-static __inline__ void cpuid(int n,
+static __inline__ void cpuid(unsigned int n,
                              unsigned int *a, unsigned int *b,
                              unsigned int *c, unsigned int *d)
 {
@@ -15,30 +15,41 @@ static __inline__ void cpuid(int n,
 
 int main(int argc, char **argv)
 {
+   unsigned int level = 0;
    unsigned int mask = 0;
    unsigned int a;
    unsigned int b;
    unsigned int c;
    unsigned int d;
 
-   if ( argc == 2 )
-   {
-      if ( strcmp( argv[1], "mmx" ) == 0 ) mask = 1 << 23;
-      else if ( strcmp( argv[1], "sse" ) == 0 ) mask = 1 << 25;
-      else if ( strcmp( argv[1], "sse2" ) == 0 ) mask = 1 << 26;
+   if ( argc == 2 ) {
+      if ( strcmp( argv[1], "cmov" ) == 0 ) {
+        level = 1;
+        mask = 1 << 15;
+      } else if ( strcmp( argv[1], "mmx" ) == 0 ) {
+        level = 1;
+        mask = 1 << 23;
+      } else if ( strcmp( argv[1], "mmxext" ) == 0 ) {
+        level = 0x80000001;
+        mask = 1 << 22;
+      } else if ( strcmp( argv[1], "sse" ) == 0 ) {
+        level = 1;
+        mask = 1 << 25;
+      } else if ( strcmp( argv[1], "sse2" ) == 0 ) {
+        level = 1;
+        mask = 1 << 26;
+      }
    }
 
-   if ( mask == 0 )
-   {
-      fprintf( stderr, "usage: cputest [mmx|sse|sse2]\n" );
+   if ( level == 0 || mask == 0 ) {
+      fprintf( stderr, "usage: cputest [cmov|mmx|mmxext|sse|sse2]\n" );
       exit( 1 );
    }
    
-   cpuid( 0, &a, &b, &c, &d );
+   cpuid( level & 0x80000000, &a, &b, &c, &d );
 
-   if ( a >= 1 )
-   {
-      cpuid( 1, &a, &b, &c, &d );
+   if ( a >= level ) {
+      cpuid( level, &a, &b, &c, &d );
 
       if ( ( d & mask ) != 0 ) exit( 0 );
    }