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; 1271663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i = 0; i < 50; 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; 1748663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng for (i = 0; i < 20; i++) { 1749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("phminposuw", src, dst); 1752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1753663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng memset(src, 0x55, sizeof(src)); 1754663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng memset(dst, 0xAA, sizeof(dst)); 1755663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng DO_mandr_r("phminposuw", src, dst); 1756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXSB ( void ) 1759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmaxsb", src, dst); 1766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXSD ( void ) 1770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmaxsd", src, dst); 1777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXUD ( void ) 1781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmaxud", src, dst); 1788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMAXUW ( void ) 1792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmaxuw", src, dst); 1799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINSB ( void ) 1803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pminsb", src, dst); 1810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINSD ( void ) 1814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pminsd", src, dst); 1821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINUD ( void ) 1825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pminud", src, dst); 1832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMINUW ( void ) 1836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pminuw", src, dst); 1843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBW ( void ) 1847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxbw", src, dst); 1854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBD ( void ) 1858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxbd", src, dst); 1865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXBQ ( void ) 1869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxbq", src, dst); 1876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXWD ( void ) 1880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxwd", src, dst); 1887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXWQ ( void ) 1891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxwq", src, dst); 1898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVSXDQ ( void ) 1902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovsxdq", src, dst); 1909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBW ( void ) 1913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxbw", src, dst); 1920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBD ( void ) 1924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxbd", src, dst); 1931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXBQ ( void ) 1935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxbq", src, dst); 1942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXWD ( void ) 1946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxwd", src, dst); 1953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXWQ ( void ) 1957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxwq", src, dst); 1964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMOVZXDQ ( void ) 1968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmovzxdq", src, dst); 1975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMULDQ ( void ) 1979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmuldq", src, dst); 1986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 1988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 1990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PMULLD ( void ) 1991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 1992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 1993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 1994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 1995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 1996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 1997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pmulld", src, dst); 1998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 1999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTQ ( void ) 2003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong block[4]; 2005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 2006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong oszacp_mask = 0x8D5; 2007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 2008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 0(%%rax), %%rdi" "\n\t" 2015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntq %%rdi, %%r11" "\n\t" 2018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt %%rdi, %%r11" "\n\t" 2020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r popcntq %016llx %016llx %016llx %016llx\n", 2030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntq 0(%%rax), %%r11" "\n\t" 2041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt 0(%%rax), %%r11" "\n\t" 2043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "r11", "r12" 2051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m popcntq %016llx %016llx %016llx %016llx\n", 2053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTL ( void ) 2059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong block[4]; 2061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 2062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong oszacp_mask = 0x8D5; 2063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 2064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 0(%%rax), %%rdi" "\n\t" 2071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntl %%edi, %%r11d" "\n\t" 2074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt %%edi, %%r11d" "\n\t" 2076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r popcntl %016llx %016llx %016llx %016llx\n", 2086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntl 0(%%rax), %%r11d" "\n\t" 2097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt 0(%%rax), %%r11d" "\n\t" 2099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "r11", "r12" 2107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m popcntl %016llx %016llx %016llx %016llx\n", 2109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_POPCNTW ( void ) 2115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong block[4]; 2117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 2118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong oszacp_mask = 0x8D5; 2119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 2120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 0(%%rax), %%rdi" "\n\t" 2127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntw %%di, %%r11w" "\n\t" 2130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt %%di, %%r11w" "\n\t" 2132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r popcntw %016llx %016llx %016llx %016llx\n", 2142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0] = i == 0 ? 0 : randULong(); 2145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[1] = randULong(); 2146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[2] = randULong(); 2147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[3] = randULong(); 2148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %0, %%rax" "\n\t" 2150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq 8(%%rax), %%r11" "\n\t" 2151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef VGP_amd64_darwin 2152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcntw 0(%%rax), %%r11w" "\n\t" 2153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 2154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popcnt 0(%%rax), %%r11w" "\n\t" 2155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 2156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r11, 16(%%rax)" "\n\t" 2157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 2158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %%r12" "\n\t" 2159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movq %%r12, 24(%%rax)" "\n" 2160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/ 2161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*in*/"r"(&block[0]) 2162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*trash*/ "cc", "memory", "r11", "r12" 2163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m popcntw %016llx %016llx %016llx %016llx\n", 2165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov block[0], block[1], block[2], block[3] & oszacp_mask); 2166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PCMPGTQ ( void ) 2171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 spec[7]; 2173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0xffffffffffffffffULL ); 2174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[1], 0x0000000000000001ULL, 0xfffffffffffffffeULL ); 2175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[2], 0x7fffffffffffffffULL, 0x8000000000000001ULL ); 2176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[3], 0x8000000000000000ULL, 0x8000000000000000ULL ); 2177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[4], 0x8000000000000001ULL, 0x7fffffffffffffffULL ); 2178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[5], 0xfffffffffffffffeULL, 0x0000000000000001ULL ); 2179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[6], 0xffffffffffffffffULL, 0x0000000000000000ULL ); 2180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i, j; 2183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 2184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pcmpgtq", src, dst); 2187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 7; i++) { 2189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < 7; j++) { 2190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &spec[i], 16); 2191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &spec[j], 16); 2192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov DO_mandr_r("pcmpgtq", src, dst); 2193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDSD ------------ */ 2198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $0, (%0), %%xmm11" "\n\t" 2205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $0, %%xmm2, %%xmm11" "\n\t" 2215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $1, (%0), %%xmm11" "\n\t" 2229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $1, %%xmm2, %%xmm11" "\n\t" 2239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $2, (%0), %%xmm11" "\n\t" 2253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $2, %%xmm2, %%xmm11" "\n\t" 2263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $3, (%0), %%xmm11" "\n\t" 2277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $3, %%xmm2, %%xmm11" "\n\t" 2287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 2296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $4, (%0), %%xmm11" "\n\t" 2301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundsd $4, %%xmm2, %%xmm11" "\n\t" 2311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSD_w_immediate_rounding ( void ) 2320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double vals[22]; 2322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 2323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 2324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 2325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 2326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 2327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 2328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 2329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 2330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 2331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 2332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 2333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 2334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 2335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 2336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 2337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 2338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 2339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 2340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 2341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 2342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 2343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 2344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 2345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 2346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_000(False/*reg*/, &src, &dst); 2354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundsd_000 "); 2355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_000(True/*mem*/, &src, &dst); 2365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundsd_000 "); 2366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_001(False/*reg*/, &src, &dst); 2377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundsd_001 "); 2378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_001(True/*mem*/, &src, &dst); 2388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundsd_001 "); 2389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_010(False/*reg*/, &src, &dst); 2400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundsd_010 "); 2401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_010(True/*mem*/, &src, &dst); 2411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundsd_010 "); 2412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_011(False/*reg*/, &src, &dst); 2423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundsd_011 "); 2424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_011(True/*mem*/, &src, &dst); 2434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundsd_011 "); 2435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSD_w_mxcsr_rounding ( void ) 2444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt rm; 2446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double vals[22]; 2447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 2448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 2449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 2450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 2451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 2452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 2453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 2454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 2455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 2456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 2457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 2458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 2459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 2460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 2461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 2462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 2463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 2464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 2465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 2466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 2467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 2468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 2469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 2470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 2471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 2474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (rm = 0; rm <= 3; rm++) { 2479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(rm); 2480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_1XX(False/*reg*/, &src, &dst); 2485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r (rm=%u) roundsd_1XX ", rm); 2486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSD_1XX(True/*mem*/, &src, &dst); 2496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m (rm=%u) roundsd_1XX ", rm); 2497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 3); 2507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(0); 2508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 2510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDSS ------------ */ 2514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $0, (%0), %%xmm11" "\n\t" 2521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $0, %%xmm2, %%xmm11" "\n\t" 2531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $1, (%0), %%xmm11" "\n\t" 2545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $1, %%xmm2, %%xmm11" "\n\t" 2555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $2, (%0), %%xmm11" "\n\t" 2569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $2, %%xmm2, %%xmm11" "\n\t" 2579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $3, (%0), %%xmm11" "\n\t" 2593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $3, %%xmm2, %%xmm11" "\n\t" 2603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDSS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 2612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $4, (%0), %%xmm11" "\n\t" 2617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundss $4, %%xmm2, %%xmm11" "\n\t" 2627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSS_w_immediate_rounding ( void ) 2636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov float vals[22]; 2638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 2639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 2640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 2641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 2642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 2643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 2644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 2645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 2646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 2647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 2648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 2649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 2650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 2651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 2652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 2653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 2654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 2655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 2656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 2657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 2658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 2659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 2660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 2661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 2662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_000(False/*reg*/, &src, &dst); 2670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundss_000 "); 2671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_000(True/*mem*/, &src, &dst); 2681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundss_000 "); 2682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_001(False/*reg*/, &src, &dst); 2693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundss_001 "); 2694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_001(True/*mem*/, &src, &dst); 2704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundss_001 "); 2705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_010(False/*reg*/, &src, &dst); 2716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundss_010 "); 2717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_010(True/*mem*/, &src, &dst); 2727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundss_010 "); 2728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_011(False/*reg*/, &src, &dst); 2739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundss_011 "); 2740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_011(True/*mem*/, &src, &dst); 2750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundss_011 "); 2751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDSS_w_mxcsr_rounding ( void ) 2760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt rm; 2762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov float vals[22]; 2763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 2764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 2765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 2766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 2767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 2768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 2769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 2770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 2771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 2772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 2773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 2774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 2775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 2776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 2777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 2778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 2779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 2780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 2781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 2782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 2783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 2784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 2785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 2786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 2787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 2790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (rm = 0; rm <= 3; rm++) { 2795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(rm); 2796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_1XX(False/*reg*/, &src, &dst); 2801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r (rm=%u) roundss_1XX ", rm); 2802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 2811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDSS_1XX(True/*mem*/, &src, &dst); 2812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m (rm=%u) roundss_1XX ", rm); 2813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 3); 2823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(0); 2824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 2825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 2826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDPD ------------ */ 2829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $0, (%0), %%xmm11" "\n\t" 2836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $0, %%xmm2, %%xmm11" "\n\t" 2846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $1, (%0), %%xmm11" "\n\t" 2860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $1, %%xmm2, %%xmm11" "\n\t" 2870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $2, (%0), %%xmm11" "\n\t" 2884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $2, %%xmm2, %%xmm11" "\n\t" 2894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $3, (%0), %%xmm11" "\n\t" 2908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $3, %%xmm2, %%xmm11" "\n\t" 2918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 2927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 2929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $4, (%0), %%xmm11" "\n\t" 2932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 2936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 2938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 2939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 2940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 2941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundpd $4, %%xmm2, %%xmm11" "\n\t" 2942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 2943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 2944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 2945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 2946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 2947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 2948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 2949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPD_w_immediate_rounding ( void ) 2951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 2952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double vals[22]; 2953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 2954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 2955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 2956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 2957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 2958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 2959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 2960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 2961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 2962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 2963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 2964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 2965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 2966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 2967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 2968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 2969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 2970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 2971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 2972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 2973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 2974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 2975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 2976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 2977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 2980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 2985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_000(False/*reg*/, &src, &dst); 2986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundpd_000 "); 2987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 2988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 2989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 2990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 2991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 2992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 2993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 2994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 2995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 2996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 2997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 2998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_000(True/*mem*/, &src, &dst); 2999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundpd_000 "); 3000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_001(False/*reg*/, &src, &dst); 3013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundpd_001 "); 3014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_001(True/*mem*/, &src, &dst); 3026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundpd_001 "); 3027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_010(False/*reg*/, &src, &dst); 3040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundpd_010 "); 3041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_010(True/*mem*/, &src, &dst); 3053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundpd_010 "); 3054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_011(False/*reg*/, &src, &dst); 3067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundpd_011 "); 3068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_011(True/*mem*/, &src, &dst); 3080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundpd_011 "); 3081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPD_w_mxcsr_rounding ( void ) 3091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt rm; 3093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov double vals[22]; 3094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 3095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 3096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 3097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 3098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 3099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 3100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 3101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 3102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 3103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 3104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 3105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 3106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 3107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 3108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 3109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 3110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 3111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 3112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 3113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 3114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 3115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 3116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 3117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 3118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 3121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 3123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 3124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (rm = 0; rm <= 3; rm++) { 3126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(rm); 3127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_1XX(False/*reg*/, &src, &dst); 3133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r (rm=%u) roundpd_1XX ", rm); 3134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 8); 3144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 8); 3145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPD_1XX(True/*mem*/, &src, &dst); 3146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m (rm=%u) roundpd_1XX ", rm); 3147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 3151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 3152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 3); 3158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(0); 3159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 3161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ ROUNDPS ------------ */ 3164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 3166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $0, (%0), %%xmm11" "\n\t" 3171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 3175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $0, %%xmm2, %%xmm11" "\n\t" 3181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 3185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 3190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $1, (%0), %%xmm11" "\n\t" 3195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 3199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $1, %%xmm2, %%xmm11" "\n\t" 3205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 3209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 3214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $2, (%0), %%xmm11" "\n\t" 3219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 3223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $2, %%xmm2, %%xmm11" "\n\t" 3229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 3233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 3238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $3, (%0), %%xmm11" "\n\t" 3243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 3247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $3, %%xmm2, %%xmm11" "\n\t" 3253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 3257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 3262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $4, (%0), %%xmm11" "\n\t" 3267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11" 3271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "roundps $4, %%xmm2, %%xmm11" "\n\t" 3277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst) 3280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2" 3281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPS_w_immediate_rounding ( void ) 3286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov float vals[22]; 3288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 3289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 3290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 3291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 3292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 3293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 3294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 3295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 3296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 3297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 3298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 3299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 3300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 3301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 3302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 3303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 3304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 3305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 3306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 3307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 3308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 3309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 3310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 3311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 3312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 3314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 3315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_000(False/*reg*/, &src, &dst); 3323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundps_000 "); 3324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_000(True/*mem*/, &src, &dst); 3340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundps_000 "); 3341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_001(False/*reg*/, &src, &dst); 3358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundps_001 "); 3359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_001(True/*mem*/, &src, &dst); 3375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundps_001 "); 3376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_010(False/*reg*/, &src, &dst); 3393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundps_010 "); 3394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_010(True/*mem*/, &src, &dst); 3410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundps_010 "); 3411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_011(False/*reg*/, &src, &dst); 3428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r roundps_011 "); 3429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_011(True/*mem*/, &src, &dst); 3445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m roundps_011 "); 3446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_ROUNDPS_w_mxcsr_rounding ( void ) 3458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov UInt rm; 3460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov float vals[22]; 3461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i = 0; 3462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.0; 3463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.0; 3464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosInf(); 3465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegInf(); 3466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkPosNan(); 3467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = mkNegNan(); 3468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.3; 3469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -1.1; 3470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.9; 3471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.7; 3472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.50001; 3473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.49999; 3474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.3; 3475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = -0.1; 3476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.1; 3477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.3; 3478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.49999; 3479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.50001; 3480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.7; 3481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 0.9; 3482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.1; 3483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov vals[i++] = 1.3; 3484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(i == 22); 3485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 3488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 3490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 src, dst; 3491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (rm = 0; rm <= 3; rm++) { 3493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(rm); 3494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_1XX(False/*reg*/, &src, &dst); 3502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r (rm=%u) roundps_1XX ", rm); 3503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&src); 3513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&dst); 3514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[0], &vals[i], 4); 3515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[4], &vals[(i+5)%22], 4); 3516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[8], &vals[(i+11)%22], 4); 3517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src[12], &vals[(i+17)%22], 4); 3518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_ROUNDPS_1XX(True/*mem*/, &src, &dst); 3519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m (rm=%u) roundps_1XX ", rm); 3520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&src); 3521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 3524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 3525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 3526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 3527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 3); 3533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov set_sse_roundingmode(0); 3534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov rm = get_sse_roundingmode(); 3535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov assert(rm == 0); // 0 == RN == default 3536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ PTEST ------------ */ 3539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PTEST ( void ) 3541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov const Int ntests = 8; 3543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 spec[ntests]; 3544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0x0000000000000000ULL ); 3545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[1], 0x0000000000000000ULL, 0x0000000000000001ULL ); 3546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[2], 0x0000000000000001ULL, 0x0000000000000000ULL ); 3547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[3], 0x0000000000000001ULL, 0x0000000000000001ULL ); 3548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[4], 0xffffffffffffffffULL, 0xffffffffffffffffULL ); 3549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[5], 0xffffffffffffffffULL, 0xfffffffffffffffeULL ); 3550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[6], 0xfffffffffffffffeULL, 0xffffffffffffffffULL ); 3551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do64HLtoV128( &spec[7], 0xfffffffffffffffeULL, 0xfffffffffffffffeULL ); 3552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 block[2]; 3553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i, j; 3554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ULong flags; 3555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < ntests; i++) { 3556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (j = 0; j < ntests; j++) { 3557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&block[0], &spec[i], 16); 3558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&block[1], &spec[j], 16); 3559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "subq $256, %%rsp" "\n\t" 3561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd 0(%1), %%xmm2" "\n\t" 3562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "ptest 16(%1), %%xmm2" "\n\t" 3563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pushfq" "\n\t" 3564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "popq %0" "\n\t" 3565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "addq $256, %%rsp" "\n\t" 3566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*out*/"=r"(flags) : /*in*/ "r"(&block[0]) : 3567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "xmm2", "memory", "cc" 3568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r ptest "); 3570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&block[0]); 3571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&block[1]); 3573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> eflags %04x\n", (UInt)flags & 0x8D5); 3574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ PBLENDVB ------------ */ 3579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_PBLENDVB ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pblendvb (%0), %%xmm11" "\n\t" 3587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm0" 3591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "pblendvb %%xmm2, %%xmm11" "\n\t" 3598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2","xmm0" 3602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_PBLENDVB ( void ) 3607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 3610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 3611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_xmm0); 3612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_src); 3613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_dst); 3614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_PBLENDVB(False/*reg*/, &xmm0, &src, &dst); 3619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r pblendvb "); 3620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_PBLENDVB(True/*mem*/, &xmm0, &src, &dst); 3633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m pblendvb "); 3634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ BLENDVPD ------------ */ 3646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_BLENDVPD ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "blendvpd (%0), %%xmm11" "\n\t" 3654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm0" 3658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "blendvpd %%xmm2, %%xmm11" "\n\t" 3665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2","xmm0" 3669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDVPD ( void ) 3674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 3677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 3678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_xmm0); 3679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_src); 3680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_dst); 3681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_BLENDVPD(False/*reg*/, &xmm0, &src, &dst); 3686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r blendvpd "); 3687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_BLENDVPD(True/*mem*/, &xmm0, &src, &dst); 3700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m blendvpd "); 3701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ BLENDVPS ------------ */ 3713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid do_BLENDVPS ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov if (mem) { 3717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "blendvps (%0), %%xmm11" "\n\t" 3721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm0" 3725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } else { 3727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov __asm__ __volatile__( 3728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%2), %%xmm0" "\n\t" 3729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%1), %%xmm11" "\n\t" 3730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd (%0), %%xmm2" "\n\t" 3731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "blendvps %%xmm2, %%xmm11" "\n\t" 3732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov "movupd %%xmm11, (%1)" "\n" 3733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*OUT*/ 3734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov : /*TRASH*/ "xmm11","xmm2","xmm0" 3736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov ); 3737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovvoid test_BLENDVPS ( void ) 3741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov Int i; 3744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov for (i = 0; i < 10; i++) { 3745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_xmm0); 3746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_src); 3747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov randV128(&t_dst); 3748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_BLENDVPS(False/*reg*/, &xmm0, &src, &dst); 3753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("r blendvps "); 3754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&xmm0, &t_xmm0, 16); 3764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&src, &t_src, 16); 3765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov memcpy(&dst, &t_dst, 16); 3766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov do_BLENDVPS(True/*mem*/, &xmm0, &src, &dst); 3767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("m blendvps "); 3768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_xmm0); 3769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_src); 3771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" "); 3772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&t_dst); 3773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf(" -> "); 3774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov showV128(&dst); 3775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov printf("\n"); 3776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov } 3777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3779436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid test_MOVNTDQA ( void ) 3780436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{ 3781436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov V128 src, dst; 3782436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Int i; 3783436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov for (i = 0; i < 10; i++) { 3784436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov randV128(&src); 3785436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* make sure the load actually happens */ 3786436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov randV128(&dst); 3787436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov DO_m_r("movntdqa", src, dst); 3788436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov } 3789436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} 3790436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 3791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* ------------ main ------------ */ 3792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint main ( int argc, char** argv ) 3794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ 3795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 1 3796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // ------ SSE 4.1 ------ 3797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_BLENDPD(); // done Apr.01.2010 3798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_BLENDPS(); // done Apr.02.2010 3799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PBLENDW(); 3800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PBLENDVB(); 3801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_BLENDVPD(); 3802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_BLENDVPS(); 3803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_DPPD(); // done Apr.08.2010 3804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_DPPS(); // done Apr.09.2010 3805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_EXTRACTPS(); 3806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_INSERTPS(); // done Apr.01.2010 3807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PCMPEQQ(); 3808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PEXTRB(); // done Apr.15.2010 3809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PEXTRD(); // done Apr.14.2010 3810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PEXTRQ(); // done Apr.14.2010 3811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PEXTRW(); // done Apr.14.2010 3812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PINSRQ(); // done Apr.16.2010 3813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PINSRD(); // todo 3814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PINSRW(); /* Umm, this is SSE2, not SSE4. Right? */ 3815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PINSRB(); // todo 3816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMAXSB(); 3817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMAXSD(); // done Apr.09.2010 3818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMAXUD(); // done Apr.16.2010 3819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMAXUW(); 3820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMINSB(); 3821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMINSD(); // done Apr.09.2010 3822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMINUD(); 3823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMINUW(); 3824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXBW(); // done Apr.02.2010 3825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXBD(); // done Mar.30.2010 3826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXBQ(); // done Mar.30.2010 3827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXWD(); // done Mar.31.2010 3828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXWQ(); // done Mar.31.2010 3829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVSXDQ(); // done Mar.31.2010 3830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXBW(); // done Mar.28.2010 3831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXBD(); // done Mar.29.2010 3832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXBQ(); // done Mar.29.2010 3833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXWD(); // done Mar.28.2010 3834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXWQ(); // done Mar.29.2010 3835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMOVZXDQ(); // done Mar.29.2010 3836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_POPCNTW(); 3837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_POPCNTL(); 3838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_POPCNTQ(); 3839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMULDQ(); 3840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PMULLD(); 3841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PTEST(); 3842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDSD_w_immediate_rounding(); 3843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDSS_w_immediate_rounding(); 3844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDPD_w_immediate_rounding(); 3845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDPS_w_immediate_rounding(); 3846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDSD_w_mxcsr_rounding(); 3847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDSS_w_mxcsr_rounding(); 3848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDPD_w_mxcsr_rounding(); 3849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_ROUNDPS_w_mxcsr_rounding(); 3850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // ------ SSE 4.2 ------ 3851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PCMPGTQ(); 3852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov // CRC32B,Q 3853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_PACKUSDW(); 3854663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng test_PHMINPOSUW(); 3855663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng test_MPSADBW(); 3856436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov test_MOVNTDQA(); /* not sure whether this is 4.1 or 4.2 */ 3857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#else 3858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov test_MPSADBW(); 3859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif 3860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov return 0; 3862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov} 3863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov 3864