1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* A program to test that SSE/SSE2 insns do not read memory they
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   should not.  Covers insns of the form OP %xmm, %xmm and OP memory,
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   %xmm only. */
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h>
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdlib.h>
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <assert.h>
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "tests/malloc.h"
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <string.h>
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef  unsigned char  V128[16];
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef  unsigned int   UInt;
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef  signed int     Int;
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef  unsigned char  UChar;
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   struct {
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      V128 arg1;
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      V128 arg2;
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      V128 res;
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   RRArgs;
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   struct {
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      V128 arg1;
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      V128 res;
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   RMArgs;
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic UChar randUChar ( void )
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   static UInt seed = 80021;
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   seed = 1103515245 * seed + 12345;
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   return (seed >> 17) & 0xFF;
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void randomise ( UChar* p, Int n )
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int i;
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < n; i++)
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      p[i] = randUChar();
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void randV128 ( V128* v )
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int i;
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < 16; i++)
50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      (*v)[i] = randUChar();
51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void randRRArgs ( RRArgs* rra )
54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   randV128(&rra->arg1);
56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   randV128(&rra->arg2);
57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   randV128(&rra->res);
58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void randRMArgs ( RMArgs* rra )
61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   randV128(&rra->arg1);
63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   randV128(&rra->res);
64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void showV128 ( V128* v )
67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int i;
69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < 16; i++)
70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%02x", (Int)(*v)[i]);
71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void showMaskedV128 ( V128* v, V128* mask )
74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int i;
76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < 16; i++)
77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%02x", (Int)( ((*v)[i]) & ((*mask)[i]) ));
78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void showRR ( char* op, RRArgs* rra, V128* rmask )
81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("r %10s ", op);
83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   showV128(&rra->arg1);
84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf(" ");
85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   showV128(&rra->arg2);
86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf(" ");
87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   showMaskedV128(&rra->res, rmask);
88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("\n");
89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void showRM ( char* op, RMArgs* rra, UChar* mem, Int nMem, V128* rmask )
92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int i;
94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   assert(nMem == 4 || nMem == 8 || nMem == 16 || nMem==0);
95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("m %10s ", op);
96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < nMem; i++)
97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%02x", (Int)mem[i]);
98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf(" ");
99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   showV128(&rra->arg1);
100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf(" ");
101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   showMaskedV128(&rra->res, rmask );
102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("\n");
103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define Wrapper_RegReg(OP)                 \
106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   void r_r_##OP ( RRArgs* p )             \
107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   {                                       \
108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      __asm__ __volatile__("\n"            \
109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\tmovups 0(%0), %%xmm6\n"        \
110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\tmovups 16(%0), %%xmm7\n"       \
111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\t" #OP " %%xmm6, %%xmm7\n"      \
112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\tmovups %%xmm7, 32(%0)\n"       \
113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         :                                 \
114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         : "r" (p)                         \
115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         : "memory", "xmm6", "xmm7", "cc"  \
116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      );                                   \
117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define Wrapper_RegMem(OP)                 \
120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   void r_m_##OP ( RMArgs* p, void* mem )  \
121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   {                                       \
122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      __asm__ __volatile__("\n"            \
123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\tmovups 0(%0), %%xmm7\n"        \
124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\t" #OP " 0(%1), %%xmm7\n"       \
125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         "\tmovups %%xmm7, 16(%0)\n"       \
126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         :                                 \
127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         : "r" (p), "r" (mem)              \
128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         : "memory", "xmm7", "cc"          \
129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      );                                   \
130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TEST_INSN(res_mask,mem_size,insn)  \
134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                                           \
135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownWrapper_RegReg(insn)                       \
136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownWrapper_RegMem(insn)                       \
137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                                           \
138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownvoid do_##insn ( void )                    \
139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{                                          \
140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int    i;                               \
141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   UChar* buf;                             \
142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   RRArgs rargs __attribute__((aligned(16))); \
143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   RMArgs margs __attribute__((aligned(16))); \
144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < 5; i++) {               \
145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      randRRArgs(&rargs);                  \
146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      r_r_##insn(&rargs);                  \
147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      showRR(#insn, &rargs, res_mask);     \
148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }                                       \
149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   for (i = 0; i < 5; i++) {               \
150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      randRMArgs(&margs);                  \
151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      buf = memalign16(mem_size);          \
152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      randomise(buf,mem_size);             \
153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      r_m_##insn(&margs,buf);              \
154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      showRM(#insn, &margs, buf, mem_size, res_mask);\
155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      free(buf);                           \
156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }                                       \
157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Note: these are little endian.  Hence first byte is the least
160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   significant byte of lane zero. */
161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Mask for insns where all result bits are non-approximated. */
163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic V128 AllMask  = { 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                         0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF };
165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Mark for insns which produce approximated vector short results. */
167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic V128 ApproxPS = { 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF,
168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                         0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF };
169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Mark for insns which produce approximated scalar short results. */
171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic V128 ApproxSS = { 0x00,0x00,0x80,0xFF, 0xFF,0xFF,0xFF,0xFF,
172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                         0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF };
173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define PD 16
175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define SD 8
176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define PS 16
177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define SS 4
178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* ------------------------ SSE1 ------------------------ */
180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,addps)
181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,addss)
182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,andnps)
183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,andps)
184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpeqps)
185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpeqss)
186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpleps)
187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpless)
188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpltps)
189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpltss)
190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpneqps)
191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpneqss)
192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpnleps)
193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpnless)
194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpnltps)
195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpnltss)
196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpordps)
197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpordss)
198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,cmpunordps)
199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cmpunordss)
200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,comiss)
201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtpi2ps)
202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtps2pi)
203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtsi2ss)
204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtss2si)
205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvttps2pi)
206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvttss2si)
207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,divps)
208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,divss)
209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,maxps)
210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,maxss)
211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,minps)
212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,minss)
213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,movaps)
214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movhlps)
215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movhps)
216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movlhps)
217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movlps)
218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movmskps)
219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movntps)
220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movntq)
221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 4,movss)
222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,movups)
223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,mulps)
224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,mulss)
225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,orps)
226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pavgb) -- dup with sse2?
227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pavgw) -- dup with sse2?
228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pextrw)
229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pinsrw)
230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pmaxsw) -- dup with sse2?
231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pmaxub) -- dup with sse2?
232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pminsw) -- dup with sse2?
233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pminub) -- dup with sse2?
234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pmovmskb)
235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pmulhuw) -- dup with sse2?
236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psadbw) // -- XXXXXXXXXXXXXXXX sse2 (xmm variant) not implemented!
237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pshufw)
238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN(&ApproxPS, PS,rcpps)
239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN(&ApproxSS, SS,rcpss)
240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN(&ApproxPS, PS,rsqrtps)
241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN(&ApproxSS, SS,rsqrtss)
242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, PS,shufps)
243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,sqrtps)
244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,sqrtss)
245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,subps)
246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,subss)
247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,ucomiss)
248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,unpckhps)
249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,unpcklps)
250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PS,xorps)
251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* ------------------------ SSE2 ------------------------ */
254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,addpd)
255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,addsd)
256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,andnpd)
257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,andpd)
258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpeqpd)
259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpeqsd)
260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmplepd)
261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmplesd)
262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpltpd)
263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpltsd)
264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpneqpd)
265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpneqsd)
266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpnlepd)
267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpnlesd)
268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpnltpd)
269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpnltsd)
270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpordpd)
271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpordsd)
272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,cmpunordpd)
273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cmpunordsd)
274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,comisd)
275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 8,cvtdq2pd)
276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvtdq2ps)
277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvtpd2dq)
278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtpd2pi)
279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvtpd2ps)   /* reads 16 */
280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtpi2pd)
281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvtps2dq)  /* reads 16 */
282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 8,cvtps2pd)   /* reads 8 */
283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtsd2si)
284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,cvtsd2ss)   /* reads SD */
285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvtsi2sd)
286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SS,cvtss2sd)   /* reads SS */
287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvttpd2dq)
288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvttpd2pi)
289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,cvttps2dq)
290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,cvttsd2si)
291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,divpd)
292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,divsd)
293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,maxpd)
294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,maxsd)
295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,minpd)
296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,minsd)
297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,movapd)
298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 8,movd)
299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movdq2q)
300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,movdqa)
301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,movdqu)
302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,movhpd)
303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,movlpd)
304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movmskpd)
305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movntdq)
306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movnti)
307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movntpd)
308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 8,movq)
309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,movq2dq)
310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 8,movsd)
311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,movupd)
312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,mulpd)
313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,mulsd)
314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,orpd)
315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,packssdw)
316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,packsswb)
317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,packuswb)
318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddb)
319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddd)
320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddq)
321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddsb)
322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddsw)
323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddusb)
324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddusw)
325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,paddw)
326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pand)
327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pandn)
328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pavgb)
329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pavgw)
330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpeqb)
331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpeqd)
332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpeqw)
333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpgtb)
334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpgtd)
335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pcmpgtw)
336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pextrw)
337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pinsrw)
338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmaxsw)
339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmaxub)
340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pminsw)
341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pminub)
342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 0,pmovmskb)
343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmulhuw)
344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmulhw)
345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmullw)
346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pmuludq)
347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,por)
348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pshufd)
349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pshufhw)
350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pshuflw)
351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pslld)
352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,pslldq)
353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psllq)
354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psllw)
355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psrad)
356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psraw)
357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psrld)
358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, 16,psrldq)
359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psrlq)
360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psrlw)
361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubb)
362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubd)
363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubq)
364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubsb)
365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubsw)
366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubusb)
367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubusw)
368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,psubw)
369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpckhbw)
370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpckhdq)
371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpckhqdq)
372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpckhwd)
373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpcklbw)
374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpckldq)
375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpcklqdq)
376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,punpcklwd)
377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, 16,pxor)
378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//TEST_INSN( &AllMask, PD,shufpd)
379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,sqrtpd)
380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,sqrtsd)
381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,subpd)
382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,subsd)
383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, SD,ucomisd)
384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,unpckhpd)
385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,unpcklpd)
386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownTEST_INSN( &AllMask, PD,xorpd)
387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main ( int argc, char** argv )
390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   Int sse1 = 0, sse2 = 0;
392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   if (argc == 2 && 0==strcmp(argv[1], "sse1")) {
394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      sse1 = 1;
395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   else
397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   if (argc == 2 && 0==strcmp(argv[1], "sse2")) {
398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      sse2 = 1;
399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   else
401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   if (argc == 2 && 0==strcmp(argv[1], "all")) {
402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      sse1 = sse2 = 1;
403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   else {
405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      fprintf(stderr, "usage: sse_memory [sse1|sse2|all]\n");
406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      return 0;
407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   /* ------------------------ SSE1 ------------------------ */
410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   if (sse1) {
411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_addps();
412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_addss();
413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_andnps();
414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_andps();
415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpeqps();
416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpeqss();
417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpleps();
418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpless();
419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpltps();
420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpltss();
421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpneqps();
422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpneqss();
423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnleps();
424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnless();
425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnltps();
426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnltss();
427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpordps();
428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpordss();
429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpunordps();
430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpunordss();
431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_comiss();
432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtpi2ps)
433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtps2pi)
434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtsi2ss)
435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtss2si)
436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvttps2pi)
437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvttss2si)
438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_divps();
439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_divss();
440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_maxps();
441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_maxss();
442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_minps();
443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_minss();
444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movaps();
445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movhlps)
446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movhps)
447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movlhps)
448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movlps)
449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movmskps)
450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movntps)
451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movntq)
452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movss();
453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movups();
454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_mulps();
455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_mulss();
456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_orps();
457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pavgb) -- dup with sse2?
458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pavgw) -- dup with sse2?
459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pextrw)
460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pinsrw)
461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pmaxsw) -- dup with sse2?
462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pmaxub) -- dup with sse2?
463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pminsw) -- dup with sse2?
464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pminub) -- dup with sse2?
465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pmovmskb)
466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pmulhuw) -- dup with sse2?
467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //do_psadbw();  -- XXXXXXXXXXXXXXXX sse2 (xmm variant) not implemented!
468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pshufw)
469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_rcpps();
470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_rcpss();
471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_rsqrtps();
472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_rsqrtss();
473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, PS,shufps)
474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_sqrtps();
475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_sqrtss();
476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_subps();
477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_subss();
478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_ucomiss();
479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_unpckhps();
480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_unpcklps();
481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_xorps();
482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   /* ------------------------ SSE2 ------------------------ */
485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   if (sse2) {
486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_addpd();
487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_addsd();
488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_andnpd();
489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_andpd();
490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpeqpd();
491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpeqsd();
492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmplepd();
493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmplesd();
494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpltpd();
495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpltsd();
496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpneqpd();
497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpneqsd();
498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnlepd();
499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnlesd();
500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnltpd();
501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpnltsd();
502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpordpd();
503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpordsd();
504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpunordpd();
505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cmpunordsd();
506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_comisd();
507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtdq2pd();
508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtdq2ps();
509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtpd2dq();
510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtpd2pi)
511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtpd2ps();
512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtpi2pd)
513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtps2dq();
514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtps2pd();
515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtsd2si)
516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtsd2ss();
517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvtsi2sd)
518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvtss2sd();
519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvttpd2dq();
520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvttpd2pi)
521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_cvttps2dq();
522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,cvttsd2si)
523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_divpd();
524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_divsd();
525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_maxpd();
526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_maxsd();
527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_minpd();
528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_minsd();
529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movapd();
530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 8,movd)
531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movdq2q)
532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movdqa();
533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movdqu();
534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,movhpd)
535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,movlpd)
536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movmskpd)
537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movntdq)
538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movnti)
539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movntpd)
540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movq();
541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,movq2dq)
542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movsd();
543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_movupd();
544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_mulpd();
545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_mulsd();
546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_orpd();
547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_packssdw();
548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_packsswb();
549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_packuswb();
550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddb();
551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddd();
552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddq();
553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddsb();
554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddsw();
555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddusb();
556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddusw();
557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_paddw();
558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pand();
559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pandn();
560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pavgb();
561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pavgw();
562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpeqb();
563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpeqd();
564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpeqw();
565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpgtb();
566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpgtd();
567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pcmpgtw();
568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pextrw)
569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pinsrw)
570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmaxsw();
571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmaxub();
572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pminsw();
573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pminub();
574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 0,pmovmskb)
575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmulhuw();
576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmulhw();
577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmullw();
578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pmuludq();
579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_por();
580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pshufd)
581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pshufhw)
582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pshuflw)
583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pslld();
584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,pslldq)
585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psllq();
586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psllw();
587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psrad();
588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psraw();
589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psrld();
590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, 16,psrldq)
591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psrlq();
592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psrlw();
593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubb();
594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubd();
595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubq();
596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubsb();
597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubsw();
598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubusb();
599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubusw();
600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_psubw();
601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpckhbw();
602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpckhdq();
603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpckhqdq();
604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpckhwd();
605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpcklbw();
606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpckldq();
607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpcklqdq();
608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_punpcklwd();
609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_pxor();
610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      //TEST_INSN( &AllMask, PD,shufpd)
611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_sqrtpd();
612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_sqrtsd();
613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_subpd();
614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_subsd();
615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_ucomisd();
616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_unpckhpd();
617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_unpcklpd();
618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      do_xorpd();
619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   }
620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   return 0;
622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
624