1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* A program to test SSE4.1/SSE4.2 instructions.
3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Revisions:  Nov.208     - wrote this file
4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov               Apr.10.2010 - added PEXTR* tests
5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov               Apr.16.2010 - added PINS*  tests
6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/
7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* HOW TO COMPILE:
9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   gcc -m64 -g -O -Wall -o sse4-64 sse4-64.c
10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/
11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdio.h>
13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdlib.h>
14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <assert.h>
15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov//#include "tests/malloc.h" // reenable when reintegrated
16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <string.h>
17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// rmme when reintegrated
21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// Allocates a 16-aligned block.  Asserts if the allocation fails.
22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifdef VGO_darwin
23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdlib.h>
24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <malloc.h>
26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov__attribute__((unused))
28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void* memalign16(size_t szB)
29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   void* x;
31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if defined(VGO_darwin)
32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // Darwin lacks memalign, but its malloc is always 16-aligned anyway.
33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   x = malloc(szB);
34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   x = memalign(16, szB);
36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(x);
38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(0 == ((16-1) & (unsigned long)x));
39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return x;
40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  unsigned char           V128[16];
45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  unsigned int            UInt;
46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  signed int              Int;
47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  unsigned char           UChar;
48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  unsigned long long int  ULong;
49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef  unsigned char           Bool;
51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define False ((Bool)0)
52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define True  ((Bool)1)
53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef
56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   struct {
57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 arg1;
58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 arg2;
59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 res;
60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   RRArgs;
62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovtypedef
64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   struct {
65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 arg1;
66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 res;
67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   RMArgs;
69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void do64HLtoV128 ( /*OUT*/V128* res, ULong wHi, ULong wLo )
71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // try to sidestep strict-aliasing snafus by memcpying explicitly
73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UChar* p = (UChar*)res;
74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   memcpy(&p[8], (UChar*)&wHi, 8);
75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   memcpy(&p[0], (UChar*)&wLo, 8);
76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic UChar randUChar ( void )
79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   static UInt seed = 80021;
81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   seed = 1103515245 * seed + 12345;
82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return (seed >> 17) & 0xFF;
83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic ULong randULong ( void )
86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong r = 0;
89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 8; i++) {
90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      r = (r << 8) | (ULong)(0xFF & randUChar());
91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return r;
93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void randV128 ( V128* v )
96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 16; i++)
99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      (*v)[i] = randUChar();
100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showV128 ( V128* v )
103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 15; i >= 0; i--)
106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("%02x", (Int)(*v)[i]);
107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showMaskedV128 ( V128* v, V128* mask )
110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 15; i >= 0; i--)
113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("%02x", (Int)( ((*v)[i]) & ((*mask)[i]) ));
114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showIGVV( char* rOrM, char* op, Int imm,
117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                      ULong src64, V128* dst, V128* res )
118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%s %10s $%d ", rOrM, op, imm);
120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%016llx", src64);
121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(dst);
123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(res);
125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("\n");
126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showIAG ( char* rOrM, char* op, Int imm,
129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                      V128* argL, ULong argR, ULong res )
130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%s %10s $%d ", rOrM, op, imm);
132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(argL);
133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%016llx", argR);
135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%016llx", res);
137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("\n");
138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showIAA ( char* rOrM, char* op, Int imm, RRArgs* rra, V128* rmask )
141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%s %10s $%d ", rOrM, op, imm);
143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(&rra->arg1);
144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(&rra->arg2);
146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showMaskedV128(&rra->res, rmask);
148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("\n");
149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic void showAA ( char* rOrM, char* op, RRArgs* rra, V128* rmask )
152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("%s %10s ", rOrM, op);
154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(&rra->arg1);
155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showV128(&rra->arg2);
157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf(" ");
158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   showMaskedV128(&rra->res, rmask);
159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   printf("\n");
160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Note: these are little endian.  Hence first byte is the least
163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   significant byte of lane zero. */
164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Mask for insns where all result bits are non-approximated. */
166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic V128 AllMask  = { 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,
167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                         0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF };
168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Mark for insns which produce approximated vector short results. */
170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov__attribute__((unused))
171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic V128 ApproxPS = { 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF,
172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                         0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF };
173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* Mark for insns which produce approximated scalar short results. */
175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov__attribute__((unused))
176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic V128 ApproxSS = { 0x00,0x00,0x80,0xFF, 0xFF,0xFF,0xFF,0xFF,
177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                         0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF };
178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic V128 fives    = { 0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55,
180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                         0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55 };
181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic V128 zeroes   = { 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                         0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 };
184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdouble mkPosInf ( void ) { return 1.0 / 0.0; }
186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdouble mkNegInf ( void ) { return -mkPosInf(); }
187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdouble mkPosNan ( void ) { return 0.0 / 0.0; }
188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdouble mkNegNan ( void ) { return -mkPosNan(); }
189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov__attribute__((noinline))
191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy StepanovUInt get_mxcsr ( void )
192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong w64;
194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   __asm__ __volatile__(
195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "subq    $8, %%rsp"    "\n\t"
196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "stmxcsr (%%rsp)"      "\n\t"
197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "movq    (%%rsp), %0"  "\n"
198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "addq    $8, %%rsp"
199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : /*OUT*/"=r"(w64) : /*IN*/ : "memory","cc"
200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   );
201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (0) printf("get %08x\n", (UInt)w64);
202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return (UInt)w64;
203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov__attribute__((noinline))
206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid set_mxcsr ( UInt w32 )
207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (0) printf("set %08x\n", w32);
209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong w64 = (ULong)w32;
210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   __asm__ __volatile__(
211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "subq    $8, %%rsp"    "\n\t"
212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "movq    %0, (%%rsp)"  "\n\t"
213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "ldmxcsr (%%rsp)"      "\n\t"
214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "addq    $8, %%rsp"
215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : /*OUT*/ : /*IN*/"r"(w64) : "memory",/*"mxcsr",*/"cc"
216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   );
217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy StepanovUInt get_sse_roundingmode ( void )
220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt w = get_mxcsr();
222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return (w >> 13) & 3;
223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid set_sse_roundingmode ( UInt m )
226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt w;
228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(0 == (m & ~3));
229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   w = get_mxcsr();
230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   w &= ~(3 << 13);
231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   w |= (m << 13);
232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   set_mxcsr(w);
233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_r_r(_opname, _imm, _src, _dst)  \
237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 _tmp;  \
239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"  \
241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%1), %%xmm11"   "\n\t"  \
242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", %%xmm2, %%xmm11"  "\n\t"  \
243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd %%xmm11, (%2)" "\n"  \
244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ : /*in*/ "r"(&(_src)), "r"(&(_dst)), "r"(&(_tmp))  \
245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2", "xmm11"                            \
246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      RRArgs rra;  \
248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg1, &(_src), sizeof(V128));  \
249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg2, &(_dst), sizeof(V128));  \
250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.res,  &(_tmp), sizeof(V128));  \
251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIAA("r", (_opname), (_imm), &rra, &AllMask);  \
252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_m_r(_opname, _imm, _src, _dst)  \
255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 _tmp;  \
257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128* _srcM = memalign16(sizeof(V128));  \
258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(_srcM, &(_src), sizeof(V128));  \
259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%1), %%xmm11"   "\n\t"  \
261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", (%0), %%xmm11"  "\n\t"  \
262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd %%xmm11, (%2)" "\n"  \
263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ : /*in*/ "r"(_srcM), "r"(&(_dst)), "r"(&(_tmp))  \
264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm11"  \
265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      RRArgs rra;  \
267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg1, &(_src), sizeof(V128));  \
268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg2, &(_dst), sizeof(V128));  \
269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.res,  &(_tmp), sizeof(V128));  \
270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIAA("m", (_opname), (_imm), &rra, &AllMask);  \
271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      free(_srcM);  \
272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_mandr_r(_opname, _imm, _src, _dst)  \
275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_r_r( _opname, _imm, _src, _dst ) \
276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_m_r( _opname, _imm, _src, _dst )
277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_r_r(_opname, _src, _dst)  \
283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 _tmp;  \
285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"  \
287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%1), %%xmm11"   "\n\t"  \
288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " %%xmm2, %%xmm11"  "\n\t"  \
289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd %%xmm11, (%2)" "\n"  \
290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ : /*in*/ "r"(&(_src)), "r"(&(_dst)), "r"(&(_tmp))  \
291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2", "xmm11"  \
292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      RRArgs rra;  \
294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg1, &(_src), sizeof(V128));  \
295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg2, &(_dst), sizeof(V128));  \
296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.res,  &(_tmp), sizeof(V128));  \
297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showAA("r", (_opname), &rra, &AllMask);  \
298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_m_r(_opname, _src, _dst)  \
301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 _tmp;  \
303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128* _srcM = memalign16(sizeof(V128));  \
304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(_srcM, &(_src), sizeof(V128));  \
305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%1), %%xmm11"   "\n\t"  \
307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " (%0), %%xmm11"  "\n\t"  \
308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd %%xmm11, (%2)" "\n"  \
309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ : /*in*/ "r"(_srcM), "r"(&(_dst)), "r"(&(_tmp))  \
310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm11"  \
311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      RRArgs rra;  \
313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg1, &(_src), sizeof(V128));  \
314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.arg2, &(_dst), sizeof(V128));  \
315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&rra.res,  &(_tmp), sizeof(V128));  \
316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showAA("m", (_opname), &rra, &AllMask);  \
317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      free(_srcM);  \
318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_mandr_r(_opname, _src, _dst)  \
321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_r_r(_opname, _src, _dst) \
322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_m_r(_opname, _src, _dst)
323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_r_to_rscalar(_opname, _imm, _src, _dstsuffix)       \
328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong _scbefore = 0x5555555555555555ULL;  \
330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong _scafter  = 0xAAAAAAAAAAAAAAAAULL; \
331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* This assumes that gcc won't make any of %0, %1, %2 */ \
332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* be r11.  That should be ensured (cough, cough) */ \
333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* by declaring r11 to be clobbered. */ \
334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"  \
336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq   (%1), %%r11"   "\n\t"  \
337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", %%xmm2, %%r11" _dstsuffix  "\n\t"  \
338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq   %%r11, (%2)" "\n"  \
339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ \
340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/ "r"(&(_src)), "r"(&(_scbefore)), "r"(&(_scafter))  \
341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2", "r11"  \
342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIAG("r", (_opname), (_imm), &(_src), (_scbefore), (_scafter));  \
344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_r_to_mscalar(_opname, _imm, _src)   \
347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong _scbefore = 0x5555555555555555ULL;  \
349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong _scafter = _scbefore; \
350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"  \
352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", %%xmm2, (%1)"  "\n\t"  \
353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ \
354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/ "r"(&(_src)), "r"(&(_scafter))  \
355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2"  \
356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIAG("m", (_opname), (_imm), &(_src), (_scbefore), (_scafter));  \
358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_r_to_mandrscalar(_opname, _imm, _src, _dstsuffix)   \
361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_r_to_rscalar( _opname, _imm, _src, _dstsuffix )       \
362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_r_to_mscalar( _opname, _imm, _src )
363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_rscalar_to_r(_opname, _imm, _src, _srcsuffix)       \
372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128  dstv;         \
374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128  res;          \
375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong src64 = (ULong)(_src); \
376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(dstv, fives, sizeof(dstv)); \
377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(res,  zeroes, sizeof(res)); \
378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* This assumes that gcc won't make any of %0, %1, %2 */ \
379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* be r11.  That should be ensured (cough, cough) */ \
380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      /* by declaring r11 to be clobbered. */ \
381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"   /*dstv*/   \
383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq   (%1), %%r11"     "\n\t"   /*src64*/  \
384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", %%r11" _srcsuffix ", %%xmm2"   "\n\t"  \
385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm2, (%2)" "\n" /*res*/                          \
386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ \
387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/ "r"(&dstv), "r"(&src64), "r"(&res)  \
388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2", "r11"  \
389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIGVV("r", (_opname), (_imm), src64, &dstv, &res); \
391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_mscalar_to_r(_opname, _imm, _src)       \
393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {  \
394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128  dstv;         \
395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128  res;          \
396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ULong src64 = (ULong)(_src); \
397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(dstv, fives, sizeof(dstv)); \
398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(res,  zeroes, sizeof(res)); \
399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(  \
400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd (%0), %%xmm2"    "\n\t"   /*dstv*/   \
401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         _opname " $" #_imm ", (%1), %%xmm2"   "\n\t"  \
402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm2, (%2)" "\n" /*res*/                          \
403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/ \
404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/ "r"(&dstv), "r"(&src64), "r"(&res)  \
405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : "cc", "memory", "xmm2"  \
406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );  \
407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showIGVV("m", (_opname), (_imm), src64, &dstv, &res); \
408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define DO_imm_mandrscalar_to_r(_opname, _imm, _src, _dstsuffix)   \
411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_rscalar_to_r( _opname, _imm, _src, _dstsuffix )       \
412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mscalar_to_r( _opname, _imm, _src )
413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDPD ( void )
419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendpd", 0, src, dst);
426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendpd", 1, src, dst);
427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendpd", 2, src, dst);
428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendpd", 3, src, dst);
429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDPS ( void )
433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 0, src, dst);
440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 1, src, dst);
441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 2, src, dst);
442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 3, src, dst);
443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 4, src, dst);
444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 5, src, dst);
445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 6, src, dst);
446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 7, src, dst);
447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 8, src, dst);
448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 9, src, dst);
449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 10, src, dst);
450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 11, src, dst);
451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 12, src, dst);
452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 13, src, dst);
453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 14, src, dst);
454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("blendps", 15, src, dst);
455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_DPPD ( void )
459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {
462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(double*)(&src[0]) =  1.2345;
463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(double*)(&src[8]) = -6.78910;
464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(double*)(&dst[0]) = -11.121314;
465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(double*)(&dst[8]) =  15.161718;
466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 0, src, dst);
467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 1, src, dst);
468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 2, src, dst);
469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 3, src, dst);
470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 4, src, dst);
471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 5, src, dst);
472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 6, src, dst);
473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 7, src, dst);
474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 8, src, dst);
475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 9, src, dst);
476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 10, src, dst);
477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 11, src, dst);
478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 12, src, dst);
479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 13, src, dst);
480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 14, src, dst);
481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 15, src, dst);
482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 16, src, dst);
483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 17, src, dst);
484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 18, src, dst);
485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 19, src, dst);
486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 20, src, dst);
487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 21, src, dst);
488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 22, src, dst);
489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 23, src, dst);
490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 24, src, dst);
491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 25, src, dst);
492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 26, src, dst);
493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 27, src, dst);
494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 28, src, dst);
495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 29, src, dst);
496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 30, src, dst);
497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 31, src, dst);
498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 32, src, dst);
499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 33, src, dst);
500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 34, src, dst);
501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 35, src, dst);
502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 36, src, dst);
503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 37, src, dst);
504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 38, src, dst);
505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 39, src, dst);
506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 40, src, dst);
507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 41, src, dst);
508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 42, src, dst);
509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 43, src, dst);
510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 44, src, dst);
511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 45, src, dst);
512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 46, src, dst);
513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 47, src, dst);
514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 48, src, dst);
515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 49, src, dst);
516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 50, src, dst);
517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 51, src, dst);
518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 52, src, dst);
519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 53, src, dst);
520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 54, src, dst);
521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 55, src, dst);
522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 56, src, dst);
523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 57, src, dst);
524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 58, src, dst);
525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 59, src, dst);
526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 60, src, dst);
527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 61, src, dst);
528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 62, src, dst);
529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 63, src, dst);
530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 64, src, dst);
531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 65, src, dst);
532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 66, src, dst);
533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 67, src, dst);
534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 68, src, dst);
535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 69, src, dst);
536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 70, src, dst);
537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 71, src, dst);
538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 72, src, dst);
539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 73, src, dst);
540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 74, src, dst);
541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 75, src, dst);
542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 76, src, dst);
543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 77, src, dst);
544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 78, src, dst);
545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 79, src, dst);
546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 80, src, dst);
547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 81, src, dst);
548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 82, src, dst);
549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 83, src, dst);
550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 84, src, dst);
551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 85, src, dst);
552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 86, src, dst);
553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 87, src, dst);
554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 88, src, dst);
555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 89, src, dst);
556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 90, src, dst);
557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 91, src, dst);
558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 92, src, dst);
559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 93, src, dst);
560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 94, src, dst);
561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 95, src, dst);
562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 96, src, dst);
563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 97, src, dst);
564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 98, src, dst);
565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 99, src, dst);
566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 100, src, dst);
567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 101, src, dst);
568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 102, src, dst);
569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 103, src, dst);
570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 104, src, dst);
571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 105, src, dst);
572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 106, src, dst);
573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 107, src, dst);
574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 108, src, dst);
575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 109, src, dst);
576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 110, src, dst);
577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 111, src, dst);
578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 112, src, dst);
579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 113, src, dst);
580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 114, src, dst);
581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 115, src, dst);
582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 116, src, dst);
583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 117, src, dst);
584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 118, src, dst);
585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 119, src, dst);
586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 120, src, dst);
587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 121, src, dst);
588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 122, src, dst);
589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 123, src, dst);
590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 124, src, dst);
591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 125, src, dst);
592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 126, src, dst);
593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 127, src, dst);
594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 128, src, dst);
595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 129, src, dst);
596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 130, src, dst);
597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 131, src, dst);
598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 132, src, dst);
599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 133, src, dst);
600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 134, src, dst);
601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 135, src, dst);
602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 136, src, dst);
603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 137, src, dst);
604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 138, src, dst);
605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 139, src, dst);
606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 140, src, dst);
607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 141, src, dst);
608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 142, src, dst);
609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 143, src, dst);
610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 144, src, dst);
611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 145, src, dst);
612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 146, src, dst);
613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 147, src, dst);
614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 148, src, dst);
615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 149, src, dst);
616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 150, src, dst);
617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 151, src, dst);
618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 152, src, dst);
619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 153, src, dst);
620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 154, src, dst);
621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 155, src, dst);
622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 156, src, dst);
623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 157, src, dst);
624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 158, src, dst);
625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 159, src, dst);
626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 160, src, dst);
627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 161, src, dst);
628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 162, src, dst);
629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 163, src, dst);
630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 164, src, dst);
631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 165, src, dst);
632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 166, src, dst);
633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 167, src, dst);
634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 168, src, dst);
635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 169, src, dst);
636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 170, src, dst);
637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 171, src, dst);
638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 172, src, dst);
639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 173, src, dst);
640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 174, src, dst);
641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 175, src, dst);
642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 176, src, dst);
643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 177, src, dst);
644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 178, src, dst);
645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 179, src, dst);
646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 180, src, dst);
647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 181, src, dst);
648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 182, src, dst);
649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 183, src, dst);
650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 184, src, dst);
651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 185, src, dst);
652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 186, src, dst);
653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 187, src, dst);
654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 188, src, dst);
655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 189, src, dst);
656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 190, src, dst);
657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 191, src, dst);
658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 192, src, dst);
659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 193, src, dst);
660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 194, src, dst);
661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 195, src, dst);
662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 196, src, dst);
663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 197, src, dst);
664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 198, src, dst);
665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 199, src, dst);
666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 200, src, dst);
667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 201, src, dst);
668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 202, src, dst);
669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 203, src, dst);
670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 204, src, dst);
671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 205, src, dst);
672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 206, src, dst);
673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 207, src, dst);
674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 208, src, dst);
675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 209, src, dst);
676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 210, src, dst);
677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 211, src, dst);
678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 212, src, dst);
679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 213, src, dst);
680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 214, src, dst);
681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 215, src, dst);
682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 216, src, dst);
683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 217, src, dst);
684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 218, src, dst);
685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 219, src, dst);
686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 220, src, dst);
687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 221, src, dst);
688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 222, src, dst);
689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 223, src, dst);
690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 224, src, dst);
691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 225, src, dst);
692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 226, src, dst);
693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 227, src, dst);
694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 228, src, dst);
695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 229, src, dst);
696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 230, src, dst);
697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 231, src, dst);
698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 232, src, dst);
699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 233, src, dst);
700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 234, src, dst);
701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 235, src, dst);
702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 236, src, dst);
703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 237, src, dst);
704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 238, src, dst);
705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 239, src, dst);
706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 240, src, dst);
707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 241, src, dst);
708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 242, src, dst);
709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 243, src, dst);
710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 244, src, dst);
711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 245, src, dst);
712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 246, src, dst);
713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 247, src, dst);
714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 248, src, dst);
715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 249, src, dst);
716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 250, src, dst);
717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 251, src, dst);
718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 252, src, dst);
719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 253, src, dst);
720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 254, src, dst);
721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dppd", 255, src, dst);
722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_DPPS ( void )
726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {
729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[0])  =   1.2;
730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[4])  =  -3.4;
731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[8])  =  -6.7;
732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[12]) =   8.9;
733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[0])  = -10.11;
734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[4])  =  12.13;
735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[8])  =  14.15;
736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[12]) = -16.17;
737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 0, src, dst);
738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 1, src, dst);
739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 2, src, dst);
740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 3, src, dst);
741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 4, src, dst);
742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 5, src, dst);
743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 6, src, dst);
744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 7, src, dst);
745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 8, src, dst);
746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 9, src, dst);
747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 10, src, dst);
748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 11, src, dst);
749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 12, src, dst);
750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 13, src, dst);
751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 14, src, dst);
752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 15, src, dst);
753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 16, src, dst);
754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 17, src, dst);
755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 18, src, dst);
756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 19, src, dst);
757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 20, src, dst);
758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 21, src, dst);
759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 22, src, dst);
760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 23, src, dst);
761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 24, src, dst);
762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 25, src, dst);
763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 26, src, dst);
764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 27, src, dst);
765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 28, src, dst);
766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 29, src, dst);
767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 30, src, dst);
768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 31, src, dst);
769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 32, src, dst);
770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 33, src, dst);
771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 34, src, dst);
772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 35, src, dst);
773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 36, src, dst);
774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 37, src, dst);
775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 38, src, dst);
776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 39, src, dst);
777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 40, src, dst);
778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 41, src, dst);
779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 42, src, dst);
780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 43, src, dst);
781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 44, src, dst);
782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 45, src, dst);
783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 46, src, dst);
784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 47, src, dst);
785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 48, src, dst);
786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 49, src, dst);
787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 50, src, dst);
788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 51, src, dst);
789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 52, src, dst);
790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 53, src, dst);
791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 54, src, dst);
792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 55, src, dst);
793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 56, src, dst);
794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 57, src, dst);
795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 58, src, dst);
796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 59, src, dst);
797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 60, src, dst);
798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 61, src, dst);
799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 62, src, dst);
800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 63, src, dst);
801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 64, src, dst);
802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 65, src, dst);
803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 66, src, dst);
804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 67, src, dst);
805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 68, src, dst);
806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 69, src, dst);
807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 70, src, dst);
808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 71, src, dst);
809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 72, src, dst);
810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 73, src, dst);
811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 74, src, dst);
812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 75, src, dst);
813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 76, src, dst);
814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 77, src, dst);
815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 78, src, dst);
816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 79, src, dst);
817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 80, src, dst);
818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 81, src, dst);
819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 82, src, dst);
820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 83, src, dst);
821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 84, src, dst);
822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 85, src, dst);
823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 86, src, dst);
824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 87, src, dst);
825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 88, src, dst);
826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 89, src, dst);
827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 90, src, dst);
828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 91, src, dst);
829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 92, src, dst);
830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 93, src, dst);
831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 94, src, dst);
832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 95, src, dst);
833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 96, src, dst);
834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 97, src, dst);
835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 98, src, dst);
836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 99, src, dst);
837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 100, src, dst);
838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 101, src, dst);
839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 102, src, dst);
840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 103, src, dst);
841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 104, src, dst);
842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 105, src, dst);
843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 106, src, dst);
844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 107, src, dst);
845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 108, src, dst);
846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 109, src, dst);
847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 110, src, dst);
848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 111, src, dst);
849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 112, src, dst);
850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 113, src, dst);
851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 114, src, dst);
852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 115, src, dst);
853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 116, src, dst);
854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 117, src, dst);
855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 118, src, dst);
856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 119, src, dst);
857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 120, src, dst);
858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 121, src, dst);
859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 122, src, dst);
860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 123, src, dst);
861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 124, src, dst);
862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 125, src, dst);
863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 126, src, dst);
864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 127, src, dst);
865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 128, src, dst);
866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 129, src, dst);
867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 130, src, dst);
868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 131, src, dst);
869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 132, src, dst);
870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 133, src, dst);
871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 134, src, dst);
872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 135, src, dst);
873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 136, src, dst);
874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 137, src, dst);
875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 138, src, dst);
876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 139, src, dst);
877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 140, src, dst);
878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 141, src, dst);
879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 142, src, dst);
880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 143, src, dst);
881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 144, src, dst);
882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 145, src, dst);
883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 146, src, dst);
884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 147, src, dst);
885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 148, src, dst);
886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 149, src, dst);
887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 150, src, dst);
888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 151, src, dst);
889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 152, src, dst);
890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 153, src, dst);
891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 154, src, dst);
892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 155, src, dst);
893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 156, src, dst);
894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 157, src, dst);
895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 158, src, dst);
896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 159, src, dst);
897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 160, src, dst);
898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 161, src, dst);
899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 162, src, dst);
900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 163, src, dst);
901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 164, src, dst);
902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 165, src, dst);
903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 166, src, dst);
904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 167, src, dst);
905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 168, src, dst);
906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 169, src, dst);
907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 170, src, dst);
908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 171, src, dst);
909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 172, src, dst);
910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 173, src, dst);
911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 174, src, dst);
912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 175, src, dst);
913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 176, src, dst);
914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 177, src, dst);
915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 178, src, dst);
916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 179, src, dst);
917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 180, src, dst);
918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 181, src, dst);
919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 182, src, dst);
920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 183, src, dst);
921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 184, src, dst);
922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 185, src, dst);
923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 186, src, dst);
924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 187, src, dst);
925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 188, src, dst);
926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 189, src, dst);
927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 190, src, dst);
928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 191, src, dst);
929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 192, src, dst);
930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 193, src, dst);
931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 194, src, dst);
932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 195, src, dst);
933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 196, src, dst);
934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 197, src, dst);
935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 198, src, dst);
936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 199, src, dst);
937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 200, src, dst);
938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 201, src, dst);
939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 202, src, dst);
940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 203, src, dst);
941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 204, src, dst);
942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 205, src, dst);
943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 206, src, dst);
944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 207, src, dst);
945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 208, src, dst);
946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 209, src, dst);
947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 210, src, dst);
948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 211, src, dst);
949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 212, src, dst);
950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 213, src, dst);
951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 214, src, dst);
952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 215, src, dst);
953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 216, src, dst);
954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 217, src, dst);
955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 218, src, dst);
956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 219, src, dst);
957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 220, src, dst);
958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 221, src, dst);
959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 222, src, dst);
960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 223, src, dst);
961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 224, src, dst);
962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 225, src, dst);
963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 226, src, dst);
964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 227, src, dst);
965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 228, src, dst);
966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 229, src, dst);
967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 230, src, dst);
968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 231, src, dst);
969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 232, src, dst);
970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 233, src, dst);
971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 234, src, dst);
972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 235, src, dst);
973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 236, src, dst);
974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 237, src, dst);
975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 238, src, dst);
976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 239, src, dst);
977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 240, src, dst);
978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 241, src, dst);
979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 242, src, dst);
980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 243, src, dst);
981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 244, src, dst);
982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 245, src, dst);
983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 246, src, dst);
984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 247, src, dst);
985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 248, src, dst);
986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 249, src, dst);
987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 250, src, dst);
988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 251, src, dst);
989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 252, src, dst);
990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 253, src, dst);
991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 254, src, dst);
992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("dpps", 255, src, dst);
993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_INSERTPS ( void )
997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {
1000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[0])  =   1.2;
1001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[4])  =  -3.4;
1002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[8])  =  -6.7;
1003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&src[12]) =   8.9;
1004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[0])  = -10.11;
1005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[4])  =  12.13;
1006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[8])  =  14.15;
1007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      *(float*)(&dst[12]) = -16.17;
1008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 0, src, dst);
1009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 1, src, dst);
1010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 2, src, dst);
1011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 3, src, dst);
1012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 4, src, dst);
1013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 5, src, dst);
1014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 6, src, dst);
1015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 7, src, dst);
1016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 8, src, dst);
1017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 9, src, dst);
1018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 10, src, dst);
1019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 11, src, dst);
1020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 12, src, dst);
1021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 13, src, dst);
1022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 14, src, dst);
1023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 15, src, dst);
1024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 16, src, dst);
1025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 17, src, dst);
1026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 18, src, dst);
1027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 19, src, dst);
1028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 20, src, dst);
1029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 21, src, dst);
1030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 22, src, dst);
1031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 23, src, dst);
1032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 24, src, dst);
1033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 25, src, dst);
1034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 26, src, dst);
1035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 27, src, dst);
1036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 28, src, dst);
1037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 29, src, dst);
1038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 30, src, dst);
1039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 31, src, dst);
1040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 32, src, dst);
1041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 33, src, dst);
1042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 34, src, dst);
1043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 35, src, dst);
1044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 36, src, dst);
1045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 37, src, dst);
1046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 38, src, dst);
1047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 39, src, dst);
1048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 40, src, dst);
1049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 41, src, dst);
1050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 42, src, dst);
1051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 43, src, dst);
1052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 44, src, dst);
1053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 45, src, dst);
1054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 46, src, dst);
1055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 47, src, dst);
1056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 48, src, dst);
1057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 49, src, dst);
1058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 50, src, dst);
1059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 51, src, dst);
1060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 52, src, dst);
1061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 53, src, dst);
1062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 54, src, dst);
1063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 55, src, dst);
1064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 56, src, dst);
1065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 57, src, dst);
1066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 58, src, dst);
1067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 59, src, dst);
1068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 60, src, dst);
1069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 61, src, dst);
1070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 62, src, dst);
1071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 63, src, dst);
1072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 64, src, dst);
1073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 65, src, dst);
1074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 66, src, dst);
1075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 67, src, dst);
1076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 68, src, dst);
1077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 69, src, dst);
1078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 70, src, dst);
1079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 71, src, dst);
1080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 72, src, dst);
1081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 73, src, dst);
1082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 74, src, dst);
1083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 75, src, dst);
1084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 76, src, dst);
1085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 77, src, dst);
1086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 78, src, dst);
1087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 79, src, dst);
1088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 80, src, dst);
1089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 81, src, dst);
1090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 82, src, dst);
1091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 83, src, dst);
1092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 84, src, dst);
1093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 85, src, dst);
1094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 86, src, dst);
1095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 87, src, dst);
1096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 88, src, dst);
1097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 89, src, dst);
1098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 90, src, dst);
1099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 91, src, dst);
1100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 92, src, dst);
1101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 93, src, dst);
1102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 94, src, dst);
1103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 95, src, dst);
1104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 96, src, dst);
1105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 97, src, dst);
1106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 98, src, dst);
1107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 99, src, dst);
1108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 100, src, dst);
1109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 101, src, dst);
1110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 102, src, dst);
1111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 103, src, dst);
1112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 104, src, dst);
1113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 105, src, dst);
1114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 106, src, dst);
1115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 107, src, dst);
1116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 108, src, dst);
1117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 109, src, dst);
1118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 110, src, dst);
1119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 111, src, dst);
1120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 112, src, dst);
1121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 113, src, dst);
1122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 114, src, dst);
1123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 115, src, dst);
1124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 116, src, dst);
1125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 117, src, dst);
1126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 118, src, dst);
1127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 119, src, dst);
1128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 120, src, dst);
1129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 121, src, dst);
1130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 122, src, dst);
1131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 123, src, dst);
1132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 124, src, dst);
1133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 125, src, dst);
1134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 126, src, dst);
1135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 127, src, dst);
1136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 128, src, dst);
1137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 129, src, dst);
1138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 130, src, dst);
1139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 131, src, dst);
1140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 132, src, dst);
1141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 133, src, dst);
1142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 134, src, dst);
1143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 135, src, dst);
1144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 136, src, dst);
1145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 137, src, dst);
1146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 138, src, dst);
1147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 139, src, dst);
1148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 140, src, dst);
1149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 141, src, dst);
1150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 142, src, dst);
1151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 143, src, dst);
1152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 144, src, dst);
1153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 145, src, dst);
1154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 146, src, dst);
1155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 147, src, dst);
1156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 148, src, dst);
1157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 149, src, dst);
1158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 150, src, dst);
1159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 151, src, dst);
1160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 152, src, dst);
1161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 153, src, dst);
1162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 154, src, dst);
1163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 155, src, dst);
1164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 156, src, dst);
1165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 157, src, dst);
1166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 158, src, dst);
1167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 159, src, dst);
1168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 160, src, dst);
1169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 161, src, dst);
1170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 162, src, dst);
1171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 163, src, dst);
1172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 164, src, dst);
1173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 165, src, dst);
1174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 166, src, dst);
1175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 167, src, dst);
1176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 168, src, dst);
1177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 169, src, dst);
1178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 170, src, dst);
1179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 171, src, dst);
1180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 172, src, dst);
1181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 173, src, dst);
1182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 174, src, dst);
1183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 175, src, dst);
1184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 176, src, dst);
1185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 177, src, dst);
1186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 178, src, dst);
1187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 179, src, dst);
1188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 180, src, dst);
1189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 181, src, dst);
1190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 182, src, dst);
1191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 183, src, dst);
1192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 184, src, dst);
1193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 185, src, dst);
1194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 186, src, dst);
1195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 187, src, dst);
1196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 188, src, dst);
1197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 189, src, dst);
1198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 190, src, dst);
1199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 191, src, dst);
1200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 192, src, dst);
1201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 193, src, dst);
1202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 194, src, dst);
1203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 195, src, dst);
1204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 196, src, dst);
1205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 197, src, dst);
1206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 198, src, dst);
1207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 199, src, dst);
1208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 200, src, dst);
1209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 201, src, dst);
1210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 202, src, dst);
1211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 203, src, dst);
1212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 204, src, dst);
1213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 205, src, dst);
1214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 206, src, dst);
1215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 207, src, dst);
1216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 208, src, dst);
1217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 209, src, dst);
1218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 210, src, dst);
1219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 211, src, dst);
1220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 212, src, dst);
1221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 213, src, dst);
1222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 214, src, dst);
1223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 215, src, dst);
1224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 216, src, dst);
1225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 217, src, dst);
1226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 218, src, dst);
1227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 219, src, dst);
1228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 220, src, dst);
1229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 221, src, dst);
1230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 222, src, dst);
1231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 223, src, dst);
1232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 224, src, dst);
1233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 225, src, dst);
1234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 226, src, dst);
1235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 227, src, dst);
1236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 228, src, dst);
1237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 229, src, dst);
1238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 230, src, dst);
1239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 231, src, dst);
1240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 232, src, dst);
1241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 233, src, dst);
1242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 234, src, dst);
1243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 235, src, dst);
1244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 236, src, dst);
1245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 237, src, dst);
1246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 238, src, dst);
1247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 239, src, dst);
1248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 240, src, dst);
1249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 241, src, dst);
1250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 242, src, dst);
1251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 243, src, dst);
1252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 244, src, dst);
1253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 245, src, dst);
1254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 246, src, dst);
1255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 247, src, dst);
1256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 248, src, dst);
1257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 249, src, dst);
1258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 250, src, dst);
1259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 251, src, dst);
1260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 252, src, dst);
1261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 253, src, dst);
1262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 254, src, dst);
1263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("insertps", 255, src, dst);
1264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_MPSADBW ( void )
1268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 0, src, dst);
1275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 1, src, dst);
1276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 2, src, dst);
1277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 3, src, dst);
1278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 4, src, dst);
1279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 5, src, dst);
1280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 6, src, dst);
1281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("mpsadbw", 7, src, dst);
1282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PACKUSDW ( void )
1286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      if (i < 9) {
1291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
1292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
1293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      } else {
1294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memset(&src, 0, sizeof(src));
1295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memset(&dst, 0, sizeof(src));
1296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         src[0] = 0x11; src[1] = 0x22;
1297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         src[4] = 0x33; src[5] = 0x44;
1298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         src[8] = 0x55; src[9] = 0x66;
1299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         src[12] = 0x77; src[13] = 0x88;
1300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         dst[0] = 0xaa; dst[1] = 0xbb;
1301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         dst[4] = 0xcc; dst[5] = 0xdd;
1302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         dst[8] = 0xee; dst[9] = 0xff;
1303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         dst[12] = 0xa1; dst[13] = 0xb2;
1304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
1305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("packusdw", src, dst);
1306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PBLENDW ( void )
1310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&dst);
1314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   {
1315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 0, src, dst);
1316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 1, src, dst);
1317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 2, src, dst);
1318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 3, src, dst);
1319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 4, src, dst);
1320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 5, src, dst);
1321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 6, src, dst);
1322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 7, src, dst);
1323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 8, src, dst);
1324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 9, src, dst);
1325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 10, src, dst);
1326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 11, src, dst);
1327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 12, src, dst);
1328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 13, src, dst);
1329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 14, src, dst);
1330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 15, src, dst);
1331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 16, src, dst);
1332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 17, src, dst);
1333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 18, src, dst);
1334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 19, src, dst);
1335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 20, src, dst);
1336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 21, src, dst);
1337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 22, src, dst);
1338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 23, src, dst);
1339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 24, src, dst);
1340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 25, src, dst);
1341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 26, src, dst);
1342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 27, src, dst);
1343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 28, src, dst);
1344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 29, src, dst);
1345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 30, src, dst);
1346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 31, src, dst);
1347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 32, src, dst);
1348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 33, src, dst);
1349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 34, src, dst);
1350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 35, src, dst);
1351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 36, src, dst);
1352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 37, src, dst);
1353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 38, src, dst);
1354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 39, src, dst);
1355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 40, src, dst);
1356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 41, src, dst);
1357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 42, src, dst);
1358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 43, src, dst);
1359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 44, src, dst);
1360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 45, src, dst);
1361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 46, src, dst);
1362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 47, src, dst);
1363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 48, src, dst);
1364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 49, src, dst);
1365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 50, src, dst);
1366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 51, src, dst);
1367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 52, src, dst);
1368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 53, src, dst);
1369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 54, src, dst);
1370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 55, src, dst);
1371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 56, src, dst);
1372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 57, src, dst);
1373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 58, src, dst);
1374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 59, src, dst);
1375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 60, src, dst);
1376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 61, src, dst);
1377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 62, src, dst);
1378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 63, src, dst);
1379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 64, src, dst);
1380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 65, src, dst);
1381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 66, src, dst);
1382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 67, src, dst);
1383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 68, src, dst);
1384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 69, src, dst);
1385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 70, src, dst);
1386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 71, src, dst);
1387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 72, src, dst);
1388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 73, src, dst);
1389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 74, src, dst);
1390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 75, src, dst);
1391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 76, src, dst);
1392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 77, src, dst);
1393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 78, src, dst);
1394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 79, src, dst);
1395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 80, src, dst);
1396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 81, src, dst);
1397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 82, src, dst);
1398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 83, src, dst);
1399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 84, src, dst);
1400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 85, src, dst);
1401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 86, src, dst);
1402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 87, src, dst);
1403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 88, src, dst);
1404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 89, src, dst);
1405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 90, src, dst);
1406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 91, src, dst);
1407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 92, src, dst);
1408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 93, src, dst);
1409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 94, src, dst);
1410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 95, src, dst);
1411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 96, src, dst);
1412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 97, src, dst);
1413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 98, src, dst);
1414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 99, src, dst);
1415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 100, src, dst);
1416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 101, src, dst);
1417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 102, src, dst);
1418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 103, src, dst);
1419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 104, src, dst);
1420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 105, src, dst);
1421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 106, src, dst);
1422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 107, src, dst);
1423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 108, src, dst);
1424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 109, src, dst);
1425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 110, src, dst);
1426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 111, src, dst);
1427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 112, src, dst);
1428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 113, src, dst);
1429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 114, src, dst);
1430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 115, src, dst);
1431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 116, src, dst);
1432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 117, src, dst);
1433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 118, src, dst);
1434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 119, src, dst);
1435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 120, src, dst);
1436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 121, src, dst);
1437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 122, src, dst);
1438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 123, src, dst);
1439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 124, src, dst);
1440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 125, src, dst);
1441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 126, src, dst);
1442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 127, src, dst);
1443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 128, src, dst);
1444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 129, src, dst);
1445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 130, src, dst);
1446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 131, src, dst);
1447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 132, src, dst);
1448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 133, src, dst);
1449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 134, src, dst);
1450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 135, src, dst);
1451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 136, src, dst);
1452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 137, src, dst);
1453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 138, src, dst);
1454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 139, src, dst);
1455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 140, src, dst);
1456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 141, src, dst);
1457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 142, src, dst);
1458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 143, src, dst);
1459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 144, src, dst);
1460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 145, src, dst);
1461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 146, src, dst);
1462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 147, src, dst);
1463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 148, src, dst);
1464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 149, src, dst);
1465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 150, src, dst);
1466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 151, src, dst);
1467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 152, src, dst);
1468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 153, src, dst);
1469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 154, src, dst);
1470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 155, src, dst);
1471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 156, src, dst);
1472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 157, src, dst);
1473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 158, src, dst);
1474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 159, src, dst);
1475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 160, src, dst);
1476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 161, src, dst);
1477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 162, src, dst);
1478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 163, src, dst);
1479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 164, src, dst);
1480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 165, src, dst);
1481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 166, src, dst);
1482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 167, src, dst);
1483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 168, src, dst);
1484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 169, src, dst);
1485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 170, src, dst);
1486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 171, src, dst);
1487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 172, src, dst);
1488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 173, src, dst);
1489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 174, src, dst);
1490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 175, src, dst);
1491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 176, src, dst);
1492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 177, src, dst);
1493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 178, src, dst);
1494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 179, src, dst);
1495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 180, src, dst);
1496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 181, src, dst);
1497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 182, src, dst);
1498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 183, src, dst);
1499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 184, src, dst);
1500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 185, src, dst);
1501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 186, src, dst);
1502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 187, src, dst);
1503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 188, src, dst);
1504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 189, src, dst);
1505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 190, src, dst);
1506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 191, src, dst);
1507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 192, src, dst);
1508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 193, src, dst);
1509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 194, src, dst);
1510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 195, src, dst);
1511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 196, src, dst);
1512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 197, src, dst);
1513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 198, src, dst);
1514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 199, src, dst);
1515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 200, src, dst);
1516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 201, src, dst);
1517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 202, src, dst);
1518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 203, src, dst);
1519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 204, src, dst);
1520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 205, src, dst);
1521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 206, src, dst);
1522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 207, src, dst);
1523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 208, src, dst);
1524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 209, src, dst);
1525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 210, src, dst);
1526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 211, src, dst);
1527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 212, src, dst);
1528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 213, src, dst);
1529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 214, src, dst);
1530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 215, src, dst);
1531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 216, src, dst);
1532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 217, src, dst);
1533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 218, src, dst);
1534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 219, src, dst);
1535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 220, src, dst);
1536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 221, src, dst);
1537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 222, src, dst);
1538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 223, src, dst);
1539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 224, src, dst);
1540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 225, src, dst);
1541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 226, src, dst);
1542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 227, src, dst);
1543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 228, src, dst);
1544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 229, src, dst);
1545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 230, src, dst);
1546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 231, src, dst);
1547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 232, src, dst);
1548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 233, src, dst);
1549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 234, src, dst);
1550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 235, src, dst);
1551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 236, src, dst);
1552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 237, src, dst);
1553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 238, src, dst);
1554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 239, src, dst);
1555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 240, src, dst);
1556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 241, src, dst);
1557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 242, src, dst);
1558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 243, src, dst);
1559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 244, src, dst);
1560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 245, src, dst);
1561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 246, src, dst);
1562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 247, src, dst);
1563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 248, src, dst);
1564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 249, src, dst);
1565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 250, src, dst);
1566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 251, src, dst);
1567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 252, src, dst);
1568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 253, src, dst);
1569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 254, src, dst);
1570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_imm_mandr_r("pblendw", 255, src, dst);
1571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PCMPEQQ ( void )
1576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      switch (i - 6) {
1583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         case 0: memset(&src[0], 0x55, 8);
1584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                 memset(&dst[0], 0x55, 8); break;
1585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         case 1: memset(&src[8], 0x55, 8);
1586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov                 memset(&dst[8], 0x55, 8); break;
1587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         default:
1588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            break;
1589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
1590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pcmpeqq", src, dst);
1591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PEXTRB ( void )
1596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src;
1598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 0, src, "d");
1600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 1, src, "d");
1601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 2, src, "d");
1602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 3, src, "d");
1603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 4, src, "d");
1604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 5, src, "d");
1605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 6, src, "d");
1606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 7, src, "d");
1607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 8, src, "d");
1608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 9, src, "d");
1609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 10, src, "d");
1610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 11, src, "d");
1611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 12, src, "d");
1612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 13, src, "d");
1613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 14, src, "d");
1614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrb", 15, src, "d");
1615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PINSRB ( void )
1618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong src;
1620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 0, src, "d");
1622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 1, src, "d");
1624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 2, src, "d");
1626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 3, src, "d");
1628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 4, src, "d");
1630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 5, src, "d");
1632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 6, src, "d");
1634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 7, src, "d");
1636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 8, src, "d");
1638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 9, src, "d");
1640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 10, src, "d");
1642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 11, src, "d");
1644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 12, src, "d");
1646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 13, src, "d");
1648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 14, src, "d");
1650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrb", 15, src, "d");
1652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PEXTRW ( void )
1656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src;
1658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 0, src, "d");
1660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 1, src, "d");
1661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 2, src, "d");
1662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 3, src, "d");
1663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 4, src, "d");
1664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 5, src, "d");
1665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 6, src, "d");
1666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrw", 7, src, "d");
1667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PINSRW ( void )
1670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong src;
1672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 0, src, "d");
1674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 1, src, "d");
1676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 2, src, "d");
1678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 3, src, "d");
1680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 4, src, "d");
1682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 5, src, "d");
1684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 6, src, "d");
1686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrw", 7, src, "d");
1688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PEXTRD ( void )
1692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src;
1694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrd", 0, src, "d");
1696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrd", 1, src, "d");
1697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrd", 2, src, "d");
1698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrd", 3, src, "d");
1699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PINSRD ( void )
1702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong src;
1704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrd", 0, src, "d");
1706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrd", 1, src, "d");
1708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrd", 2, src, "d");
1710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrd", 3, src, "d");
1712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PEXTRQ ( void )
1716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src;
1718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrq", 0, src, "");
1720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("pextrq", 1, src, "");
1721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PINSRQ ( void )
1724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong src;
1726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrq", 0, src, "");
1728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   src = randULong();
1729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_mandrscalar_to_r("pinsrq", 1, src, "");
1730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_EXTRACTPS ( void )
1734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src;
1736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   randV128(&src);
1737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("extractps", 0, src, "d");
1738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("extractps", 1, src, "d");
1739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("extractps", 2, src, "d");
1740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   DO_imm_r_to_mandrscalar("extractps", 3, src, "d");
1741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PHMINPOSUW ( void )
1745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("phminposuw", src, dst);
1752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXSB ( void )
1756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmaxsb", src, dst);
1763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXSD ( void )
1767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmaxsd", src, dst);
1774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXUD ( void )
1778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmaxud", src, dst);
1785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXUW ( void )
1789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmaxuw", src, dst);
1796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINSB ( void )
1800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pminsb", src, dst);
1807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINSD ( void )
1811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pminsd", src, dst);
1818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINUD ( void )
1822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pminud", src, dst);
1829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINUW ( void )
1833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pminuw", src, dst);
1840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBW ( void )
1844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxbw", src, dst);
1851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBD ( void )
1855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxbd", src, dst);
1862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBQ ( void )
1866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxbq", src, dst);
1873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXWD ( void )
1877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxwd", src, dst);
1884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXWQ ( void )
1888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxwq", src, dst);
1895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXDQ ( void )
1899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovsxdq", src, dst);
1906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBW ( void )
1910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxbw", src, dst);
1917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBD ( void )
1921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxbd", src, dst);
1928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBQ ( void )
1932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxbq", src, dst);
1939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXWD ( void )
1943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxwd", src, dst);
1950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXWQ ( void )
1954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxwq", src, dst);
1961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXDQ ( void )
1965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmovzxdq", src, dst);
1972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMULDQ ( void )
1976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmuldq", src, dst);
1983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMULLD ( void )
1988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
1989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
1990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
1991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
1992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
1993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
1994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pmulld", src, dst);
1995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
1996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
1997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTQ ( void )
2000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong block[4];
2002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
2003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong oszacp_mask = 0x8D5;
2004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
2005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 0(%%rax), %%rdi"  "\n\t"
2012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntq %%rdi, %%r11"  "\n\t"
2015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  %%rdi, %%r11"  "\n\t"
2017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "rdi", "r11", "r12"
2025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r popcntq  %016llx %016llx  %016llx %016llx\n",
2027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntq 0(%%rax), %%r11"  "\n\t"
2038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  0(%%rax), %%r11"  "\n\t"
2040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "r11", "r12"
2048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m popcntq  %016llx %016llx  %016llx %016llx\n",
2050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTL ( void )
2056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong block[4];
2058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
2059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong oszacp_mask = 0x8D5;
2060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
2061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 0(%%rax), %%rdi"  "\n\t"
2068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntl %%edi, %%r11d"  "\n\t"
2071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  %%edi, %%r11d"  "\n\t"
2073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "rdi", "r11", "r12"
2081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r popcntl  %016llx %016llx  %016llx %016llx\n",
2083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntl 0(%%rax), %%r11d"  "\n\t"
2094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  0(%%rax), %%r11d"  "\n\t"
2096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "r11", "r12"
2104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m popcntl  %016llx %016llx  %016llx %016llx\n",
2106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTW ( void )
2112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong block[4];
2114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
2115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong oszacp_mask = 0x8D5;
2116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
2117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 0(%%rax), %%rdi"  "\n\t"
2124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntw %%di,  %%r11w"  "\n\t"
2127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  %%di,  %%r11w"  "\n\t"
2129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "rdi", "r11", "r12"
2137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r popcntw  %016llx %016llx  %016llx %016llx\n",
2139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[0] = i == 0 ? 0 : randULong();
2142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[1] = randULong();
2143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[2] = randULong();
2144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      block[3] = randULong();
2145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %0,       %%rax"  "\n\t"
2147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq 8(%%rax), %%r11"  "\n\t"
2148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin
2149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcntw 0(%%rax), %%r11w"  "\n\t"
2150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
2151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popcnt  0(%%rax), %%r11w"  "\n\t"
2152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
2153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r11, 16(%%rax)"  "\n\t"
2154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pushfq"                 "\n\t"
2155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "popq %%r12"             "\n\t"
2156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movq %%r12, 24(%%rax)"  "\n"
2157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*out*/
2158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*in*/"r"(&block[0])
2159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*trash*/ "cc", "memory", "r11", "r12"
2160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m popcntw  %016llx %016llx  %016llx %016llx\n",
2162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov             block[0], block[1], block[2], block[3] & oszacp_mask);
2163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PCMPGTQ ( void )
2168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 spec[7];
2170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0xffffffffffffffffULL );
2171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[1], 0x0000000000000001ULL, 0xfffffffffffffffeULL );
2172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[2], 0x7fffffffffffffffULL, 0x8000000000000001ULL );
2173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[3], 0x8000000000000000ULL, 0x8000000000000000ULL );
2174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[4], 0x8000000000000001ULL, 0x7fffffffffffffffULL );
2175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[5], 0xfffffffffffffffeULL, 0x0000000000000001ULL );
2176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[6], 0xffffffffffffffffULL, 0x0000000000000000ULL );
2177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 src, dst;
2179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i, j;
2180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
2181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      DO_mandr_r("pcmpgtq", src, dst);
2184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 7; i++) {
2186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (j = 0; j < 7; j++) {
2187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src, &spec[i], 16);
2188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&dst, &spec[j], 16);
2189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         DO_mandr_r("pcmpgtq", src, dst);
2190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
2191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDSD ------------ */
2195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
2197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $0, (%0), %%xmm11"   "\n\t"
2202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $0, %%xmm2, %%xmm11"   "\n\t"
2212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
2221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $1, (%0), %%xmm11"   "\n\t"
2226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $1, %%xmm2, %%xmm11"   "\n\t"
2236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
2245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $2, (%0), %%xmm11"   "\n\t"
2250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $2, %%xmm2, %%xmm11"   "\n\t"
2260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
2269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $3, (%0), %%xmm11"   "\n\t"
2274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $3, %%xmm2, %%xmm11"   "\n\t"
2284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
2293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $4, (%0), %%xmm11"   "\n\t"
2298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundsd $4, %%xmm2, %%xmm11"   "\n\t"
2308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSD_w_immediate_rounding ( void )
2317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   double vals[22];
2319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
2320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
2321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
2322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
2323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
2324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
2325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
2326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
2327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
2328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
2329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
2330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
2331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
2332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
2333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
2334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
2335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
2336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
2337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
2338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
2339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
2340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
2341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
2342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
2343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
2345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
2346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_000(False/*reg*/, &src, &dst);
2351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundsd_000  ");
2352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_000(True/*mem*/, &src, &dst);
2362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundsd_000  ");
2363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_001(False/*reg*/, &src, &dst);
2374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundsd_001  ");
2375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_001(True/*mem*/, &src, &dst);
2385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundsd_001  ");
2386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_010(False/*reg*/, &src, &dst);
2397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundsd_010  ");
2398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_010(True/*mem*/, &src, &dst);
2408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundsd_010  ");
2409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_011(False/*reg*/, &src, &dst);
2420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundsd_011  ");
2421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSD_011(True/*mem*/, &src, &dst);
2431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundsd_011  ");
2432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSD_w_mxcsr_rounding ( void )
2441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt rm;
2443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   double vals[22];
2444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
2445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
2446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
2447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
2448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
2449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
2450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
2451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
2452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
2453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
2454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
2455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
2456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
2457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
2458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
2459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
2460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
2461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
2462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
2463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
2464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
2465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
2466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
2467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
2468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
2471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
2473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
2474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (rm = 0; rm <= 3; rm++) {
2476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         set_sse_roundingmode(rm);
2477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
2479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
2480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 8);
2481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDSD_1XX(False/*reg*/, &src, &dst);
2482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("r (rm=%u) roundsd_1XX  ", rm);
2483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
2484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
2485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
2486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
2488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
2490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
2491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 8);
2492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDSD_1XX(True/*mem*/, &src, &dst);
2493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("m (rm=%u) roundsd_1XX  ", rm);
2494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
2495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
2496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
2497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f %10f", vals[i], *(double*)(&dst[0]));
2498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
2499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
2500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 3);
2504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   set_sse_roundingmode(0);
2505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
2507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDSS ------------ */
2511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
2513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $0, (%0), %%xmm11"   "\n\t"
2518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $0, %%xmm2, %%xmm11"   "\n\t"
2528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
2537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $1, (%0), %%xmm11"   "\n\t"
2542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $1, %%xmm2, %%xmm11"   "\n\t"
2552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
2561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $2, (%0), %%xmm11"   "\n\t"
2566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $2, %%xmm2, %%xmm11"   "\n\t"
2576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
2585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $3, (%0), %%xmm11"   "\n\t"
2590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $3, %%xmm2, %%xmm11"   "\n\t"
2600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
2609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $4, (%0), %%xmm11"   "\n\t"
2614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundss $4, %%xmm2, %%xmm11"   "\n\t"
2624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSS_w_immediate_rounding ( void )
2633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   float vals[22];
2635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
2636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
2637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
2638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
2639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
2640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
2641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
2642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
2643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
2644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
2645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
2646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
2647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
2648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
2649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
2650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
2651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
2652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
2653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
2654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
2655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
2656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
2657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
2658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
2659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
2661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
2662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_000(False/*reg*/, &src, &dst);
2667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundss_000  ");
2668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_000(True/*mem*/, &src, &dst);
2678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundss_000  ");
2679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_001(False/*reg*/, &src, &dst);
2690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundss_001  ");
2691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_001(True/*mem*/, &src, &dst);
2701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundss_001  ");
2702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_010(False/*reg*/, &src, &dst);
2713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundss_010  ");
2714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_010(True/*mem*/, &src, &dst);
2724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundss_010  ");
2725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_011(False/*reg*/, &src, &dst);
2736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundss_011  ");
2737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
2746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDSS_011(True/*mem*/, &src, &dst);
2747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundss_011  ");
2748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSS_w_mxcsr_rounding ( void )
2757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt rm;
2759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   float vals[22];
2760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
2761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
2762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
2763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
2764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
2765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
2766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
2767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
2768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
2769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
2770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
2771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
2772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
2773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
2774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
2775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
2776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
2777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
2778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
2779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
2780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
2781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
2782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
2783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
2784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
2787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
2789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
2790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (rm = 0; rm <= 3; rm++) {
2792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         set_sse_roundingmode(rm);
2793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
2795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
2796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 4);
2797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDSS_1XX(False/*reg*/, &src, &dst);
2798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("r (rm=%u) roundss_1XX  ", rm);
2799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
2800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
2801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
2802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
2804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
2806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
2807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 4);
2808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDSS_1XX(True/*mem*/, &src, &dst);
2809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("m (rm=%u) roundss_1XX  ", rm);
2810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
2811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
2812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
2813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f %10f", (double)vals[i], (double)*(float*)(&dst[0]));
2814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
2815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
2816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 3);
2820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   set_sse_roundingmode(0);
2821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
2822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
2823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDPD ------------ */
2826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
2828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $0, (%0), %%xmm11"   "\n\t"
2833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $0, %%xmm2, %%xmm11"   "\n\t"
2843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
2852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $1, (%0), %%xmm11"   "\n\t"
2857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $1, %%xmm2, %%xmm11"   "\n\t"
2867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
2876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $2, (%0), %%xmm11"   "\n\t"
2881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $2, %%xmm2, %%xmm11"   "\n\t"
2891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
2900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $3, (%0), %%xmm11"   "\n\t"
2905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $3, %%xmm2, %%xmm11"   "\n\t"
2915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
2924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
2926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
2928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $4, (%0), %%xmm11"   "\n\t"
2929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
2930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
2933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
2935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
2936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
2937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
2938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundpd $4, %%xmm2, %%xmm11"   "\n\t"
2939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
2940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
2941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
2942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
2943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
2944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
2945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
2946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPD_w_immediate_rounding ( void )
2948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
2949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   double vals[22];
2950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
2951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
2952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
2953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
2954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
2955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
2956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
2957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
2958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
2959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
2960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
2961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
2962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
2963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
2964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
2965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
2966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
2967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
2968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
2969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
2970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
2971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
2972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
2973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
2974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
2976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
2977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
2982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_000(False/*reg*/, &src, &dst);
2983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundpd_000  ");
2984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
2987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
2988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
2989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
2990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
2992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
2993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
2994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
2995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_000(True/*mem*/, &src, &dst);
2996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundpd_000  ");
2997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
2998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
2999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_001(False/*reg*/, &src, &dst);
3010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundpd_001  ");
3011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_001(True/*mem*/, &src, &dst);
3023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundpd_001  ");
3024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_010(False/*reg*/, &src, &dst);
3037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundpd_010  ");
3038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_010(True/*mem*/, &src, &dst);
3050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundpd_010  ");
3051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_011(False/*reg*/, &src, &dst);
3064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundpd_011  ");
3065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 8);
3075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 8);
3076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPD_011(True/*mem*/, &src, &dst);
3077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundpd_011  ");
3078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPD_w_mxcsr_rounding ( void )
3088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt rm;
3090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   double vals[22];
3091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
3092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
3093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
3094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
3095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
3096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
3097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
3098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
3099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
3100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
3101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
3102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
3103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
3104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
3105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
3106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
3107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
3108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
3109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
3110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
3111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
3112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
3113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
3114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
3115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
3118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
3120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
3121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (rm = 0; rm <= 3; rm++) {
3123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         set_sse_roundingmode(rm);
3124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
3126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
3127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 8);
3128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[8], &vals[(i+11)%22], 8);
3129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDPD_1XX(False/*reg*/, &src, &dst);
3130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("r (rm=%u) roundpd_1XX  ", rm);
3131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
3132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
3133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
3134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
3137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
3139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
3140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 8);
3141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[8], &vals[(i+11)%22], 8);
3142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDPD_1XX(True/*mem*/, &src, &dst);
3143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("m (rm=%u) roundpd_1XX  ", rm);
3144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
3145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
3146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
3147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %10f -> %10f", vals[i], *(double*)(&dst[0]));
3148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("   %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8]));
3149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
3150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
3151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 3);
3155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   set_sse_roundingmode(0);
3156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
3158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDPS ------------ */
3161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst )
3163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
3167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $0, (%0), %%xmm11"   "\n\t"
3168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
3169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
3172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
3176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
3177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $0, %%xmm2, %%xmm11"   "\n\t"
3178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
3179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
3182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst )
3187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
3191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $1, (%0), %%xmm11"   "\n\t"
3192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
3193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
3196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
3200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
3201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $1, %%xmm2, %%xmm11"   "\n\t"
3202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
3203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
3206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst )
3211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
3215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $2, (%0), %%xmm11"   "\n\t"
3216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
3217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
3220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
3224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
3225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $2, %%xmm2, %%xmm11"   "\n\t"
3226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
3227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
3230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst )
3235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
3239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $3, (%0), %%xmm11"   "\n\t"
3240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
3241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
3244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
3248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
3249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $3, %%xmm2, %%xmm11"   "\n\t"
3250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
3251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
3254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst )
3259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"       "\n\t"
3263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $4, (%0), %%xmm11"   "\n\t"
3264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"       "\n"
3265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11"
3268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%1), %%xmm11"         "\n\t"
3272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  (%0), %%xmm2"          "\n\t"
3273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "roundps $4, %%xmm2, %%xmm11"   "\n\t"
3274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd  %%xmm11, (%1)"         "\n"
3275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst)
3277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2"
3278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPS_w_immediate_rounding ( void )
3283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   float vals[22];
3285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
3286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
3287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
3288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
3289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
3290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
3291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
3292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
3293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
3294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
3295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
3296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
3297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
3298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
3299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
3300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
3301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
3302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
3303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
3304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
3305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
3306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
3307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
3308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
3309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
3311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
3312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_000(False/*reg*/, &src, &dst);
3320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundps_000  ");
3321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_000(True/*mem*/, &src, &dst);
3337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundps_000  ");
3338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_001(False/*reg*/, &src, &dst);
3355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundps_001  ");
3356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_001(True/*mem*/, &src, &dst);
3372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundps_001  ");
3373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_010(False/*reg*/, &src, &dst);
3390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundps_010  ");
3391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_010(True/*mem*/, &src, &dst);
3407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundps_010  ");
3408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_011(False/*reg*/, &src, &dst);
3425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r roundps_011  ");
3426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&src);
3436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&dst);
3437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[0], &vals[i], 4);
3438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[4], &vals[(i+5)%22], 4);
3439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[8], &vals[(i+11)%22], 4);
3440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src[12], &vals[(i+17)%22], 4);
3441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_ROUNDPS_011(True/*mem*/, &src, &dst);
3442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m roundps_011  ");
3443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&src);
3444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPS_w_mxcsr_rounding ( void )
3455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   UInt rm;
3457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   float vals[22];
3458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i = 0;
3459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.0;
3460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.0;
3461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosInf();
3462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegInf();
3463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkPosNan();
3464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = mkNegNan();
3465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.3;
3466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -1.1;
3467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.9;
3468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.7;
3469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.50001;
3470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.49999;
3471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.3;
3472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = -0.1;
3473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.1;
3474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.3;
3475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.49999;
3476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.50001;
3477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.7;
3478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 0.9;
3479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.1;
3480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   vals[i++] = 1.3;
3481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(i == 22);
3482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
3485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) {
3487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      V128 src, dst;
3488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (rm = 0; rm <= 3; rm++) {
3490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         set_sse_roundingmode(rm);
3491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
3493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
3494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 4);
3495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[4], &vals[(i+5)%22], 4);
3496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[8], &vals[(i+11)%22], 4);
3497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[12], &vals[(i+17)%22], 4);
3498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDPS_1XX(False/*reg*/, &src, &dst);
3499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("r (rm=%u) roundps_1XX  ", rm);
3500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
3501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
3502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
3503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
3508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&src);
3510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         randV128(&dst);
3511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[0], &vals[i], 4);
3512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[4], &vals[(i+5)%22], 4);
3513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[8], &vals[(i+11)%22], 4);
3514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&src[12], &vals[(i+17)%22], 4);
3515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         do_ROUNDPS_1XX(True/*mem*/, &src, &dst);
3516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("m (rm=%u) roundps_1XX  ", rm);
3517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&src);
3518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
3519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&dst);
3520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[i], (double)*(float*)(&dst[0]));
3521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4]));
3522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8]));
3523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("  %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12]));
3524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("\n");
3525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
3526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 3);
3530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   set_sse_roundingmode(0);
3531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   rm = get_sse_roundingmode();
3532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   assert(rm == 0); // 0 == RN == default
3533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ PTEST ------------ */
3536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PTEST ( void )
3538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   const Int ntests = 8;
3540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 spec[ntests];
3541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0x0000000000000000ULL );
3542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[1], 0x0000000000000000ULL, 0x0000000000000001ULL );
3543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[2], 0x0000000000000001ULL, 0x0000000000000000ULL );
3544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[3], 0x0000000000000001ULL, 0x0000000000000001ULL );
3545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[4], 0xffffffffffffffffULL, 0xffffffffffffffffULL );
3546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[5], 0xffffffffffffffffULL, 0xfffffffffffffffeULL );
3547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[6], 0xfffffffffffffffeULL, 0xffffffffffffffffULL );
3548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   do64HLtoV128( &spec[7], 0xfffffffffffffffeULL, 0xfffffffffffffffeULL );
3549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 block[2];
3550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i, j;
3551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   ULong flags;
3552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < ntests; i++) {
3553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      for (j = 0; j < ntests; j++) {
3554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&block[0], &spec[i], 16);
3555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         memcpy(&block[1], &spec[j], 16);
3556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         __asm__ __volatile__(
3557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "subq $256, %%rsp"        "\n\t"
3558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "movupd 0(%1), %%xmm2"    "\n\t"
3559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "ptest 16(%1), %%xmm2"    "\n\t"
3560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "pushfq"                  "\n\t"
3561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "popq %0"                 "\n\t"
3562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "addq $256, %%rsp"        "\n\t"
3563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            : /*out*/"=r"(flags) : /*in*/ "r"(&block[0]) :
3564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov            "xmm2", "memory", "cc"
3565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         );
3566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf("r   ptest ");
3567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&block[0]);
3568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" ");
3569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         showV128(&block[1]);
3570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         printf(" -> eflags %04x\n", (UInt)flags & 0x8D5);
3571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      }
3572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ PBLENDVB ------------ */
3576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_PBLENDVB ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst )
3578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pblendvb (%0), %%xmm11"        "\n\t"
3584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm0"
3588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%0), %%xmm2"         "\n\t"
3594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "pblendvb %%xmm2, %%xmm11"      "\n\t"
3595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2","xmm0"
3599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PBLENDVB ( void )
3604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 xmm0, src, dst, t_xmm0, t_src, t_dst;
3606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
3607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
3608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_xmm0);
3609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_src);
3610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_dst);
3611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_PBLENDVB(False/*reg*/, &xmm0, &src, &dst);
3616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r pblendvb  ");
3617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_PBLENDVB(True/*mem*/, &xmm0, &src, &dst);
3630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m pblendvb  ");
3631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ BLENDVPD ------------ */
3643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_BLENDVPD ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst )
3645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "blendvpd (%0), %%xmm11"        "\n\t"
3651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm0"
3655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%0), %%xmm2"         "\n\t"
3661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "blendvpd %%xmm2, %%xmm11"      "\n\t"
3662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2","xmm0"
3666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDVPD ( void )
3671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 xmm0, src, dst, t_xmm0, t_src, t_dst;
3673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
3674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
3675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_xmm0);
3676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_src);
3677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_dst);
3678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_BLENDVPD(False/*reg*/, &xmm0, &src, &dst);
3683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r blendvpd  ");
3684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_BLENDVPD(True/*mem*/, &xmm0, &src, &dst);
3697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m blendvpd  ");
3698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ BLENDVPS ------------ */
3710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_BLENDVPS ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst )
3712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   if (mem) {
3714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "blendvps (%0), %%xmm11"        "\n\t"
3718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm0"
3722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   } else {
3724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      __asm__ __volatile__(
3725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%2), %%xmm0"         "\n\t"
3726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%1), %%xmm11"        "\n\t"
3727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   (%0), %%xmm2"         "\n\t"
3728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "blendvps %%xmm2, %%xmm11"      "\n\t"
3729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         "movupd   %%xmm11, (%1)"        "\n"
3730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*OUT*/
3731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*IN*/ "r"(src), "r"(dst), "r"(xmm0)
3732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov         : /*TRASH*/ "xmm11","xmm2","xmm0"
3733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      );
3734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDVPS ( void )
3738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   V128 xmm0, src, dst, t_xmm0, t_src, t_dst;
3740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   Int i;
3741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   for (i = 0; i < 10; i++) {
3742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_xmm0);
3743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_src);
3744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      randV128(&t_dst);
3745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_BLENDVPS(False/*reg*/, &xmm0, &src, &dst);
3750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("r blendvps  ");
3751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&xmm0, &t_xmm0, 16);
3761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&src, &t_src, 16);
3762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      memcpy(&dst, &t_dst, 16);
3763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      do_BLENDVPS(True/*mem*/, &xmm0, &src, &dst);
3764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("m blendvps  ");
3765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_xmm0);
3766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_src);
3768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" ");
3769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&t_dst);
3770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf(" -> ");
3771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      showV128(&dst);
3772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      printf("\n");
3773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   }
3774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ main ------------ */
3777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint main ( int argc, char** argv )
3779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
3780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 1
3781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // ------ SSE 4.1 ------
3782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_BLENDPD();        // done Apr.01.2010
3783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_BLENDPS();        // done Apr.02.2010
3784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PBLENDW();
3785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PBLENDVB();
3786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_BLENDVPD();
3787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_BLENDVPS();
3788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_DPPD();           // done Apr.08.2010
3789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_DPPS();           // done Apr.09.2010
3790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_EXTRACTPS();
3791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_INSERTPS();       // done Apr.01.2010
3792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // MOVNTDQA  ***
3793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   //test_MPSADBW();
3794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PCMPEQQ();
3795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PEXTRB();         // done Apr.15.2010
3796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PEXTRD();         // done Apr.14.2010
3797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PEXTRQ();         // done Apr.14.2010
3798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PEXTRW();         // done Apr.14.2010
3799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PINSRQ();         // done Apr.16.2010
3800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PINSRD();         // todo
3801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PINSRW(); /* Umm, this is SSE2, not SSE4.  Right? */
3802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PINSRB();         // todo
3803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   //test_PHMINPOSUW();
3804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMAXSB();
3805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMAXSD();         // done Apr.09.2010
3806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMAXUD();         // done Apr.16.2010
3807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMAXUW();
3808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMINSB();
3809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMINSD();         // done Apr.09.2010
3810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMINUD();
3811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMINUW();
3812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXBW();       // done Apr.02.2010
3813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXBD();       // done Mar.30.2010
3814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXBQ();       // done Mar.30.2010
3815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXWD();       // done Mar.31.2010
3816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXWQ();       // done Mar.31.2010
3817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVSXDQ();       // done Mar.31.2010
3818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXBW();       // done Mar.28.2010
3819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXBD();       // done Mar.29.2010
3820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXBQ();       // done Mar.29.2010
3821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXWD();       // done Mar.28.2010
3822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXWQ();       // done Mar.29.2010
3823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMOVZXDQ();       // done Mar.29.2010
3824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_POPCNTW();
3825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_POPCNTL();
3826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_POPCNTQ();
3827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMULDQ();
3828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMULLD();
3829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PTEST();
3830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDSD_w_immediate_rounding();
3831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDSS_w_immediate_rounding();
3832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDPD_w_immediate_rounding();
3833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDPS_w_immediate_rounding();
3834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDSD_w_mxcsr_rounding();
3835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDSS_w_mxcsr_rounding();
3836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDPD_w_mxcsr_rounding();
3837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_ROUNDPS_w_mxcsr_rounding();
3838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // ------ SSE 4.2 ------
3839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PCMPGTQ();
3840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   // CRC32B,Q
3841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PACKUSDW();
3842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else
3844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0
3845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_MPSADBW();
3846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PCMPEQQ();
3847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PHMINPOSUW();
3848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   test_PMULDQ();
3849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
3850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
3851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   return 0;
3853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3855