1e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* A program to test SSE4.1/SSE4.2 instructions. 3e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Revisions: Nov.208 - wrote this file 4e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Apr.10.2010 - added PEXTR* tests 5e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Apr.16.2010 - added PINS* tests 6e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj*/ 7e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 8e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* HOW TO COMPILE: 9c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj gcc -m64 -g -O -Wall -o sse4-64 sse4-64.c 10e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj*/ 11e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 12e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#include <stdio.h> 13e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#include <stdlib.h> 14e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#include <assert.h> 157c23ae4b19d203292a2d2509aefa192c7d91ff28rhyskidd#include "tests/malloc.h" 16e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#include <string.h> 17e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 18e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 19e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef unsigned char V128[16]; 20e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef unsigned int UInt; 21e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef signed int Int; 22e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef unsigned char UChar; 23e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef unsigned long long int ULong; 24e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 25c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjtypedef unsigned char Bool; 26c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj#define False ((Bool)0) 27c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj#define True ((Bool)1) 28c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 29c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 30e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef 31e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj struct { 32e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 arg1; 33e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 arg2; 34e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 res; 35e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 36e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RRArgs; 37e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 38e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjtypedef 39e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj struct { 40e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 arg1; 41e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 res; 42e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 43e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RMArgs; 44e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 45b823b8531aedef4c8abff2544ea12aa0795e914dsewardjstatic void do64HLtoV128 ( /*OUT*/V128* res, ULong wHi, ULong wLo ) 46b823b8531aedef4c8abff2544ea12aa0795e914dsewardj{ 47b823b8531aedef4c8abff2544ea12aa0795e914dsewardj // try to sidestep strict-aliasing snafus by memcpying explicitly 48b823b8531aedef4c8abff2544ea12aa0795e914dsewardj UChar* p = (UChar*)res; 49b823b8531aedef4c8abff2544ea12aa0795e914dsewardj memcpy(&p[8], (UChar*)&wHi, 8); 50b823b8531aedef4c8abff2544ea12aa0795e914dsewardj memcpy(&p[0], (UChar*)&wLo, 8); 51b823b8531aedef4c8abff2544ea12aa0795e914dsewardj} 52b823b8531aedef4c8abff2544ea12aa0795e914dsewardj 53e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic UChar randUChar ( void ) 54e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 55e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj static UInt seed = 80021; 56e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj seed = 1103515245 * seed + 12345; 57e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj return (seed >> 17) & 0xFF; 58e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 59e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 60e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic ULong randULong ( void ) 61e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 62e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 63e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong r = 0; 64e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 8; i++) { 65e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj r = (r << 8) | (ULong)(0xFF & randUChar()); 66e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 67e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj return r; 68e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 69e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 70e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void randV128 ( V128* v ) 71e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 72e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 73e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 16; i++) 74e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj (*v)[i] = randUChar(); 75e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 76e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 77e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showV128 ( V128* v ) 78e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 79e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 80e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 15; i >= 0; i--) 81e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%02x", (Int)(*v)[i]); 82e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 83e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 84e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showMaskedV128 ( V128* v, V128* mask ) 85e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 86e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 87e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 15; i >= 0; i--) 88e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%02x", (Int)( ((*v)[i]) & ((*mask)[i]) )); 89e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 90e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 91e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showIGVV( char* rOrM, char* op, Int imm, 92e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src64, V128* dst, V128* res ) 93e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 94e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%s %10s $%d ", rOrM, op, imm); 95e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%016llx", src64); 96e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 97e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(dst); 98e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 99e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(res); 100e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("\n"); 101e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 102e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 103e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showIAG ( char* rOrM, char* op, Int imm, 104e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128* argL, ULong argR, ULong res ) 105e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 106e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%s %10s $%d ", rOrM, op, imm); 107e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(argL); 108e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 109e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%016llx", argR); 110e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 111e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%016llx", res); 112e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("\n"); 113e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 114e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 115e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showIAA ( char* rOrM, char* op, Int imm, RRArgs* rra, V128* rmask ) 116e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 117e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%s %10s $%d ", rOrM, op, imm); 118e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(&rra->arg1); 119e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 120e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(&rra->arg2); 121e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 122e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showMaskedV128(&rra->res, rmask); 123e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("\n"); 124e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 125e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 126e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic void showAA ( char* rOrM, char* op, RRArgs* rra, V128* rmask ) 127e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 128e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("%s %10s ", rOrM, op); 129e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(&rra->arg1); 130e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 131e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showV128(&rra->arg2); 132e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf(" "); 133e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showMaskedV128(&rra->res, rmask); 134e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("\n"); 135e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 136e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 137e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* Note: these are little endian. Hence first byte is the least 138e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj significant byte of lane zero. */ 139e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 140e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* Mask for insns where all result bits are non-approximated. */ 141e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic V128 AllMask = { 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 142e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF }; 143e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 144e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* Mark for insns which produce approximated vector short results. */ 1454fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj__attribute__((unused)) 146e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic V128 ApproxPS = { 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF, 147e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 0x00,0x00,0x80,0xFF, 0x00,0x00,0x80,0xFF }; 148e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 149e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj/* Mark for insns which produce approximated scalar short results. */ 1504fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj__attribute__((unused)) 151e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic V128 ApproxSS = { 0x00,0x00,0x80,0xFF, 0xFF,0xFF,0xFF,0xFF, 152e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF }; 153e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 154e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic V128 fives = { 0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55, 155e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 0x55,0x55,0x55,0x55, 0x55,0x55,0x55,0x55 }; 156e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 157e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjstatic V128 zeroes = { 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 158e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 }; 159e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 160c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjdouble mkPosInf ( void ) { return 1.0 / 0.0; } 161c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjdouble mkNegInf ( void ) { return -mkPosInf(); } 162c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjdouble mkPosNan ( void ) { return 0.0 / 0.0; } 163c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjdouble mkNegNan ( void ) { return -mkPosNan(); } 164c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 1654fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj__attribute__((noinline)) 1664fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjUInt get_mxcsr ( void ) 1674fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 1684fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ULong w64; 1694fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 1704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "subq $8, %%rsp" "\n\t" 1714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "stmxcsr (%%rsp)" "\n\t" 1724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movq (%%rsp), %0" "\n" 1734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "addq $8, %%rsp" 1744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/"=r"(w64) : /*IN*/ : "memory","cc" 1754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 1764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (0) printf("get %08x\n", (UInt)w64); 1774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj return (UInt)w64; 1784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 1794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 1804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj__attribute__((noinline)) 1814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid set_mxcsr ( UInt w32 ) 1824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 1834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (0) printf("set %08x\n", w32); 1844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ULong w64 = (ULong)w32; 1854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 1864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "subq $8, %%rsp" "\n\t" 1874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movq %0, (%%rsp)" "\n\t" 1884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "ldmxcsr (%%rsp)" "\n\t" 1894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "addq $8, %%rsp" 1904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ : /*IN*/"r"(w64) : "memory",/*"mxcsr",*/"cc" 1914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 1924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 1934fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 1944fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjUInt get_sse_roundingmode ( void ) 1954fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 1964fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt w = get_mxcsr(); 1974fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj return (w >> 13) & 3; 1984fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 1994fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 2004fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid set_sse_roundingmode ( UInt m ) 2014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 2024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt w; 2034fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(0 == (m & ~3)); 2044fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj w = get_mxcsr(); 2054fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj w &= ~(3 << 13); 2064fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj w |= (m << 13); 2074fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_mxcsr(w); 2084fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 2094fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 210c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 211e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_r_r(_opname, _imm, _src, _dst) \ 212e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 213e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 _tmp; \ 214e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 215e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" \ 216e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%1), %%xmm11" "\n\t" \ 217e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", %%xmm2, %%xmm11" "\n\t" \ 218e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm11, (%2)" "\n" \ 219e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ : /*in*/ "r"(&(_src)), "r"(&(_dst)), "r"(&(_tmp)) \ 220e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2", "xmm11" \ 221e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 222e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RRArgs rra; \ 223e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg1, &(_src), sizeof(V128)); \ 224e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg2, &(_dst), sizeof(V128)); \ 225e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.res, &(_tmp), sizeof(V128)); \ 226e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIAA("r", (_opname), (_imm), &rra, &AllMask); \ 227e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 228e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 229e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_m_r(_opname, _imm, _src, _dst) \ 230e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 231e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 _tmp; \ 232e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128* _srcM = memalign16(sizeof(V128)); \ 233e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(_srcM, &(_src), sizeof(V128)); \ 234e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 235e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%1), %%xmm11" "\n\t" \ 236e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", (%0), %%xmm11" "\n\t" \ 237e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm11, (%2)" "\n" \ 238e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ : /*in*/ "r"(_srcM), "r"(&(_dst)), "r"(&(_tmp)) \ 239e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm11" \ 240e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 241e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RRArgs rra; \ 242e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg1, &(_src), sizeof(V128)); \ 243e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg2, &(_dst), sizeof(V128)); \ 244e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.res, &(_tmp), sizeof(V128)); \ 245e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIAA("m", (_opname), (_imm), &rra, &AllMask); \ 246e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj free(_srcM); \ 247e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 248e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 249e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_mandr_r(_opname, _imm, _src, _dst) \ 250e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_r( _opname, _imm, _src, _dst ) \ 251e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_m_r( _opname, _imm, _src, _dst ) 252e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 253e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 254e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 255e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 256e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 257e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_r_r(_opname, _src, _dst) \ 258e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 259e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 _tmp; \ 260e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 261e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" \ 262e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%1), %%xmm11" "\n\t" \ 263e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " %%xmm2, %%xmm11" "\n\t" \ 264e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm11, (%2)" "\n" \ 265e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ : /*in*/ "r"(&(_src)), "r"(&(_dst)), "r"(&(_tmp)) \ 266e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2", "xmm11" \ 267e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 268e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RRArgs rra; \ 269e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg1, &(_src), sizeof(V128)); \ 270e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg2, &(_dst), sizeof(V128)); \ 271e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.res, &(_tmp), sizeof(V128)); \ 272e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showAA("r", (_opname), &rra, &AllMask); \ 273e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 274e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 275e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_m_r(_opname, _src, _dst) \ 276e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 277e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 _tmp; \ 278e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128* _srcM = memalign16(sizeof(V128)); \ 279e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(_srcM, &(_src), sizeof(V128)); \ 280e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 281e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%1), %%xmm11" "\n\t" \ 282e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " (%0), %%xmm11" "\n\t" \ 283e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm11, (%2)" "\n" \ 284e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ : /*in*/ "r"(_srcM), "r"(&(_dst)), "r"(&(_tmp)) \ 285e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm11" \ 286e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 287e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj RRArgs rra; \ 288e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg1, &(_src), sizeof(V128)); \ 289e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.arg2, &(_dst), sizeof(V128)); \ 290e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(&rra.res, &(_tmp), sizeof(V128)); \ 291e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showAA("m", (_opname), &rra, &AllMask); \ 292e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj free(_srcM); \ 293e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 294e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 295e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_mandr_r(_opname, _src, _dst) \ 296e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_r_r(_opname, _src, _dst) \ 297e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_m_r(_opname, _src, _dst) 298e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 299e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 300e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 301e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 302e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_r_to_rscalar(_opname, _imm, _src, _dstsuffix) \ 303e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 304e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong _scbefore = 0x5555555555555555ULL; \ 305e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong _scafter = 0xAAAAAAAAAAAAAAAAULL; \ 306e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* This assumes that gcc won't make any of %0, %1, %2 */ \ 307e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* be r11. That should be ensured (cough, cough) */ \ 308e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* by declaring r11 to be clobbered. */ \ 309e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 310e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" \ 311e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq (%1), %%r11" "\n\t" \ 312e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", %%xmm2, %%r11" _dstsuffix "\n\t" \ 313e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, (%2)" "\n" \ 314e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ \ 315e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/ "r"(&(_src)), "r"(&(_scbefore)), "r"(&(_scafter)) \ 316e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2", "r11" \ 317e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 318e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIAG("r", (_opname), (_imm), &(_src), (_scbefore), (_scafter)); \ 319e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 320e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 321e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_r_to_mscalar(_opname, _imm, _src) \ 322e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 323e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong _scbefore = 0x5555555555555555ULL; \ 324e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong _scafter = _scbefore; \ 325e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 326e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" \ 327e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", %%xmm2, (%1)" "\n\t" \ 328e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ \ 329e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/ "r"(&(_src)), "r"(&(_scafter)) \ 330e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2" \ 331e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 332e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIAG("m", (_opname), (_imm), &(_src), (_scbefore), (_scafter)); \ 333e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 334e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 335e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_r_to_mandrscalar(_opname, _imm, _src, _dstsuffix) \ 336e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_rscalar( _opname, _imm, _src, _dstsuffix ) \ 337e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mscalar( _opname, _imm, _src ) 338e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 339e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 340e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 341e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 342e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 343e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 344e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 345e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 346e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_rscalar_to_r(_opname, _imm, _src, _srcsuffix) \ 347e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 348e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 dstv; \ 349e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 res; \ 350e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src64 = (ULong)(_src); \ 351e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(dstv, fives, sizeof(dstv)); \ 352e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(res, zeroes, sizeof(res)); \ 353e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* This assumes that gcc won't make any of %0, %1, %2 */ \ 354e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* be r11. That should be ensured (cough, cough) */ \ 355e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj /* by declaring r11 to be clobbered. */ \ 356e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 357e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" /*dstv*/ \ 358e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq (%1), %%r11" "\n\t" /*src64*/ \ 359e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", %%r11" _srcsuffix ", %%xmm2" "\n\t" \ 360e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm2, (%2)" "\n" /*res*/ \ 361e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ \ 362e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/ "r"(&dstv), "r"(&src64), "r"(&res) \ 363e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2", "r11" \ 364e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 365e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIGVV("r", (_opname), (_imm), src64, &dstv, &res); \ 366e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 367e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_mscalar_to_r(_opname, _imm, _src) \ 368e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { \ 369e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 dstv; \ 370e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 res; \ 371e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src64 = (ULong)(_src); \ 372e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(dstv, fives, sizeof(dstv)); \ 373e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memcpy(res, zeroes, sizeof(res)); \ 374e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( \ 375e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd (%0), %%xmm2" "\n\t" /*dstv*/ \ 376e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj _opname " $" #_imm ", (%1), %%xmm2" "\n\t" \ 377e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movupd %%xmm2, (%2)" "\n" /*res*/ \ 378e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ \ 379e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/ "r"(&dstv), "r"(&src64), "r"(&res) \ 380e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : "cc", "memory", "xmm2" \ 381e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); \ 382e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj showIGVV("m", (_opname), (_imm), src64, &dstv, &res); \ 383e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 384e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 385e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#define DO_imm_mandrscalar_to_r(_opname, _imm, _src, _dstsuffix) \ 386e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_rscalar_to_r( _opname, _imm, _src, _dstsuffix ) \ 387e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mscalar_to_r( _opname, _imm, _src ) 388e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 389e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 390e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 391e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 392e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 393e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_BLENDPD ( void ) 394e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 395e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 396e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 397e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 398e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 399e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 400e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendpd", 0, src, dst); 401e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendpd", 1, src, dst); 402e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendpd", 2, src, dst); 403e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendpd", 3, src, dst); 404e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 405e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 406e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 407e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_BLENDPS ( void ) 408e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 409e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 410e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 411e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 412e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 413e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 414e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 0, src, dst); 415e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 1, src, dst); 416e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 2, src, dst); 417e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 3, src, dst); 418e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 4, src, dst); 419e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 5, src, dst); 420e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 6, src, dst); 421e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 7, src, dst); 422e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 8, src, dst); 423e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 9, src, dst); 424e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 10, src, dst); 425e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 11, src, dst); 426e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 12, src, dst); 427e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 13, src, dst); 428e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 14, src, dst); 429e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("blendps", 15, src, dst); 430e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 431e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 432e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 433e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_DPPD ( void ) 434e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 435e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 436e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { 437e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(double*)(&src[0]) = 1.2345; 438e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(double*)(&src[8]) = -6.78910; 439e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(double*)(&dst[0]) = -11.121314; 440e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(double*)(&dst[8]) = 15.161718; 441e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 0, src, dst); 442e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 1, src, dst); 443e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 2, src, dst); 444e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 3, src, dst); 445e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 4, src, dst); 446e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 5, src, dst); 447e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 6, src, dst); 448e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 7, src, dst); 449e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 8, src, dst); 450e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 9, src, dst); 451e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 10, src, dst); 452e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 11, src, dst); 453e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 12, src, dst); 454e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 13, src, dst); 455e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 14, src, dst); 456e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 15, src, dst); 457e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 16, src, dst); 458e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 17, src, dst); 459e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 18, src, dst); 460e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 19, src, dst); 461e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 20, src, dst); 462e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 21, src, dst); 463e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 22, src, dst); 464e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 23, src, dst); 465e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 24, src, dst); 466e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 25, src, dst); 467e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 26, src, dst); 468e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 27, src, dst); 469e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 28, src, dst); 470e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 29, src, dst); 471e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 30, src, dst); 472e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 31, src, dst); 473e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 32, src, dst); 474e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 33, src, dst); 475e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 34, src, dst); 476e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 35, src, dst); 477e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 36, src, dst); 478e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 37, src, dst); 479e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 38, src, dst); 480e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 39, src, dst); 481e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 40, src, dst); 482e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 41, src, dst); 483e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 42, src, dst); 484e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 43, src, dst); 485e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 44, src, dst); 486e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 45, src, dst); 487e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 46, src, dst); 488e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 47, src, dst); 489e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 48, src, dst); 490e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 49, src, dst); 491e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 50, src, dst); 492e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 51, src, dst); 493e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 52, src, dst); 494e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 53, src, dst); 495e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 54, src, dst); 496e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 55, src, dst); 497e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 56, src, dst); 498e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 57, src, dst); 499e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 58, src, dst); 500e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 59, src, dst); 501e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 60, src, dst); 502e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 61, src, dst); 503e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 62, src, dst); 504e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 63, src, dst); 505e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 64, src, dst); 506e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 65, src, dst); 507e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 66, src, dst); 508e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 67, src, dst); 509e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 68, src, dst); 510e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 69, src, dst); 511e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 70, src, dst); 512e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 71, src, dst); 513e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 72, src, dst); 514e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 73, src, dst); 515e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 74, src, dst); 516e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 75, src, dst); 517e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 76, src, dst); 518e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 77, src, dst); 519e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 78, src, dst); 520e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 79, src, dst); 521e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 80, src, dst); 522e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 81, src, dst); 523e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 82, src, dst); 524e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 83, src, dst); 525e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 84, src, dst); 526e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 85, src, dst); 527e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 86, src, dst); 528e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 87, src, dst); 529e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 88, src, dst); 530e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 89, src, dst); 531e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 90, src, dst); 532e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 91, src, dst); 533e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 92, src, dst); 534e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 93, src, dst); 535e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 94, src, dst); 536e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 95, src, dst); 537e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 96, src, dst); 538e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 97, src, dst); 539e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 98, src, dst); 540e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 99, src, dst); 541e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 100, src, dst); 542e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 101, src, dst); 543e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 102, src, dst); 544e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 103, src, dst); 545e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 104, src, dst); 546e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 105, src, dst); 547e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 106, src, dst); 548e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 107, src, dst); 549e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 108, src, dst); 550e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 109, src, dst); 551e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 110, src, dst); 552e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 111, src, dst); 553e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 112, src, dst); 554e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 113, src, dst); 555e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 114, src, dst); 556e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 115, src, dst); 557e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 116, src, dst); 558e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 117, src, dst); 559e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 118, src, dst); 560e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 119, src, dst); 561e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 120, src, dst); 562e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 121, src, dst); 563e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 122, src, dst); 564e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 123, src, dst); 565e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 124, src, dst); 566e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 125, src, dst); 567e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 126, src, dst); 568e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 127, src, dst); 569e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 128, src, dst); 570e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 129, src, dst); 571e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 130, src, dst); 572e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 131, src, dst); 573e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 132, src, dst); 574e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 133, src, dst); 575e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 134, src, dst); 576e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 135, src, dst); 577e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 136, src, dst); 578e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 137, src, dst); 579e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 138, src, dst); 580e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 139, src, dst); 581e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 140, src, dst); 582e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 141, src, dst); 583e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 142, src, dst); 584e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 143, src, dst); 585e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 144, src, dst); 586e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 145, src, dst); 587e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 146, src, dst); 588e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 147, src, dst); 589e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 148, src, dst); 590e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 149, src, dst); 591e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 150, src, dst); 592e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 151, src, dst); 593e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 152, src, dst); 594e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 153, src, dst); 595e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 154, src, dst); 596e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 155, src, dst); 597e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 156, src, dst); 598e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 157, src, dst); 599e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 158, src, dst); 600e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 159, src, dst); 601e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 160, src, dst); 602e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 161, src, dst); 603e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 162, src, dst); 604e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 163, src, dst); 605e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 164, src, dst); 606e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 165, src, dst); 607e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 166, src, dst); 608e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 167, src, dst); 609e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 168, src, dst); 610e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 169, src, dst); 611e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 170, src, dst); 612e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 171, src, dst); 613e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 172, src, dst); 614e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 173, src, dst); 615e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 174, src, dst); 616e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 175, src, dst); 617e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 176, src, dst); 618e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 177, src, dst); 619e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 178, src, dst); 620e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 179, src, dst); 621e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 180, src, dst); 622e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 181, src, dst); 623e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 182, src, dst); 624e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 183, src, dst); 625e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 184, src, dst); 626e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 185, src, dst); 627e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 186, src, dst); 628e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 187, src, dst); 629e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 188, src, dst); 630e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 189, src, dst); 631e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 190, src, dst); 632e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 191, src, dst); 633e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 192, src, dst); 634e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 193, src, dst); 635e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 194, src, dst); 636e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 195, src, dst); 637e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 196, src, dst); 638e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 197, src, dst); 639e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 198, src, dst); 640e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 199, src, dst); 641e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 200, src, dst); 642e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 201, src, dst); 643e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 202, src, dst); 644e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 203, src, dst); 645e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 204, src, dst); 646e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 205, src, dst); 647e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 206, src, dst); 648e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 207, src, dst); 649e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 208, src, dst); 650e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 209, src, dst); 651e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 210, src, dst); 652e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 211, src, dst); 653e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 212, src, dst); 654e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 213, src, dst); 655e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 214, src, dst); 656e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 215, src, dst); 657e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 216, src, dst); 658e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 217, src, dst); 659e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 218, src, dst); 660e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 219, src, dst); 661e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 220, src, dst); 662e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 221, src, dst); 663e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 222, src, dst); 664e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 223, src, dst); 665e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 224, src, dst); 666e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 225, src, dst); 667e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 226, src, dst); 668e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 227, src, dst); 669e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 228, src, dst); 670e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 229, src, dst); 671e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 230, src, dst); 672e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 231, src, dst); 673e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 232, src, dst); 674e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 233, src, dst); 675e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 234, src, dst); 676e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 235, src, dst); 677e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 236, src, dst); 678e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 237, src, dst); 679e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 238, src, dst); 680e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 239, src, dst); 681e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 240, src, dst); 682e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 241, src, dst); 683e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 242, src, dst); 684e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 243, src, dst); 685e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 244, src, dst); 686e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 245, src, dst); 687e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 246, src, dst); 688e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 247, src, dst); 689e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 248, src, dst); 690e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 249, src, dst); 691e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 250, src, dst); 692e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 251, src, dst); 693e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 252, src, dst); 694e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 253, src, dst); 695e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 254, src, dst); 696e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dppd", 255, src, dst); 697e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 698e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 699e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 700e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_DPPS ( void ) 701e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 702e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 703e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { 704e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[0]) = 1.2; 705e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[4]) = -3.4; 706e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[8]) = -6.7; 707e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[12]) = 8.9; 708e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[0]) = -10.11; 709e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[4]) = 12.13; 710e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[8]) = 14.15; 711e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[12]) = -16.17; 712e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 0, src, dst); 713e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 1, src, dst); 714e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 2, src, dst); 715e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 3, src, dst); 716e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 4, src, dst); 717e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 5, src, dst); 718e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 6, src, dst); 719e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 7, src, dst); 720e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 8, src, dst); 721e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 9, src, dst); 722e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 10, src, dst); 723e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 11, src, dst); 724e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 12, src, dst); 725e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 13, src, dst); 726e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 14, src, dst); 727e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 15, src, dst); 728e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 16, src, dst); 729e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 17, src, dst); 730e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 18, src, dst); 731e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 19, src, dst); 732e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 20, src, dst); 733e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 21, src, dst); 734e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 22, src, dst); 735e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 23, src, dst); 736e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 24, src, dst); 737e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 25, src, dst); 738e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 26, src, dst); 739e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 27, src, dst); 740e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 28, src, dst); 741e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 29, src, dst); 742e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 30, src, dst); 743e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 31, src, dst); 744e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 32, src, dst); 745e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 33, src, dst); 746e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 34, src, dst); 747e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 35, src, dst); 748e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 36, src, dst); 749e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 37, src, dst); 750e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 38, src, dst); 751e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 39, src, dst); 752e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 40, src, dst); 753e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 41, src, dst); 754e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 42, src, dst); 755e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 43, src, dst); 756e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 44, src, dst); 757e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 45, src, dst); 758e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 46, src, dst); 759e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 47, src, dst); 760e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 48, src, dst); 761e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 49, src, dst); 762e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 50, src, dst); 763e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 51, src, dst); 764e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 52, src, dst); 765e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 53, src, dst); 766e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 54, src, dst); 767e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 55, src, dst); 768e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 56, src, dst); 769e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 57, src, dst); 770e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 58, src, dst); 771e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 59, src, dst); 772e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 60, src, dst); 773e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 61, src, dst); 774e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 62, src, dst); 775e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 63, src, dst); 776e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 64, src, dst); 777e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 65, src, dst); 778e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 66, src, dst); 779e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 67, src, dst); 780e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 68, src, dst); 781e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 69, src, dst); 782e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 70, src, dst); 783e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 71, src, dst); 784e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 72, src, dst); 785e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 73, src, dst); 786e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 74, src, dst); 787e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 75, src, dst); 788e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 76, src, dst); 789e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 77, src, dst); 790e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 78, src, dst); 791e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 79, src, dst); 792e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 80, src, dst); 793e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 81, src, dst); 794e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 82, src, dst); 795e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 83, src, dst); 796e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 84, src, dst); 797e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 85, src, dst); 798e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 86, src, dst); 799e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 87, src, dst); 800e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 88, src, dst); 801e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 89, src, dst); 802e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 90, src, dst); 803e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 91, src, dst); 804e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 92, src, dst); 805e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 93, src, dst); 806e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 94, src, dst); 807e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 95, src, dst); 808e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 96, src, dst); 809e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 97, src, dst); 810e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 98, src, dst); 811e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 99, src, dst); 812e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 100, src, dst); 813e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 101, src, dst); 814e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 102, src, dst); 815e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 103, src, dst); 816e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 104, src, dst); 817e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 105, src, dst); 818e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 106, src, dst); 819e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 107, src, dst); 820e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 108, src, dst); 821e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 109, src, dst); 822e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 110, src, dst); 823e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 111, src, dst); 824e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 112, src, dst); 825e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 113, src, dst); 826e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 114, src, dst); 827e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 115, src, dst); 828e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 116, src, dst); 829e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 117, src, dst); 830e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 118, src, dst); 831e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 119, src, dst); 832e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 120, src, dst); 833e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 121, src, dst); 834e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 122, src, dst); 835e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 123, src, dst); 836e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 124, src, dst); 837e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 125, src, dst); 838e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 126, src, dst); 839e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 127, src, dst); 840e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 128, src, dst); 841e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 129, src, dst); 842e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 130, src, dst); 843e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 131, src, dst); 844e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 132, src, dst); 845e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 133, src, dst); 846e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 134, src, dst); 847e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 135, src, dst); 848e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 136, src, dst); 849e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 137, src, dst); 850e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 138, src, dst); 851e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 139, src, dst); 852e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 140, src, dst); 853e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 141, src, dst); 854e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 142, src, dst); 855e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 143, src, dst); 856e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 144, src, dst); 857e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 145, src, dst); 858e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 146, src, dst); 859e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 147, src, dst); 860e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 148, src, dst); 861e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 149, src, dst); 862e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 150, src, dst); 863e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 151, src, dst); 864e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 152, src, dst); 865e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 153, src, dst); 866e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 154, src, dst); 867e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 155, src, dst); 868e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 156, src, dst); 869e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 157, src, dst); 870e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 158, src, dst); 871e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 159, src, dst); 872e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 160, src, dst); 873e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 161, src, dst); 874e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 162, src, dst); 875e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 163, src, dst); 876e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 164, src, dst); 877e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 165, src, dst); 878e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 166, src, dst); 879e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 167, src, dst); 880e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 168, src, dst); 881e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 169, src, dst); 882e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 170, src, dst); 883e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 171, src, dst); 884e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 172, src, dst); 885e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 173, src, dst); 886e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 174, src, dst); 887e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 175, src, dst); 888e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 176, src, dst); 889e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 177, src, dst); 890e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 178, src, dst); 891e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 179, src, dst); 892e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 180, src, dst); 893e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 181, src, dst); 894e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 182, src, dst); 895e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 183, src, dst); 896e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 184, src, dst); 897e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 185, src, dst); 898e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 186, src, dst); 899e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 187, src, dst); 900e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 188, src, dst); 901e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 189, src, dst); 902e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 190, src, dst); 903e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 191, src, dst); 904e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 192, src, dst); 905e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 193, src, dst); 906e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 194, src, dst); 907e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 195, src, dst); 908e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 196, src, dst); 909e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 197, src, dst); 910e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 198, src, dst); 911e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 199, src, dst); 912e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 200, src, dst); 913e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 201, src, dst); 914e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 202, src, dst); 915e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 203, src, dst); 916e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 204, src, dst); 917e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 205, src, dst); 918e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 206, src, dst); 919e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 207, src, dst); 920e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 208, src, dst); 921e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 209, src, dst); 922e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 210, src, dst); 923e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 211, src, dst); 924e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 212, src, dst); 925e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 213, src, dst); 926e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 214, src, dst); 927e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 215, src, dst); 928e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 216, src, dst); 929e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 217, src, dst); 930e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 218, src, dst); 931e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 219, src, dst); 932e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 220, src, dst); 933e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 221, src, dst); 934e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 222, src, dst); 935e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 223, src, dst); 936e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 224, src, dst); 937e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 225, src, dst); 938e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 226, src, dst); 939e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 227, src, dst); 940e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 228, src, dst); 941e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 229, src, dst); 942e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 230, src, dst); 943e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 231, src, dst); 944e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 232, src, dst); 945e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 233, src, dst); 946e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 234, src, dst); 947e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 235, src, dst); 948e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 236, src, dst); 949e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 237, src, dst); 950e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 238, src, dst); 951e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 239, src, dst); 952e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 240, src, dst); 953e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 241, src, dst); 954e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 242, src, dst); 955e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 243, src, dst); 956e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 244, src, dst); 957e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 245, src, dst); 958e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 246, src, dst); 959e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 247, src, dst); 960e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 248, src, dst); 961e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 249, src, dst); 962e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 250, src, dst); 963e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 251, src, dst); 964e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 252, src, dst); 965e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 253, src, dst); 966e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 254, src, dst); 967e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("dpps", 255, src, dst); 968e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 969e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 970e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 971e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_INSERTPS ( void ) 972e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 973e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 974e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { 975e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[0]) = 1.2; 976e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[4]) = -3.4; 977e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[8]) = -6.7; 978e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&src[12]) = 8.9; 979e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[0]) = -10.11; 980e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[4]) = 12.13; 981e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[8]) = 14.15; 982e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj *(float*)(&dst[12]) = -16.17; 983e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 0, src, dst); 984e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 1, src, dst); 985e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 2, src, dst); 986e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 3, src, dst); 987e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 4, src, dst); 988e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 5, src, dst); 989e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 6, src, dst); 990e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 7, src, dst); 991e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 8, src, dst); 992e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 9, src, dst); 993e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 10, src, dst); 994e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 11, src, dst); 995e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 12, src, dst); 996e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 13, src, dst); 997e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 14, src, dst); 998e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 15, src, dst); 999e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 16, src, dst); 1000e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 17, src, dst); 1001e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 18, src, dst); 1002e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 19, src, dst); 1003e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 20, src, dst); 1004e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 21, src, dst); 1005e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 22, src, dst); 1006e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 23, src, dst); 1007e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 24, src, dst); 1008e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 25, src, dst); 1009e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 26, src, dst); 1010e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 27, src, dst); 1011e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 28, src, dst); 1012e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 29, src, dst); 1013e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 30, src, dst); 1014e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 31, src, dst); 1015e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 32, src, dst); 1016e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 33, src, dst); 1017e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 34, src, dst); 1018e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 35, src, dst); 1019e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 36, src, dst); 1020e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 37, src, dst); 1021e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 38, src, dst); 1022e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 39, src, dst); 1023e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 40, src, dst); 1024e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 41, src, dst); 1025e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 42, src, dst); 1026e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 43, src, dst); 1027e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 44, src, dst); 1028e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 45, src, dst); 1029e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 46, src, dst); 1030e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 47, src, dst); 1031e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 48, src, dst); 1032e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 49, src, dst); 1033e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 50, src, dst); 1034e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 51, src, dst); 1035e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 52, src, dst); 1036e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 53, src, dst); 1037e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 54, src, dst); 1038e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 55, src, dst); 1039e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 56, src, dst); 1040e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 57, src, dst); 1041e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 58, src, dst); 1042e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 59, src, dst); 1043e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 60, src, dst); 1044e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 61, src, dst); 1045e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 62, src, dst); 1046e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 63, src, dst); 1047e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 64, src, dst); 1048e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 65, src, dst); 1049e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 66, src, dst); 1050e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 67, src, dst); 1051e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 68, src, dst); 1052e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 69, src, dst); 1053e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 70, src, dst); 1054e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 71, src, dst); 1055e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 72, src, dst); 1056e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 73, src, dst); 1057e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 74, src, dst); 1058e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 75, src, dst); 1059e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 76, src, dst); 1060e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 77, src, dst); 1061e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 78, src, dst); 1062e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 79, src, dst); 1063e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 80, src, dst); 1064e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 81, src, dst); 1065e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 82, src, dst); 1066e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 83, src, dst); 1067e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 84, src, dst); 1068e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 85, src, dst); 1069e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 86, src, dst); 1070e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 87, src, dst); 1071e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 88, src, dst); 1072e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 89, src, dst); 1073e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 90, src, dst); 1074e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 91, src, dst); 1075e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 92, src, dst); 1076e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 93, src, dst); 1077e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 94, src, dst); 1078e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 95, src, dst); 1079e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 96, src, dst); 1080e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 97, src, dst); 1081e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 98, src, dst); 1082e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 99, src, dst); 1083e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 100, src, dst); 1084e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 101, src, dst); 1085e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 102, src, dst); 1086e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 103, src, dst); 1087e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 104, src, dst); 1088e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 105, src, dst); 1089e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 106, src, dst); 1090e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 107, src, dst); 1091e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 108, src, dst); 1092e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 109, src, dst); 1093e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 110, src, dst); 1094e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 111, src, dst); 1095e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 112, src, dst); 1096e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 113, src, dst); 1097e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 114, src, dst); 1098e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 115, src, dst); 1099e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 116, src, dst); 1100e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 117, src, dst); 1101e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 118, src, dst); 1102e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 119, src, dst); 1103e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 120, src, dst); 1104e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 121, src, dst); 1105e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 122, src, dst); 1106e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 123, src, dst); 1107e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 124, src, dst); 1108e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 125, src, dst); 1109e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 126, src, dst); 1110e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 127, src, dst); 1111e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 128, src, dst); 1112e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 129, src, dst); 1113e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 130, src, dst); 1114e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 131, src, dst); 1115e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 132, src, dst); 1116e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 133, src, dst); 1117e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 134, src, dst); 1118e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 135, src, dst); 1119e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 136, src, dst); 1120e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 137, src, dst); 1121e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 138, src, dst); 1122e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 139, src, dst); 1123e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 140, src, dst); 1124e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 141, src, dst); 1125e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 142, src, dst); 1126e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 143, src, dst); 1127e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 144, src, dst); 1128e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 145, src, dst); 1129e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 146, src, dst); 1130e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 147, src, dst); 1131e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 148, src, dst); 1132e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 149, src, dst); 1133e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 150, src, dst); 1134e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 151, src, dst); 1135e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 152, src, dst); 1136e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 153, src, dst); 1137e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 154, src, dst); 1138e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 155, src, dst); 1139e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 156, src, dst); 1140e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 157, src, dst); 1141e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 158, src, dst); 1142e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 159, src, dst); 1143e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 160, src, dst); 1144e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 161, src, dst); 1145e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 162, src, dst); 1146e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 163, src, dst); 1147e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 164, src, dst); 1148e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 165, src, dst); 1149e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 166, src, dst); 1150e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 167, src, dst); 1151e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 168, src, dst); 1152e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 169, src, dst); 1153e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 170, src, dst); 1154e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 171, src, dst); 1155e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 172, src, dst); 1156e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 173, src, dst); 1157e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 174, src, dst); 1158e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 175, src, dst); 1159e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 176, src, dst); 1160e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 177, src, dst); 1161e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 178, src, dst); 1162e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 179, src, dst); 1163e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 180, src, dst); 1164e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 181, src, dst); 1165e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 182, src, dst); 1166e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 183, src, dst); 1167e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 184, src, dst); 1168e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 185, src, dst); 1169e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 186, src, dst); 1170e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 187, src, dst); 1171e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 188, src, dst); 1172e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 189, src, dst); 1173e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 190, src, dst); 1174e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 191, src, dst); 1175e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 192, src, dst); 1176e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 193, src, dst); 1177e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 194, src, dst); 1178e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 195, src, dst); 1179e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 196, src, dst); 1180e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 197, src, dst); 1181e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 198, src, dst); 1182e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 199, src, dst); 1183e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 200, src, dst); 1184e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 201, src, dst); 1185e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 202, src, dst); 1186e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 203, src, dst); 1187e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 204, src, dst); 1188e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 205, src, dst); 1189e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 206, src, dst); 1190e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 207, src, dst); 1191e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 208, src, dst); 1192e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 209, src, dst); 1193e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 210, src, dst); 1194e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 211, src, dst); 1195e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 212, src, dst); 1196e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 213, src, dst); 1197e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 214, src, dst); 1198e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 215, src, dst); 1199e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 216, src, dst); 1200e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 217, src, dst); 1201e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 218, src, dst); 1202e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 219, src, dst); 1203e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 220, src, dst); 1204e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 221, src, dst); 1205e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 222, src, dst); 1206e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 223, src, dst); 1207e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 224, src, dst); 1208e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 225, src, dst); 1209e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 226, src, dst); 1210e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 227, src, dst); 1211e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 228, src, dst); 1212e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 229, src, dst); 1213e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 230, src, dst); 1214e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 231, src, dst); 1215e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 232, src, dst); 1216e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 233, src, dst); 1217e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 234, src, dst); 1218e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 235, src, dst); 1219e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 236, src, dst); 1220e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 237, src, dst); 1221e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 238, src, dst); 1222e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 239, src, dst); 1223e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 240, src, dst); 1224e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 241, src, dst); 1225e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 242, src, dst); 1226e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 243, src, dst); 1227e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 244, src, dst); 1228e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 245, src, dst); 1229e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 246, src, dst); 1230e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 247, src, dst); 1231e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 248, src, dst); 1232e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 249, src, dst); 1233e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 250, src, dst); 1234e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 251, src, dst); 1235e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 252, src, dst); 1236e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 253, src, dst); 1237e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 254, src, dst); 1238e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("insertps", 255, src, dst); 1239e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1240e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1241e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1242e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_MPSADBW ( void ) 1243e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1244e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1245e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1246b34cb7f0fdefec97f5d3618841b140e7bd681820sewardj for (i = 0; i < 50; i++) { 1247e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1248e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1249e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 0, src, dst); 1250e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 1, src, dst); 1251e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 2, src, dst); 1252e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 3, src, dst); 1253e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 4, src, dst); 1254e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 5, src, dst); 1255e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 6, src, dst); 1256e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("mpsadbw", 7, src, dst); 1257e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1258e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1259e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1260e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PACKUSDW ( void ) 1261e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1262e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1263e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1264e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1265e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj if (i < 9) { 1266e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1267e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1268e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } else { 1269e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memset(&src, 0, sizeof(src)); 1270e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memset(&dst, 0, sizeof(src)); 1271e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src[0] = 0x11; src[1] = 0x22; 1272e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src[4] = 0x33; src[5] = 0x44; 1273e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src[8] = 0x55; src[9] = 0x66; 1274e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src[12] = 0x77; src[13] = 0x88; 1275e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj dst[0] = 0xaa; dst[1] = 0xbb; 1276e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj dst[4] = 0xcc; dst[5] = 0xdd; 1277e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj dst[8] = 0xee; dst[9] = 0xff; 1278e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj dst[12] = 0xa1; dst[13] = 0xb2; 1279e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1280e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("packusdw", src, dst); 1281e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1282e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1283e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1284e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PBLENDW ( void ) 1285e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1286e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1287e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1288e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1289e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj { 1290e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 0, src, dst); 1291e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 1, src, dst); 1292e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 2, src, dst); 1293e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 3, src, dst); 1294e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 4, src, dst); 1295e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 5, src, dst); 1296e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 6, src, dst); 1297e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 7, src, dst); 1298e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 8, src, dst); 1299e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 9, src, dst); 1300e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 10, src, dst); 1301e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 11, src, dst); 1302e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 12, src, dst); 1303e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 13, src, dst); 1304e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 14, src, dst); 1305e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 15, src, dst); 1306e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 16, src, dst); 1307e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 17, src, dst); 1308e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 18, src, dst); 1309e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 19, src, dst); 1310e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 20, src, dst); 1311e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 21, src, dst); 1312e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 22, src, dst); 1313e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 23, src, dst); 1314e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 24, src, dst); 1315e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 25, src, dst); 1316e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 26, src, dst); 1317e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 27, src, dst); 1318e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 28, src, dst); 1319e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 29, src, dst); 1320e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 30, src, dst); 1321e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 31, src, dst); 1322e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 32, src, dst); 1323e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 33, src, dst); 1324e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 34, src, dst); 1325e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 35, src, dst); 1326e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 36, src, dst); 1327e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 37, src, dst); 1328e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 38, src, dst); 1329e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 39, src, dst); 1330e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 40, src, dst); 1331e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 41, src, dst); 1332e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 42, src, dst); 1333e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 43, src, dst); 1334e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 44, src, dst); 1335e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 45, src, dst); 1336e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 46, src, dst); 1337e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 47, src, dst); 1338e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 48, src, dst); 1339e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 49, src, dst); 1340e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 50, src, dst); 1341e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 51, src, dst); 1342e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 52, src, dst); 1343e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 53, src, dst); 1344e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 54, src, dst); 1345e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 55, src, dst); 1346e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 56, src, dst); 1347e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 57, src, dst); 1348e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 58, src, dst); 1349e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 59, src, dst); 1350e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 60, src, dst); 1351e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 61, src, dst); 1352e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 62, src, dst); 1353e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 63, src, dst); 1354e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 64, src, dst); 1355e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 65, src, dst); 1356e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 66, src, dst); 1357e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 67, src, dst); 1358e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 68, src, dst); 1359e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 69, src, dst); 1360e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 70, src, dst); 1361e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 71, src, dst); 1362e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 72, src, dst); 1363e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 73, src, dst); 1364e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 74, src, dst); 1365e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 75, src, dst); 1366e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 76, src, dst); 1367e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 77, src, dst); 1368e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 78, src, dst); 1369e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 79, src, dst); 1370e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 80, src, dst); 1371e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 81, src, dst); 1372e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 82, src, dst); 1373e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 83, src, dst); 1374e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 84, src, dst); 1375e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 85, src, dst); 1376e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 86, src, dst); 1377e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 87, src, dst); 1378e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 88, src, dst); 1379e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 89, src, dst); 1380e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 90, src, dst); 1381e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 91, src, dst); 1382e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 92, src, dst); 1383e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 93, src, dst); 1384e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 94, src, dst); 1385e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 95, src, dst); 1386e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 96, src, dst); 1387e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 97, src, dst); 1388e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 98, src, dst); 1389e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 99, src, dst); 1390e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 100, src, dst); 1391e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 101, src, dst); 1392e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 102, src, dst); 1393e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 103, src, dst); 1394e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 104, src, dst); 1395e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 105, src, dst); 1396e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 106, src, dst); 1397e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 107, src, dst); 1398e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 108, src, dst); 1399e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 109, src, dst); 1400e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 110, src, dst); 1401e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 111, src, dst); 1402e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 112, src, dst); 1403e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 113, src, dst); 1404e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 114, src, dst); 1405e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 115, src, dst); 1406e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 116, src, dst); 1407e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 117, src, dst); 1408e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 118, src, dst); 1409e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 119, src, dst); 1410e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 120, src, dst); 1411e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 121, src, dst); 1412e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 122, src, dst); 1413e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 123, src, dst); 1414e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 124, src, dst); 1415e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 125, src, dst); 1416e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 126, src, dst); 1417e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 127, src, dst); 1418e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 128, src, dst); 1419e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 129, src, dst); 1420e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 130, src, dst); 1421e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 131, src, dst); 1422e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 132, src, dst); 1423e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 133, src, dst); 1424e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 134, src, dst); 1425e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 135, src, dst); 1426e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 136, src, dst); 1427e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 137, src, dst); 1428e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 138, src, dst); 1429e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 139, src, dst); 1430e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 140, src, dst); 1431e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 141, src, dst); 1432e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 142, src, dst); 1433e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 143, src, dst); 1434e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 144, src, dst); 1435e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 145, src, dst); 1436e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 146, src, dst); 1437e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 147, src, dst); 1438e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 148, src, dst); 1439e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 149, src, dst); 1440e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 150, src, dst); 1441e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 151, src, dst); 1442e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 152, src, dst); 1443e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 153, src, dst); 1444e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 154, src, dst); 1445e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 155, src, dst); 1446e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 156, src, dst); 1447e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 157, src, dst); 1448e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 158, src, dst); 1449e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 159, src, dst); 1450e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 160, src, dst); 1451e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 161, src, dst); 1452e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 162, src, dst); 1453e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 163, src, dst); 1454e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 164, src, dst); 1455e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 165, src, dst); 1456e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 166, src, dst); 1457e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 167, src, dst); 1458e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 168, src, dst); 1459e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 169, src, dst); 1460e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 170, src, dst); 1461e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 171, src, dst); 1462e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 172, src, dst); 1463e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 173, src, dst); 1464e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 174, src, dst); 1465e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 175, src, dst); 1466e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 176, src, dst); 1467e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 177, src, dst); 1468e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 178, src, dst); 1469e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 179, src, dst); 1470e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 180, src, dst); 1471e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 181, src, dst); 1472e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 182, src, dst); 1473e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 183, src, dst); 1474e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 184, src, dst); 1475e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 185, src, dst); 1476e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 186, src, dst); 1477e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 187, src, dst); 1478e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 188, src, dst); 1479e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 189, src, dst); 1480e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 190, src, dst); 1481e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 191, src, dst); 1482e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 192, src, dst); 1483e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 193, src, dst); 1484e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 194, src, dst); 1485e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 195, src, dst); 1486e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 196, src, dst); 1487e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 197, src, dst); 1488e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 198, src, dst); 1489e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 199, src, dst); 1490e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 200, src, dst); 1491e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 201, src, dst); 1492e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 202, src, dst); 1493e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 203, src, dst); 1494e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 204, src, dst); 1495e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 205, src, dst); 1496e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 206, src, dst); 1497e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 207, src, dst); 1498e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 208, src, dst); 1499e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 209, src, dst); 1500e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 210, src, dst); 1501e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 211, src, dst); 1502e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 212, src, dst); 1503e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 213, src, dst); 1504e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 214, src, dst); 1505e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 215, src, dst); 1506e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 216, src, dst); 1507e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 217, src, dst); 1508e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 218, src, dst); 1509e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 219, src, dst); 1510e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 220, src, dst); 1511e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 221, src, dst); 1512e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 222, src, dst); 1513e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 223, src, dst); 1514e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 224, src, dst); 1515e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 225, src, dst); 1516e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 226, src, dst); 1517e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 227, src, dst); 1518e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 228, src, dst); 1519e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 229, src, dst); 1520e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 230, src, dst); 1521e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 231, src, dst); 1522e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 232, src, dst); 1523e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 233, src, dst); 1524e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 234, src, dst); 1525e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 235, src, dst); 1526e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 236, src, dst); 1527e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 237, src, dst); 1528e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 238, src, dst); 1529e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 239, src, dst); 1530e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 240, src, dst); 1531e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 241, src, dst); 1532e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 242, src, dst); 1533e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 243, src, dst); 1534e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 244, src, dst); 1535e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 245, src, dst); 1536e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 246, src, dst); 1537e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 247, src, dst); 1538e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 248, src, dst); 1539e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 249, src, dst); 1540e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 250, src, dst); 1541e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 251, src, dst); 1542e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 252, src, dst); 1543e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 253, src, dst); 1544e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 254, src, dst); 1545e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandr_r("pblendw", 255, src, dst); 1546e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1547e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1548e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1549e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1550e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PCMPEQQ ( void ) 1551e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1552e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1553e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1554e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1555e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1556e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1557e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj switch (i - 6) { 1558e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj case 0: memset(&src[0], 0x55, 8); 1559e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memset(&dst[0], 0x55, 8); break; 1560e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj case 1: memset(&src[8], 0x55, 8); 1561e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj memset(&dst[8], 0x55, 8); break; 1562e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj default: 1563e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj break; 1564e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1565e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pcmpeqq", src, dst); 1566e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1567e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1568e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1569e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1570e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PEXTRB ( void ) 1571e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1572e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src; 1573e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1574e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 0, src, "d"); 1575e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 1, src, "d"); 1576e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 2, src, "d"); 1577e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 3, src, "d"); 1578e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 4, src, "d"); 1579e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 5, src, "d"); 1580e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 6, src, "d"); 1581e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 7, src, "d"); 1582e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 8, src, "d"); 1583e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 9, src, "d"); 1584e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 10, src, "d"); 1585e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 11, src, "d"); 1586e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 12, src, "d"); 1587e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 13, src, "d"); 1588e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 14, src, "d"); 1589e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrb", 15, src, "d"); 1590e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1591e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1592e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PINSRB ( void ) 1593e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1594e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src; 1595e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1596e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 0, src, "d"); 1597e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1598e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 1, src, "d"); 1599e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1600e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 2, src, "d"); 1601e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1602e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 3, src, "d"); 1603e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1604e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 4, src, "d"); 1605e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1606e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 5, src, "d"); 1607e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1608e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 6, src, "d"); 1609e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1610e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 7, src, "d"); 1611e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1612e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 8, src, "d"); 1613e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1614e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 9, src, "d"); 1615e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1616e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 10, src, "d"); 1617e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1618e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 11, src, "d"); 1619e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1620e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 12, src, "d"); 1621e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1622e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 13, src, "d"); 1623e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1624e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 14, src, "d"); 1625e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1626e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrb", 15, src, "d"); 1627e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1628e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1629e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1630e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PEXTRW ( void ) 1631e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1632e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src; 1633e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1634e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 0, src, "d"); 1635e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 1, src, "d"); 1636e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 2, src, "d"); 1637e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 3, src, "d"); 1638e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 4, src, "d"); 1639e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 5, src, "d"); 1640e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 6, src, "d"); 1641e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrw", 7, src, "d"); 1642e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1643e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1644e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PINSRW ( void ) 1645e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1646e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src; 1647e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1648e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 0, src, "d"); 1649e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1650e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 1, src, "d"); 1651e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1652e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 2, src, "d"); 1653e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1654e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 3, src, "d"); 1655e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1656e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 4, src, "d"); 1657e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1658e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 5, src, "d"); 1659e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1660e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 6, src, "d"); 1661e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1662e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrw", 7, src, "d"); 1663e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1664e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1665e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1666e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PEXTRD ( void ) 1667e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1668e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src; 1669e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1670e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrd", 0, src, "d"); 1671e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrd", 1, src, "d"); 1672e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrd", 2, src, "d"); 1673e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrd", 3, src, "d"); 1674e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1675e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1676e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PINSRD ( void ) 1677e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1678e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src; 1679e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1680e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrd", 0, src, "d"); 1681e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1682e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrd", 1, src, "d"); 1683e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1684e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrd", 2, src, "d"); 1685e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1686e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrd", 3, src, "d"); 1687e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1688e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1689e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1690e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PEXTRQ ( void ) 1691e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1692e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src; 1693e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1694e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrq", 0, src, ""); 1695e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_r_to_mandrscalar("pextrq", 1, src, ""); 1696e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1697e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1698e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PINSRQ ( void ) 1699e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1700e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong src; 1701e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1702e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrq", 0, src, ""); 1703e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj src = randULong(); 1704e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_imm_mandrscalar_to_r("pinsrq", 1, src, ""); 1705e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1706e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1707e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1708f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid test_EXTRACTPS ( void ) 1709f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 1710f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj V128 src; 1711f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&src); 1712f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj DO_imm_r_to_mandrscalar("extractps", 0, src, "d"); 1713f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj DO_imm_r_to_mandrscalar("extractps", 1, src, "d"); 1714f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj DO_imm_r_to_mandrscalar("extractps", 2, src, "d"); 1715f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj DO_imm_r_to_mandrscalar("extractps", 3, src, "d"); 1716f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 1717f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 1718f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 1719e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PHMINPOSUW ( void ) 1720e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1721e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1722e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1723a63005c6d9b95e37301376702dbcbb20bfee3782sewardj for (i = 0; i < 20; i++) { 1724e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1725e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1726e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("phminposuw", src, dst); 1727e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1728a63005c6d9b95e37301376702dbcbb20bfee3782sewardj memset(src, 0x55, sizeof(src)); 1729a63005c6d9b95e37301376702dbcbb20bfee3782sewardj memset(dst, 0xAA, sizeof(dst)); 1730a63005c6d9b95e37301376702dbcbb20bfee3782sewardj DO_mandr_r("phminposuw", src, dst); 1731e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1732e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1733e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMAXSB ( void ) 1734e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1735e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1736e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1737e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1738e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1739e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1740e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmaxsb", src, dst); 1741e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1742e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1743e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1744e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMAXSD ( void ) 1745e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1746e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1747e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1748e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1749e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1750e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1751e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmaxsd", src, dst); 1752e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1753e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1754e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1755e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMAXUD ( void ) 1756e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1757e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1758e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1759e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1760e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1761e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1762e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmaxud", src, dst); 1763e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1764e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1765e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1766e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMAXUW ( void ) 1767e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1768e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1769e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1770e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1771e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1772e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1773e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmaxuw", src, dst); 1774e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1775e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1776e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1777e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMINSB ( void ) 1778e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1779e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1780e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1781e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1782e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1783e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1784e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pminsb", src, dst); 1785e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1786e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1787e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1788e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMINSD ( void ) 1789e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1790e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1791e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1792e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1793e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1794e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1795e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pminsd", src, dst); 1796e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1797e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1798e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1799e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMINUD ( void ) 1800e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1801e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1802e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1803e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1804e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1805e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1806e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pminud", src, dst); 1807e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1808e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1809e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1810e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMINUW ( void ) 1811e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1812e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1813e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1814e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1815e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1816e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1817e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pminuw", src, dst); 1818e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1819e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1820e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1821e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXBW ( void ) 1822e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1823e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1824e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1825e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1826e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1827e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1828e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxbw", src, dst); 1829e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1830e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1831e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1832e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXBD ( void ) 1833e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1834e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1835e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1836e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1837e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1838e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1839e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxbd", src, dst); 1840e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1841e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1842e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1843e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXBQ ( void ) 1844e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1845e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1846e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1847e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1848e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1849e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1850e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxbq", src, dst); 1851e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1852e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1853e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1854e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXWD ( void ) 1855e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1856e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1857e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1858e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1859e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1860e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1861e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxwd", src, dst); 1862e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1863e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1864e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1865e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXWQ ( void ) 1866e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1867e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1868e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1869e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1870e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1871e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1872e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxwq", src, dst); 1873e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1874e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1875e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1876e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVSXDQ ( void ) 1877e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1878e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1879e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1880e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1881e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1882e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1883e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovsxdq", src, dst); 1884e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1885e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1886e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1887e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXBW ( void ) 1888e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1889e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1890e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1891e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1892e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1893e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1894e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxbw", src, dst); 1895e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1896e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1897e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1898e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXBD ( void ) 1899e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1900e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1901e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1902e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1903e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1904e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1905e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxbd", src, dst); 1906e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1907e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1908e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1909e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXBQ ( void ) 1910e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1911e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1912e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1913e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1914e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1915e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1916e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxbq", src, dst); 1917e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1918e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1919e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1920e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXWD ( void ) 1921e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1922e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1923e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1924e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1925e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1926e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1927e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxwd", src, dst); 1928e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1929e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1930e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1931e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXWQ ( void ) 1932e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1933e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1934e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1935e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1936e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1937e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1938e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxwq", src, dst); 1939e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1940e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1941e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1942e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMOVZXDQ ( void ) 1943e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1944e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1945e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1946e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1947e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1948e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1949e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmovzxdq", src, dst); 1950e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1951e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1952e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1953e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMULDQ ( void ) 1954e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1955e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1956e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1957e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1958e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1959e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1960e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmuldq", src, dst); 1961e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1962e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1963e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1964e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1965e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_PMULLD ( void ) 1966e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1967e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj V128 src, dst; 1968e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1969e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1970e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&src); 1971e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj randV128(&dst); 1972e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj DO_mandr_r("pmulld", src, dst); 1973e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 1974e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 1975e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1976e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 1977e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_POPCNTQ ( void ) 1978e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 1979e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong block[4]; 1980e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 1981e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong oszacp_mask = 0x8D5; 1982e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 1983e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 1984e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 1985e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 1986e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 1987e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 1988e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 1989e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 0(%%rax), %%rdi" "\n\t" 1990e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 19911005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 1992e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntq %%rdi, %%r11" "\n\t" 19931005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 19941005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt %%rdi, %%r11" "\n\t" 19951005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 1996e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 1997e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 1998e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 1999e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2000e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2001e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2002e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2003e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2004e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("r popcntq %016llx %016llx %016llx %016llx\n", 2005e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2006e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2007e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 2008e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 2009e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 2010e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 2011e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 2012e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 2013e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 20141005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 2015e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntq 0(%%rax), %%r11" "\n\t" 20161005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 20171005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt 0(%%rax), %%r11" "\n\t" 20181005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 2019e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 2020e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 2021e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 2022e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2023e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2024e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2025e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "r11", "r12" 2026e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2027e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("m popcntq %016llx %016llx %016llx %016llx\n", 2028e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2029e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 2030e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 2031e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2032e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2033e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_POPCNTL ( void ) 2034e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 2035e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong block[4]; 2036e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 2037e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong oszacp_mask = 0x8D5; 2038e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 2039e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 2040e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 2041e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 2042e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 2043e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 2044e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 2045e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 0(%%rax), %%rdi" "\n\t" 2046e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 20471005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 2048e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntl %%edi, %%r11d" "\n\t" 20491005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 20501005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt %%edi, %%r11d" "\n\t" 20511005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 2052e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 2053e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 2054e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 2055e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2056e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2057e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2058e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2059e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2060e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("r popcntl %016llx %016llx %016llx %016llx\n", 2061e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2062e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2063e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 2064e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 2065e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 2066e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 2067e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 2068e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 2069e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 20701005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 2071e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntl 0(%%rax), %%r11d" "\n\t" 20721005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 20731005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt 0(%%rax), %%r11d" "\n\t" 20741005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 2075e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 2076e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 2077e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 2078e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2079e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2080e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2081e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "r11", "r12" 2082e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2083e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("m popcntl %016llx %016llx %016llx %016llx\n", 2084e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2085e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 2086e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 2087e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2088e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2089e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjvoid test_POPCNTW ( void ) 2090e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 2091e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong block[4]; 2092e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj Int i; 2093e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ULong oszacp_mask = 0x8D5; 2094e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj for (i = 0; i < 10; i++) { 2095e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 2096e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 2097e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 2098e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 2099e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 2100e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 2101e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 0(%%rax), %%rdi" "\n\t" 2102e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 21031005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 2104e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntw %%di, %%r11w" "\n\t" 21051005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 21061005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt %%di, %%r11w" "\n\t" 21071005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 2108e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 2109e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 2110e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 2111e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2112e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2113e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2114e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "rdi", "r11", "r12" 2115e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2116e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("r popcntw %016llx %016llx %016llx %016llx\n", 2117e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2118e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2119e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0] = i == 0 ? 0 : randULong(); 2120e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[1] = randULong(); 2121e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[2] = randULong(); 2122e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[3] = randULong(); 2123e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj __asm__ __volatile__( 2124e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %0, %%rax" "\n\t" 2125e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq 8(%%rax), %%r11" "\n\t" 21261005ef5ea5158da9b9f2fd252ba603243c5e5302bart#ifndef VGP_amd64_darwin 2127e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popcntw 0(%%rax), %%r11w" "\n\t" 21281005ef5ea5158da9b9f2fd252ba603243c5e5302bart#else 21291005ef5ea5158da9b9f2fd252ba603243c5e5302bart "popcnt 0(%%rax), %%r11w" "\n\t" 21301005ef5ea5158da9b9f2fd252ba603243c5e5302bart#endif 2131e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r11, 16(%%rax)" "\n\t" 2132e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "pushfq" "\n\t" 2133e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "popq %%r12" "\n\t" 2134e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj "movq %%r12, 24(%%rax)" "\n" 2135e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*out*/ 2136e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*in*/"r"(&block[0]) 2137e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj : /*trash*/ "cc", "memory", "r11", "r12" 2138e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj ); 2139e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj printf("m popcntw %016llx %016llx %016llx %016llx\n", 2140e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj block[0], block[1], block[2], block[3] & oszacp_mask); 2141e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj } 2142e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 2143e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2144e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2145b823b8531aedef4c8abff2544ea12aa0795e914dsewardjvoid test_PCMPGTQ ( void ) 2146b823b8531aedef4c8abff2544ea12aa0795e914dsewardj{ 2147b823b8531aedef4c8abff2544ea12aa0795e914dsewardj V128 spec[7]; 2148b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0xffffffffffffffffULL ); 2149b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[1], 0x0000000000000001ULL, 0xfffffffffffffffeULL ); 2150b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[2], 0x7fffffffffffffffULL, 0x8000000000000001ULL ); 2151b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[3], 0x8000000000000000ULL, 0x8000000000000000ULL ); 2152b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[4], 0x8000000000000001ULL, 0x7fffffffffffffffULL ); 2153b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[5], 0xfffffffffffffffeULL, 0x0000000000000001ULL ); 2154b823b8531aedef4c8abff2544ea12aa0795e914dsewardj do64HLtoV128( &spec[6], 0xffffffffffffffffULL, 0x0000000000000000ULL ); 2155b823b8531aedef4c8abff2544ea12aa0795e914dsewardj 2156b823b8531aedef4c8abff2544ea12aa0795e914dsewardj V128 src, dst; 2157b823b8531aedef4c8abff2544ea12aa0795e914dsewardj Int i, j; 2158b823b8531aedef4c8abff2544ea12aa0795e914dsewardj for (i = 0; i < 10; i++) { 2159b823b8531aedef4c8abff2544ea12aa0795e914dsewardj randV128(&src); 2160b823b8531aedef4c8abff2544ea12aa0795e914dsewardj randV128(&dst); 2161b823b8531aedef4c8abff2544ea12aa0795e914dsewardj DO_mandr_r("pcmpgtq", src, dst); 2162b823b8531aedef4c8abff2544ea12aa0795e914dsewardj } 2163b823b8531aedef4c8abff2544ea12aa0795e914dsewardj for (i = 0; i < 7; i++) { 2164b823b8531aedef4c8abff2544ea12aa0795e914dsewardj for (j = 0; j < 7; j++) { 2165b823b8531aedef4c8abff2544ea12aa0795e914dsewardj memcpy(&src, &spec[i], 16); 2166b823b8531aedef4c8abff2544ea12aa0795e914dsewardj memcpy(&dst, &spec[j], 16); 2167b823b8531aedef4c8abff2544ea12aa0795e914dsewardj DO_mandr_r("pcmpgtq", src, dst); 2168b823b8531aedef4c8abff2544ea12aa0795e914dsewardj } 2169b823b8531aedef4c8abff2544ea12aa0795e914dsewardj } 2170b823b8531aedef4c8abff2544ea12aa0795e914dsewardj} 2171b823b8531aedef4c8abff2544ea12aa0795e914dsewardj 2172c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj/* ------------ ROUNDSD ------------ */ 2173c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2174c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSD_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2175c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2176c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2177c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2178c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2179c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $0, (%0), %%xmm11" "\n\t" 2180c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2181c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2182c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2183c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2184c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2185c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2186c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2187c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2188c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2189c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $0, %%xmm2, %%xmm11" "\n\t" 2190c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2191c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2192c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2193c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2194c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2195c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2196c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2197c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2198c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSD_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2199c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2200c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2201c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2202c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2203c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $1, (%0), %%xmm11" "\n\t" 2204c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2205c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2206c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2207c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2208c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2209c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2210c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2211c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2212c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2213c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $1, %%xmm2, %%xmm11" "\n\t" 2214c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2215c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2216c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2217c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2218c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2219c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2220c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2221c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2222c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSD_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2223c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2224c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2225c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2226c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2227c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $2, (%0), %%xmm11" "\n\t" 2228c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2229c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2230c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2231c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2232c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2233c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2234c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2235c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2236c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2237c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $2, %%xmm2, %%xmm11" "\n\t" 2238c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2239c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2240c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2241c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2242c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2243c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2244c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2245e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 2246c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2247c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2248c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2249c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2250c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2251c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $3, (%0), %%xmm11" "\n\t" 2252c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2253c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2254c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2255c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2256c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2257c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2258c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2259c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2260c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2261c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundsd $3, %%xmm2, %%xmm11" "\n\t" 2262c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2263c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2264c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2265c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2266c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2267c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2268c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2269c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 22704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid do_ROUNDSD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 22714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 22724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (mem) { 22734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 22744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 22754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundsd $4, (%0), %%xmm11" "\n\t" 22764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 22774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 22784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 22794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11" 22804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 22814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } else { 22824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 22834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 22844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%0), %%xmm2" "\n\t" 22854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundsd $4, %%xmm2, %%xmm11" "\n\t" 22864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 22874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 22884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 22894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11","xmm2" 22904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 22914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 22924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 2293c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2294c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid test_ROUNDSD_w_immediate_rounding ( void ) 2295c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2296c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj double vals[22]; 2297c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj Int i = 0; 2298c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.0; 2299c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.0; 2300c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkPosInf(); 2301c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkNegInf(); 2302c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkPosNan(); 2303c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkNegNan(); 2304c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -1.3; 2305c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -1.1; 2306c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.9; 2307c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.7; 2308c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.50001; 2309c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.49999; 2310c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.3; 2311c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.1; 2312c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.1; 2313c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.3; 2314c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.49999; 2315c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.50001; 2316c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.7; 2317c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.9; 2318c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 1.1; 2319c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 1.3; 2320c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj assert(i == 22); 2321c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2322c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2323c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj V128 src, dst; 2324c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2325c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2326c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2327c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2328c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_000(False/*reg*/, &src, &dst); 2329c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundsd_000 "); 2330c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2331c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2332c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2333c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2334c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2335c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2336c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2337c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2338c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2339c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_000(True/*mem*/, &src, &dst); 2340c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundsd_000 "); 2341c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2342c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2343c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2344c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2345c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2346c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2347c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2348c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2349c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2350c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2351c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_001(False/*reg*/, &src, &dst); 2352c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundsd_001 "); 2353c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2354c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2355c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2356c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2357c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2358c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2359c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2360c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2361c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2362c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_001(True/*mem*/, &src, &dst); 2363c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundsd_001 "); 2364c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2365c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2366c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2367c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2368c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2369c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2370c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2371c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2372c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2373c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2374c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_010(False/*reg*/, &src, &dst); 2375c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundsd_010 "); 2376c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2377c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2378c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2379c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2380c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2381c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2382c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2383c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2384c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2385c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_010(True/*mem*/, &src, &dst); 2386c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundsd_010 "); 2387c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2388c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2389c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2390c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2391c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2392c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2393c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2394c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2395c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2396c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2397c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_011(False/*reg*/, &src, &dst); 2398c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundsd_011 "); 2399c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2400c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2401c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2402c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2403c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2404c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2405c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2406c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2407c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 8); 2408c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSD_011(True/*mem*/, &src, &dst); 2409c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundsd_011 "); 2410c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2411c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2412c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2413c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 2414c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2415c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2416c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2417c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 24184fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid test_ROUNDSD_w_mxcsr_rounding ( void ) 24194fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 24204fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt rm; 24214fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj double vals[22]; 24224fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj Int i = 0; 24234fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.0; 24244fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.0; 24254fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosInf(); 24264fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegInf(); 24274fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosNan(); 24284fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegNan(); 24294fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.3; 24304fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.1; 24314fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.9; 24324fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.7; 24334fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.50001; 24344fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.49999; 24354fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.3; 24364fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.1; 24374fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.1; 24384fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.3; 24394fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.49999; 24404fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.50001; 24414fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.7; 24424fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.9; 24434fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.1; 24444fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.3; 24454fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(i == 22); 24464fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24474fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 24484fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 24494fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24504fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 24514fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj V128 src, dst; 24524fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24534fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (rm = 0; rm <= 3; rm++) { 24544fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(rm); 24554fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24564fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 24574fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 24584fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 8); 24594fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDSD_1XX(False/*reg*/, &src, &dst); 24604fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("r (rm=%u) roundsd_1XX ", rm); 24614fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 24624fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 24634fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 24644fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 24654fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 24664fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24674fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 24684fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 24694fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 8); 24704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDSD_1XX(True/*mem*/, &src, &dst); 24714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("m (rm=%u) roundsd_1XX ", rm); 24724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 24734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 24744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 24754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f %10f", vals[i], *(double*)(&dst[0])); 24764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 24774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 24784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 24794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 24814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 3); 24824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(0); 24834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 24844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 24854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 24864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 24874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 2488c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj/* ------------ ROUNDSS ------------ */ 2489c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2490c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2491c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2492c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2493c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2494c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2495c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $0, (%0), %%xmm11" "\n\t" 2496c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2497c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2498c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2499c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2500c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2501c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2502c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2503c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2504c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2505c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $0, %%xmm2, %%xmm11" "\n\t" 2506c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2507c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2508c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2509c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2510c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2511c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2512c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2513c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2514c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSS_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2515c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2516c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2517c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2518c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2519c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $1, (%0), %%xmm11" "\n\t" 2520c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2521c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2522c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2523c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2524c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2525c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2526c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2527c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2528c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2529c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $1, %%xmm2, %%xmm11" "\n\t" 2530c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2531c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2532c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2533c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2534c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2535c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2536c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2537c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2538c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSS_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2539c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2540c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2541c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2542c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2543c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $2, (%0), %%xmm11" "\n\t" 2544c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2545c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2546c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2547c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2548c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2549c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2550c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2551c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2552c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2553c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $2, %%xmm2, %%xmm11" "\n\t" 2554c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2555c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2556c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2557c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2558c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2559c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2560c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2561c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2562c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid do_ROUNDSS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 2563c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2564c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj if (mem) { 2565c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2566c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2567c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $3, (%0), %%xmm11" "\n\t" 2568c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2569c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2570c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2571c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11" 2572c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2573c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } else { 2574c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj __asm__ __volatile__( 2575c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%1), %%xmm11" "\n\t" 2576c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd (%0), %%xmm2" "\n\t" 2577c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "roundss $3, %%xmm2, %%xmm11" "\n\t" 2578c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj "movupd %%xmm11, (%1)" "\n" 2579c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*OUT*/ 2580c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*IN*/ "r"(src), "r"(dst) 2581c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj : /*TRASH*/ "xmm11","xmm2" 2582c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj ); 2583c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2584c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2585c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 25864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid do_ROUNDSS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 25874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 25884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (mem) { 25894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 25904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 25914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundss $4, (%0), %%xmm11" "\n\t" 25924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 25934fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 25944fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 25954fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11" 25964fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 25974fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } else { 25984fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 25994fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 26004fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%0), %%xmm2" "\n\t" 26014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundss $4, %%xmm2, %%xmm11" "\n\t" 26024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 26034fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 26044fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 26054fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11","xmm2" 26064fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 26074fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 26084fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 2609c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2610c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardjvoid test_ROUNDSS_w_immediate_rounding ( void ) 2611c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj{ 2612c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj float vals[22]; 2613c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj Int i = 0; 2614c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.0; 2615c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.0; 2616c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkPosInf(); 2617c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkNegInf(); 2618c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkPosNan(); 2619c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = mkNegNan(); 2620c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -1.3; 2621c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -1.1; 2622c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.9; 2623c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.7; 2624c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.50001; 2625c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.49999; 2626c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.3; 2627c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = -0.1; 2628c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.1; 2629c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.3; 2630c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.49999; 2631c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.50001; 2632c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.7; 2633c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 0.9; 2634c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 1.1; 2635c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj vals[i++] = 1.3; 2636c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj assert(i == 22); 2637c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2638c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 2639c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj V128 src, dst; 2640c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2641c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2642c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2643c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2644c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_000(False/*reg*/, &src, &dst); 2645c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundss_000 "); 2646c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2647c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2648c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2649c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2650c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2651c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2652c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2653c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2654c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2655c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_000(True/*mem*/, &src, &dst); 2656c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundss_000 "); 2657c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2658c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2659c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2660c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2661c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2662c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2663c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2664c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2665c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2666c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2667c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_001(False/*reg*/, &src, &dst); 2668c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundss_001 "); 2669c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2670c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2671c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2672c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2673c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2674c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2675c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2676c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2677c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2678c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_001(True/*mem*/, &src, &dst); 2679c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundss_001 "); 2680c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2681c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2682c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2683c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2684c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2685c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2686c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2687c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2688c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2689c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2690c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_010(False/*reg*/, &src, &dst); 2691c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundss_010 "); 2692c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2693c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2694c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2695c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2696c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2697c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2698c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2699c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2700c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2701c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_010(True/*mem*/, &src, &dst); 2702c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundss_010 "); 2703c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2704c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2705c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2706c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2707c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2708c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2709c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2710c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2711c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2712c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2713c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_011(False/*reg*/, &src, &dst); 2714c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("r roundss_011 "); 2715c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2716c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2717c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2718c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2719c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2720c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj 2721c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&src); 2722c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj randV128(&dst); 2723c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj memcpy(&src[0], &vals[i], 4); 2724c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj do_ROUNDSS_011(True/*mem*/, &src, &dst); 2725c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("m roundss_011 "); 2726c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&src); 2727c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" "); 2728c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj showV128(&dst); 2729c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 2730c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj printf("\n"); 2731c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj } 2732c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj} 2733e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 27344fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid test_ROUNDSS_w_mxcsr_rounding ( void ) 27354fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 27364fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt rm; 27374fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj float vals[22]; 27384fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj Int i = 0; 27394fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.0; 27404fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.0; 27414fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosInf(); 27424fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegInf(); 27434fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosNan(); 27444fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegNan(); 27454fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.3; 27464fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.1; 27474fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.9; 27484fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.7; 27494fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.50001; 27504fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.49999; 27514fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.3; 27524fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.1; 27534fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.1; 27544fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.3; 27554fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.49999; 27564fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.50001; 27574fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.7; 27584fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.9; 27594fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.1; 27604fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.3; 27614fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(i == 22); 27624fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27634fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 27644fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 27654fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27664fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 27674fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj V128 src, dst; 27684fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27694fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (rm = 0; rm <= 3; rm++) { 27704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(rm); 27714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 27734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 27744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 4); 27754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDSS_1XX(False/*reg*/, &src, &dst); 27764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("r (rm=%u) roundss_1XX ", rm); 27774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 27784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 27794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 27804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 27814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 27824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 27844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 27854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 4); 27864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDSS_1XX(True/*mem*/, &src, &dst); 27874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("m (rm=%u) roundss_1XX ", rm); 27884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 27894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 27904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 27914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f %10f", (double)vals[i], (double)*(float*)(&dst[0])); 27924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 27934fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 27944fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 27954fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 27964fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 27974fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 3); 27984fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(0); 27994fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 28004fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 28014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 28024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 280305b885350430ded6fe29966b5af645e16c88f18bsewardj/* ------------ ROUNDPD ------------ */ 280405b885350430ded6fe29966b5af645e16c88f18bsewardj 280505b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPD_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 280605b885350430ded6fe29966b5af645e16c88f18bsewardj{ 280705b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 280805b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 280905b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 281005b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $0, (%0), %%xmm11" "\n\t" 281105b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 281205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 281305b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 281405b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 281505b885350430ded6fe29966b5af645e16c88f18bsewardj ); 281605b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 281705b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 281805b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 281905b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 282005b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $0, %%xmm2, %%xmm11" "\n\t" 282105b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 282205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 282305b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 282405b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 282505b885350430ded6fe29966b5af645e16c88f18bsewardj ); 282605b885350430ded6fe29966b5af645e16c88f18bsewardj } 282705b885350430ded6fe29966b5af645e16c88f18bsewardj} 282805b885350430ded6fe29966b5af645e16c88f18bsewardj 282905b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPD_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 283005b885350430ded6fe29966b5af645e16c88f18bsewardj{ 283105b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 283205b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 283305b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 283405b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $1, (%0), %%xmm11" "\n\t" 283505b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 283605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 283705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 283805b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 283905b885350430ded6fe29966b5af645e16c88f18bsewardj ); 284005b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 284105b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 284205b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 284305b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 284405b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $1, %%xmm2, %%xmm11" "\n\t" 284505b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 284605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 284705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 284805b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 284905b885350430ded6fe29966b5af645e16c88f18bsewardj ); 285005b885350430ded6fe29966b5af645e16c88f18bsewardj } 285105b885350430ded6fe29966b5af645e16c88f18bsewardj} 285205b885350430ded6fe29966b5af645e16c88f18bsewardj 285305b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPD_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 285405b885350430ded6fe29966b5af645e16c88f18bsewardj{ 285505b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 285605b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 285705b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 285805b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $2, (%0), %%xmm11" "\n\t" 285905b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 286005b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 286105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 286205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 286305b885350430ded6fe29966b5af645e16c88f18bsewardj ); 286405b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 286505b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 286605b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 286705b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 286805b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $2, %%xmm2, %%xmm11" "\n\t" 286905b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 287005b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 287105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 287205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 287305b885350430ded6fe29966b5af645e16c88f18bsewardj ); 287405b885350430ded6fe29966b5af645e16c88f18bsewardj } 287505b885350430ded6fe29966b5af645e16c88f18bsewardj} 287605b885350430ded6fe29966b5af645e16c88f18bsewardj 287705b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPD_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 287805b885350430ded6fe29966b5af645e16c88f18bsewardj{ 287905b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 288005b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 288105b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 288205b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $3, (%0), %%xmm11" "\n\t" 288305b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 288405b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 288505b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 288605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 288705b885350430ded6fe29966b5af645e16c88f18bsewardj ); 288805b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 288905b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 289005b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 289105b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 289205b885350430ded6fe29966b5af645e16c88f18bsewardj "roundpd $3, %%xmm2, %%xmm11" "\n\t" 289305b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 289405b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 289505b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 289605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 289705b885350430ded6fe29966b5af645e16c88f18bsewardj ); 289805b885350430ded6fe29966b5af645e16c88f18bsewardj } 289905b885350430ded6fe29966b5af645e16c88f18bsewardj} 290005b885350430ded6fe29966b5af645e16c88f18bsewardj 29014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid do_ROUNDPD_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 29024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 29034fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (mem) { 29044fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 29054fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 29064fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundpd $4, (%0), %%xmm11" "\n\t" 29074fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 29084fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 29094fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 29104fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11" 29114fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 29124fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } else { 29134fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 29144fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 29154fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%0), %%xmm2" "\n\t" 29164fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundpd $4, %%xmm2, %%xmm11" "\n\t" 29174fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 29184fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 29194fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 29204fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11","xmm2" 29214fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 29224fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 29234fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 292405b885350430ded6fe29966b5af645e16c88f18bsewardj 292505b885350430ded6fe29966b5af645e16c88f18bsewardjvoid test_ROUNDPD_w_immediate_rounding ( void ) 292605b885350430ded6fe29966b5af645e16c88f18bsewardj{ 292705b885350430ded6fe29966b5af645e16c88f18bsewardj double vals[22]; 292805b885350430ded6fe29966b5af645e16c88f18bsewardj Int i = 0; 292905b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.0; 293005b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.0; 293105b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkPosInf(); 293205b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkNegInf(); 293305b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkPosNan(); 293405b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkNegNan(); 293505b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -1.3; 293605b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -1.1; 293705b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.9; 293805b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.7; 293905b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.50001; 294005b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.49999; 294105b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.3; 294205b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.1; 294305b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.1; 294405b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.3; 294505b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.49999; 294605b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.50001; 294705b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.7; 294805b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.9; 294905b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 1.1; 295005b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 1.3; 295105b885350430ded6fe29966b5af645e16c88f18bsewardj assert(i == 22); 295205b885350430ded6fe29966b5af645e16c88f18bsewardj 295305b885350430ded6fe29966b5af645e16c88f18bsewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 295405b885350430ded6fe29966b5af645e16c88f18bsewardj V128 src, dst; 295505b885350430ded6fe29966b5af645e16c88f18bsewardj 295605b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 295705b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 295805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 295905b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 296005b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_000(False/*reg*/, &src, &dst); 296105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundpd_000 "); 296205b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 296305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 296405b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 296505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 296605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 296705b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 296805b885350430ded6fe29966b5af645e16c88f18bsewardj 296905b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 297005b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 297105b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 297205b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 297305b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_000(True/*mem*/, &src, &dst); 297405b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundpd_000 "); 297505b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 297605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 297705b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 297805b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 297905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 298005b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 298105b885350430ded6fe29966b5af645e16c88f18bsewardj 298205b885350430ded6fe29966b5af645e16c88f18bsewardj 298305b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 298405b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 298505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 298605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 298705b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_001(False/*reg*/, &src, &dst); 298805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundpd_001 "); 298905b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 299005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 299105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 299205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 299305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 299405b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 299505b885350430ded6fe29966b5af645e16c88f18bsewardj 299605b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 299705b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 299805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 299905b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 300005b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_001(True/*mem*/, &src, &dst); 300105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundpd_001 "); 300205b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 300305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 300405b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 300505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 300605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 300705b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 300805b885350430ded6fe29966b5af645e16c88f18bsewardj 300905b885350430ded6fe29966b5af645e16c88f18bsewardj 301005b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 301105b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 301205b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 301305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 301405b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_010(False/*reg*/, &src, &dst); 301505b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundpd_010 "); 301605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 301705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 301805b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 301905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 302005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 302105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 302205b885350430ded6fe29966b5af645e16c88f18bsewardj 302305b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 302405b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 302505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 302605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 302705b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_010(True/*mem*/, &src, &dst); 302805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundpd_010 "); 302905b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 303005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 303105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 303205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 303305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 303405b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 303505b885350430ded6fe29966b5af645e16c88f18bsewardj 303605b885350430ded6fe29966b5af645e16c88f18bsewardj 303705b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 303805b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 303905b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 304005b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 304105b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_011(False/*reg*/, &src, &dst); 304205b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundpd_011 "); 304305b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 304405b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 304505b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 304605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 304705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 304805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 304905b885350430ded6fe29966b5af645e16c88f18bsewardj 305005b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 305105b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 305205b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 8); 305305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 8); 305405b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPD_011(True/*mem*/, &src, &dst); 305505b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundpd_011 "); 305605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 305705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 305805b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 305905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 306005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 306105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 306205b885350430ded6fe29966b5af645e16c88f18bsewardj } 306305b885350430ded6fe29966b5af645e16c88f18bsewardj} 306405b885350430ded6fe29966b5af645e16c88f18bsewardj 30654fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid test_ROUNDPD_w_mxcsr_rounding ( void ) 30664fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 30674fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt rm; 30684fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj double vals[22]; 30694fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj Int i = 0; 30704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.0; 30714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.0; 30724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosInf(); 30734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegInf(); 30744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosNan(); 30754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegNan(); 30764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.3; 30774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.1; 30784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.9; 30794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.7; 30804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.50001; 30814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.49999; 30824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.3; 30834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.1; 30844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.1; 30854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.3; 30864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.49999; 30874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.50001; 30884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.7; 30894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.9; 30904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.1; 30914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.3; 30924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(i == 22); 30934fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 30944fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 30954fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 30964fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 30974fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 30984fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj V128 src, dst; 30994fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 31004fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (rm = 0; rm <= 3; rm++) { 31014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(rm); 31024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 31034fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 31044fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 31054fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 8); 31064fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[8], &vals[(i+11)%22], 8); 31074fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDPD_1XX(False/*reg*/, &src, &dst); 31084fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("r (rm=%u) roundpd_1XX ", rm); 31094fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 31104fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 31114fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 31124fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 31134fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 31144fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 31154fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 31164fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 31174fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 31184fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 8); 31194fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[8], &vals[(i+11)%22], 8); 31204fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDPD_1XX(True/*mem*/, &src, &dst); 31214fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("m (rm=%u) roundpd_1XX ", rm); 31224fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 31234fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 31244fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 31254fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f -> %10f", vals[i], *(double*)(&dst[0])); 31264fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %10f -> %10f", vals[(i+11)%22], *(double*)(&dst[8])); 31274fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 31284fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 31294fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 31304fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 31314fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 31324fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 3); 31334fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(0); 31344fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 31354fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 31364fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 31374fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 313805b885350430ded6fe29966b5af645e16c88f18bsewardj/* ------------ ROUNDPS ------------ */ 313905b885350430ded6fe29966b5af645e16c88f18bsewardj 314005b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPS_000 ( Bool mem, V128* src, /*OUT*/V128* dst ) 314105b885350430ded6fe29966b5af645e16c88f18bsewardj{ 314205b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 314305b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 314405b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 314505b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $0, (%0), %%xmm11" "\n\t" 314605b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 314705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 314805b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 314905b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 315005b885350430ded6fe29966b5af645e16c88f18bsewardj ); 315105b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 315205b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 315305b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 315405b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 315505b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $0, %%xmm2, %%xmm11" "\n\t" 315605b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 315705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 315805b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 315905b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 316005b885350430ded6fe29966b5af645e16c88f18bsewardj ); 316105b885350430ded6fe29966b5af645e16c88f18bsewardj } 316205b885350430ded6fe29966b5af645e16c88f18bsewardj} 316305b885350430ded6fe29966b5af645e16c88f18bsewardj 316405b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPS_001 ( Bool mem, V128* src, /*OUT*/V128* dst ) 316505b885350430ded6fe29966b5af645e16c88f18bsewardj{ 316605b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 316705b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 316805b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 316905b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $1, (%0), %%xmm11" "\n\t" 317005b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 317105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 317205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 317305b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 317405b885350430ded6fe29966b5af645e16c88f18bsewardj ); 317505b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 317605b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 317705b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 317805b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 317905b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $1, %%xmm2, %%xmm11" "\n\t" 318005b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 318105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 318205b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 318305b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 318405b885350430ded6fe29966b5af645e16c88f18bsewardj ); 318505b885350430ded6fe29966b5af645e16c88f18bsewardj } 318605b885350430ded6fe29966b5af645e16c88f18bsewardj} 318705b885350430ded6fe29966b5af645e16c88f18bsewardj 318805b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPS_010 ( Bool mem, V128* src, /*OUT*/V128* dst ) 318905b885350430ded6fe29966b5af645e16c88f18bsewardj{ 319005b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 319105b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 319205b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 319305b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $2, (%0), %%xmm11" "\n\t" 319405b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 319505b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 319605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 319705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 319805b885350430ded6fe29966b5af645e16c88f18bsewardj ); 319905b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 320005b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 320105b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 320205b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 320305b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $2, %%xmm2, %%xmm11" "\n\t" 320405b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 320505b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 320605b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 320705b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 320805b885350430ded6fe29966b5af645e16c88f18bsewardj ); 320905b885350430ded6fe29966b5af645e16c88f18bsewardj } 321005b885350430ded6fe29966b5af645e16c88f18bsewardj} 321105b885350430ded6fe29966b5af645e16c88f18bsewardj 321205b885350430ded6fe29966b5af645e16c88f18bsewardjvoid do_ROUNDPS_011 ( Bool mem, V128* src, /*OUT*/V128* dst ) 321305b885350430ded6fe29966b5af645e16c88f18bsewardj{ 321405b885350430ded6fe29966b5af645e16c88f18bsewardj if (mem) { 321505b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 321605b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 321705b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $3, (%0), %%xmm11" "\n\t" 321805b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 321905b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 322005b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 322105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11" 322205b885350430ded6fe29966b5af645e16c88f18bsewardj ); 322305b885350430ded6fe29966b5af645e16c88f18bsewardj } else { 322405b885350430ded6fe29966b5af645e16c88f18bsewardj __asm__ __volatile__( 322505b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%1), %%xmm11" "\n\t" 322605b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd (%0), %%xmm2" "\n\t" 322705b885350430ded6fe29966b5af645e16c88f18bsewardj "roundps $3, %%xmm2, %%xmm11" "\n\t" 322805b885350430ded6fe29966b5af645e16c88f18bsewardj "movupd %%xmm11, (%1)" "\n" 322905b885350430ded6fe29966b5af645e16c88f18bsewardj : /*OUT*/ 323005b885350430ded6fe29966b5af645e16c88f18bsewardj : /*IN*/ "r"(src), "r"(dst) 323105b885350430ded6fe29966b5af645e16c88f18bsewardj : /*TRASH*/ "xmm11","xmm2" 323205b885350430ded6fe29966b5af645e16c88f18bsewardj ); 323305b885350430ded6fe29966b5af645e16c88f18bsewardj } 323405b885350430ded6fe29966b5af645e16c88f18bsewardj} 323505b885350430ded6fe29966b5af645e16c88f18bsewardj 32364fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid do_ROUNDPS_1XX ( Bool mem, V128* src, /*OUT*/V128* dst ) 32374fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 32384fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj if (mem) { 32394fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 32404fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 32414fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundps $4, (%0), %%xmm11" "\n\t" 32424fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 32434fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 32444fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 32454fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11" 32464fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 32474fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } else { 32484fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj __asm__ __volatile__( 32494fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%1), %%xmm11" "\n\t" 32504fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd (%0), %%xmm2" "\n\t" 32514fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "roundps $4, %%xmm2, %%xmm11" "\n\t" 32524fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj "movupd %%xmm11, (%1)" "\n" 32534fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*OUT*/ 32544fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*IN*/ "r"(src), "r"(dst) 32554fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj : /*TRASH*/ "xmm11","xmm2" 32564fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj ); 32574fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 32584fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 325905b885350430ded6fe29966b5af645e16c88f18bsewardj 326005b885350430ded6fe29966b5af645e16c88f18bsewardjvoid test_ROUNDPS_w_immediate_rounding ( void ) 326105b885350430ded6fe29966b5af645e16c88f18bsewardj{ 326205b885350430ded6fe29966b5af645e16c88f18bsewardj float vals[22]; 326305b885350430ded6fe29966b5af645e16c88f18bsewardj Int i = 0; 326405b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.0; 326505b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.0; 326605b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkPosInf(); 326705b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkNegInf(); 326805b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkPosNan(); 326905b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = mkNegNan(); 327005b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -1.3; 327105b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -1.1; 327205b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.9; 327305b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.7; 327405b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.50001; 327505b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.49999; 327605b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.3; 327705b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = -0.1; 327805b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.1; 327905b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.3; 328005b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.49999; 328105b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.50001; 328205b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.7; 328305b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 0.9; 328405b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 1.1; 328505b885350430ded6fe29966b5af645e16c88f18bsewardj vals[i++] = 1.3; 328605b885350430ded6fe29966b5af645e16c88f18bsewardj assert(i == 22); 328705b885350430ded6fe29966b5af645e16c88f18bsewardj 328805b885350430ded6fe29966b5af645e16c88f18bsewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 328905b885350430ded6fe29966b5af645e16c88f18bsewardj V128 src, dst; 329005b885350430ded6fe29966b5af645e16c88f18bsewardj 329105b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 329205b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 329305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 329405b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 329505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 329605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 329705b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_000(False/*reg*/, &src, &dst); 329805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundps_000 "); 329905b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 330005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 330105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 330205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 330305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 330405b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 330505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 330605b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 330705b885350430ded6fe29966b5af645e16c88f18bsewardj 330805b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 330905b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 331005b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 331105b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 331205b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 331305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 331405b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_000(True/*mem*/, &src, &dst); 331505b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundps_000 "); 331605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 331705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 331805b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 331905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 332005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 332105b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 332205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 332305b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 332405b885350430ded6fe29966b5af645e16c88f18bsewardj 332505b885350430ded6fe29966b5af645e16c88f18bsewardj 332605b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 332705b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 332805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 332905b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 333005b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 333105b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 333205b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_001(False/*reg*/, &src, &dst); 333305b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundps_001 "); 333405b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 333505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 333605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 333705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 333805b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 333905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 334005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 334105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 334205b885350430ded6fe29966b5af645e16c88f18bsewardj 334305b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 334405b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 334505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 334605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 334705b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 334805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 334905b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_001(True/*mem*/, &src, &dst); 335005b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundps_001 "); 335105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 335205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 335305b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 335405b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 335505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 335605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 335705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 335805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 335905b885350430ded6fe29966b5af645e16c88f18bsewardj 336005b885350430ded6fe29966b5af645e16c88f18bsewardj 336105b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 336205b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 336305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 336405b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 336505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 336605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 336705b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_010(False/*reg*/, &src, &dst); 336805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundps_010 "); 336905b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 337005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 337105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 337205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 337305b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 337405b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 337505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 337605b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 337705b885350430ded6fe29966b5af645e16c88f18bsewardj 337805b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 337905b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 338005b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 338105b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 338205b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 338305b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 338405b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_010(True/*mem*/, &src, &dst); 338505b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundps_010 "); 338605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 338705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 338805b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 338905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 339005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 339105b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 339205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 339305b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 339405b885350430ded6fe29966b5af645e16c88f18bsewardj 339505b885350430ded6fe29966b5af645e16c88f18bsewardj 339605b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 339705b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 339805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 339905b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 340005b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 340105b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 340205b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_011(False/*reg*/, &src, &dst); 340305b885350430ded6fe29966b5af645e16c88f18bsewardj printf("r roundps_011 "); 340405b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 340505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 340605b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 340705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 340805b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 340905b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 341005b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 341105b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 341205b885350430ded6fe29966b5af645e16c88f18bsewardj 341305b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&src); 341405b885350430ded6fe29966b5af645e16c88f18bsewardj randV128(&dst); 341505b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[0], &vals[i], 4); 341605b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[4], &vals[(i+5)%22], 4); 341705b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[8], &vals[(i+11)%22], 4); 341805b885350430ded6fe29966b5af645e16c88f18bsewardj memcpy(&src[12], &vals[(i+17)%22], 4); 341905b885350430ded6fe29966b5af645e16c88f18bsewardj do_ROUNDPS_011(True/*mem*/, &src, &dst); 342005b885350430ded6fe29966b5af645e16c88f18bsewardj printf("m roundps_011 "); 342105b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&src); 342205b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" "); 342305b885350430ded6fe29966b5af645e16c88f18bsewardj showV128(&dst); 342405b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 342505b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 342605b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 342705b885350430ded6fe29966b5af645e16c88f18bsewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 342805b885350430ded6fe29966b5af645e16c88f18bsewardj printf("\n"); 342905b885350430ded6fe29966b5af645e16c88f18bsewardj } 343005b885350430ded6fe29966b5af645e16c88f18bsewardj} 343105b885350430ded6fe29966b5af645e16c88f18bsewardj 34324fbf7c76db1a37051d329a5bd29f8733832d56a2sewardjvoid test_ROUNDPS_w_mxcsr_rounding ( void ) 34334fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj{ 34344fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj UInt rm; 34354fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj float vals[22]; 34364fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj Int i = 0; 34374fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.0; 34384fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.0; 34394fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosInf(); 34404fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegInf(); 34414fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkPosNan(); 34424fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = mkNegNan(); 34434fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.3; 34444fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -1.1; 34454fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.9; 34464fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.7; 34474fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.50001; 34484fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.49999; 34494fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.3; 34504fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = -0.1; 34514fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.1; 34524fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.3; 34534fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.49999; 34544fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.50001; 34554fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.7; 34564fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 0.9; 34574fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.1; 34584fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj vals[i++] = 1.3; 34594fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(i == 22); 34604fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 34614fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 34624fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 34634fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 34644fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (i = 0; i < sizeof(vals)/sizeof(vals[0]); i++) { 34654fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj V128 src, dst; 34664fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 34674fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj for (rm = 0; rm <= 3; rm++) { 34684fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(rm); 34694fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 34704fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 34714fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 34724fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 4); 34734fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[4], &vals[(i+5)%22], 4); 34744fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[8], &vals[(i+11)%22], 4); 34754fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[12], &vals[(i+17)%22], 4); 34764fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDPS_1XX(False/*reg*/, &src, &dst); 34774fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("r (rm=%u) roundps_1XX ", rm); 34784fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 34794fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 34804fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 34814fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 34824fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 34834fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 34844fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 34854fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 34864fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 34874fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&src); 34884fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj randV128(&dst); 34894fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[0], &vals[i], 4); 34904fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[4], &vals[(i+5)%22], 4); 34914fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[8], &vals[(i+11)%22], 4); 34924fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj memcpy(&src[12], &vals[(i+17)%22], 4); 34934fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj do_ROUNDPS_1XX(True/*mem*/, &src, &dst); 34944fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("m (rm=%u) roundps_1XX ", rm); 34954fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&src); 34964fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" "); 34974fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj showV128(&dst); 34984fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[i], (double)*(float*)(&dst[0])); 34994fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+5)%22], (double)*(float*)(&dst[4])); 35004fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+11)%22], (double)*(float*)(&dst[8])); 35014fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf(" %9f:%9f", vals[(i+17)%22], (double)*(float*)(&dst[12])); 35024fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj printf("\n"); 35034fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 35044fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj } 35054fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 35064fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 35074fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 3); 35084fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj set_sse_roundingmode(0); 35094fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj rm = get_sse_roundingmode(); 35104fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj assert(rm == 0); // 0 == RN == default 35114fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj} 35124fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj 351305b885350430ded6fe29966b5af645e16c88f18bsewardj/* ------------ PTEST ------------ */ 351405b885350430ded6fe29966b5af645e16c88f18bsewardj 3515db3c42fa77005947079b12ea19291c7fe041ec19sewardjvoid test_PTEST ( void ) 3516db3c42fa77005947079b12ea19291c7fe041ec19sewardj{ 3517db3c42fa77005947079b12ea19291c7fe041ec19sewardj const Int ntests = 8; 3518db3c42fa77005947079b12ea19291c7fe041ec19sewardj V128 spec[ntests]; 3519db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[0], 0x0000000000000000ULL, 0x0000000000000000ULL ); 3520db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[1], 0x0000000000000000ULL, 0x0000000000000001ULL ); 3521db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[2], 0x0000000000000001ULL, 0x0000000000000000ULL ); 3522db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[3], 0x0000000000000001ULL, 0x0000000000000001ULL ); 3523db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[4], 0xffffffffffffffffULL, 0xffffffffffffffffULL ); 3524db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[5], 0xffffffffffffffffULL, 0xfffffffffffffffeULL ); 3525db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[6], 0xfffffffffffffffeULL, 0xffffffffffffffffULL ); 3526db3c42fa77005947079b12ea19291c7fe041ec19sewardj do64HLtoV128( &spec[7], 0xfffffffffffffffeULL, 0xfffffffffffffffeULL ); 3527db3c42fa77005947079b12ea19291c7fe041ec19sewardj V128 block[2]; 3528db3c42fa77005947079b12ea19291c7fe041ec19sewardj Int i, j; 3529db3c42fa77005947079b12ea19291c7fe041ec19sewardj ULong flags; 3530db3c42fa77005947079b12ea19291c7fe041ec19sewardj for (i = 0; i < ntests; i++) { 3531db3c42fa77005947079b12ea19291c7fe041ec19sewardj for (j = 0; j < ntests; j++) { 3532db3c42fa77005947079b12ea19291c7fe041ec19sewardj memcpy(&block[0], &spec[i], 16); 3533db3c42fa77005947079b12ea19291c7fe041ec19sewardj memcpy(&block[1], &spec[j], 16); 3534db3c42fa77005947079b12ea19291c7fe041ec19sewardj __asm__ __volatile__( 3535db3c42fa77005947079b12ea19291c7fe041ec19sewardj "subq $256, %%rsp" "\n\t" 3536db3c42fa77005947079b12ea19291c7fe041ec19sewardj "movupd 0(%1), %%xmm2" "\n\t" 3537db3c42fa77005947079b12ea19291c7fe041ec19sewardj "ptest 16(%1), %%xmm2" "\n\t" 3538db3c42fa77005947079b12ea19291c7fe041ec19sewardj "pushfq" "\n\t" 3539db3c42fa77005947079b12ea19291c7fe041ec19sewardj "popq %0" "\n\t" 3540db3c42fa77005947079b12ea19291c7fe041ec19sewardj "addq $256, %%rsp" "\n\t" 3541db3c42fa77005947079b12ea19291c7fe041ec19sewardj : /*out*/"=r"(flags) : /*in*/ "r"(&block[0]) : 3542db3c42fa77005947079b12ea19291c7fe041ec19sewardj "xmm2", "memory", "cc" 3543db3c42fa77005947079b12ea19291c7fe041ec19sewardj ); 3544db3c42fa77005947079b12ea19291c7fe041ec19sewardj printf("r ptest "); 3545db3c42fa77005947079b12ea19291c7fe041ec19sewardj showV128(&block[0]); 3546db3c42fa77005947079b12ea19291c7fe041ec19sewardj printf(" "); 3547db3c42fa77005947079b12ea19291c7fe041ec19sewardj showV128(&block[1]); 3548db3c42fa77005947079b12ea19291c7fe041ec19sewardj printf(" -> eflags %04x\n", (UInt)flags & 0x8D5); 3549db3c42fa77005947079b12ea19291c7fe041ec19sewardj } 3550db3c42fa77005947079b12ea19291c7fe041ec19sewardj } 3551db3c42fa77005947079b12ea19291c7fe041ec19sewardj} 3552e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 3553f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj/* ------------ PBLENDVB ------------ */ 3554f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3555f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid do_PBLENDVB ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3556f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3557f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj if (mem) { 3558f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3559f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3560f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3561f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "pblendvb (%0), %%xmm11" "\n\t" 3562f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3563f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3564f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3565f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm0" 3566f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3567f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } else { 3568f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3569f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3570f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3571f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%0), %%xmm2" "\n\t" 3572f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "pblendvb %%xmm2, %%xmm11" "\n\t" 3573f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3574f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3575f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3576f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm2","xmm0" 3577f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3578f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3579f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3580f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3581f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid test_PBLENDVB ( void ) 3582f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3583f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3584f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj Int i; 3585f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj for (i = 0; i < 10; i++) { 3586f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_xmm0); 3587f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_src); 3588f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_dst); 3589f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3590f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3591f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3592f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3593f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_PBLENDVB(False/*reg*/, &xmm0, &src, &dst); 3594f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("r pblendvb "); 3595f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3596f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3597f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3598f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3599f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3600f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3601f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3602f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3603f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3604f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3605f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3606f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3607f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_PBLENDVB(True/*mem*/, &xmm0, &src, &dst); 3608f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("m pblendvb "); 3609f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3610f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3611f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3612f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3613f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3614f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3615f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3616f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3617f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3618f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3619f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3620f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj/* ------------ BLENDVPD ------------ */ 3621f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3622f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid do_BLENDVPD ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3623f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3624f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj if (mem) { 3625f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3626f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3627f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3628f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "blendvpd (%0), %%xmm11" "\n\t" 3629f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3630f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3631f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3632f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm0" 3633f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3634f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } else { 3635f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3636f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3637f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3638f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%0), %%xmm2" "\n\t" 3639f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "blendvpd %%xmm2, %%xmm11" "\n\t" 3640f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3641f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3642f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3643f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm2","xmm0" 3644f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3645f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3646f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3647f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3648f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid test_BLENDVPD ( void ) 3649f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3650f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3651f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj Int i; 3652f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj for (i = 0; i < 10; i++) { 3653f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_xmm0); 3654f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_src); 3655f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_dst); 3656f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3657f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3658f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3659f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3660f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_BLENDVPD(False/*reg*/, &xmm0, &src, &dst); 3661f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("r blendvpd "); 3662f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3663f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3664f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3665f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3666f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3667f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3668f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3669f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3670f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3671f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3672f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3673f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3674f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_BLENDVPD(True/*mem*/, &xmm0, &src, &dst); 3675f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("m blendvpd "); 3676f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3677f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3678f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3679f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3680f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3681f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3682f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3683f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3684f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3685f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3686f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3687f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj/* ------------ BLENDVPS ------------ */ 3688f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3689f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid do_BLENDVPS ( Bool mem, V128* xmm0, V128* src, /*MOD*/V128* dst ) 3690f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3691f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj if (mem) { 3692f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3693f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3694f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3695f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "blendvps (%0), %%xmm11" "\n\t" 3696f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3697f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3698f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3699f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm0" 3700f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3701f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } else { 3702f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj __asm__ __volatile__( 3703f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%2), %%xmm0" "\n\t" 3704f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%1), %%xmm11" "\n\t" 3705f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd (%0), %%xmm2" "\n\t" 3706f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "blendvps %%xmm2, %%xmm11" "\n\t" 3707f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj "movupd %%xmm11, (%1)" "\n" 3708f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*OUT*/ 3709f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*IN*/ "r"(src), "r"(dst), "r"(xmm0) 3710f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj : /*TRASH*/ "xmm11","xmm2","xmm0" 3711f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj ); 3712f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3713f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3714f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3715f60af032f3a3e1c8438ceaef2b92caa403802b21sewardjvoid test_BLENDVPS ( void ) 3716f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj{ 3717f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj V128 xmm0, src, dst, t_xmm0, t_src, t_dst; 3718f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj Int i; 3719f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj for (i = 0; i < 10; i++) { 3720f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_xmm0); 3721f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_src); 3722f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj randV128(&t_dst); 3723f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3724f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3725f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3726f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3727f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_BLENDVPS(False/*reg*/, &xmm0, &src, &dst); 3728f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("r blendvps "); 3729f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3730f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3731f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3732f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3733f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3734f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3735f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3736f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3737f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3738f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&xmm0, &t_xmm0, 16); 3739f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&src, &t_src, 16); 3740f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj memcpy(&dst, &t_dst, 16); 3741f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj do_BLENDVPS(True/*mem*/, &xmm0, &src, &dst); 3742f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("m blendvps "); 3743f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_xmm0); 3744f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3745f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_src); 3746f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" "); 3747f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&t_dst); 3748f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf(" -> "); 3749f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj showV128(&dst); 3750f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj printf("\n"); 3751f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj } 3752f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj} 3753f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3754c5a5c57b567e9781d30c422428158a71545b59fasewardjvoid test_MOVNTDQA ( void ) 3755c5a5c57b567e9781d30c422428158a71545b59fasewardj{ 3756c5a5c57b567e9781d30c422428158a71545b59fasewardj V128 src, dst; 3757c5a5c57b567e9781d30c422428158a71545b59fasewardj Int i; 3758c5a5c57b567e9781d30c422428158a71545b59fasewardj for (i = 0; i < 10; i++) { 3759c5a5c57b567e9781d30c422428158a71545b59fasewardj randV128(&src); 3760c5a5c57b567e9781d30c422428158a71545b59fasewardj /* make sure the load actually happens */ 3761c5a5c57b567e9781d30c422428158a71545b59fasewardj randV128(&dst); 3762c5a5c57b567e9781d30c422428158a71545b59fasewardj DO_m_r("movntdqa", src, dst); 3763c5a5c57b567e9781d30c422428158a71545b59fasewardj } 3764c5a5c57b567e9781d30c422428158a71545b59fasewardj} 3765c5a5c57b567e9781d30c422428158a71545b59fasewardj 3766f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj/* ------------ main ------------ */ 3767f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj 3768e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardjint main ( int argc, char** argv ) 3769e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj{ 3770e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#if 1 3771b823b8531aedef4c8abff2544ea12aa0795e914dsewardj // ------ SSE 4.1 ------ 3772e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_BLENDPD(); // done Apr.01.2010 3773e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_BLENDPS(); // done Apr.02.2010 3774f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_PBLENDW(); 3775f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_PBLENDVB(); 3776f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_BLENDVPD(); 3777f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_BLENDVPS(); 3778e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_DPPD(); // done Apr.08.2010 3779e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_DPPS(); // done Apr.09.2010 3780f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_EXTRACTPS(); 3781e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_INSERTPS(); // done Apr.01.2010 378212f508afbe006f56c8123ae7498854fdd2c2f366sewardj test_PCMPEQQ(); 3783e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PEXTRB(); // done Apr.15.2010 3784e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PEXTRD(); // done Apr.14.2010 3785e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PEXTRQ(); // done Apr.14.2010 3786e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PEXTRW(); // done Apr.14.2010 3787e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PINSRQ(); // done Apr.16.2010 3788e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PINSRD(); // todo 3789f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_PINSRW(); /* Umm, this is SSE2, not SSE4. Right? */ 3790db3c42fa77005947079b12ea19291c7fe041ec19sewardj test_PINSRB(); // todo 3791b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PMAXSB(); 3792e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMAXSD(); // done Apr.09.2010 3793e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMAXUD(); // done Apr.16.2010 3794b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PMAXUW(); 3795b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PMINSB(); 3796e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMINSD(); // done Apr.09.2010 3797e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMINUD(); 3798b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PMINUW(); 3799e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXBW(); // done Apr.02.2010 3800e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXBD(); // done Mar.30.2010 3801e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXBQ(); // done Mar.30.2010 3802e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXWD(); // done Mar.31.2010 3803e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXWQ(); // done Mar.31.2010 3804e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVSXDQ(); // done Mar.31.2010 3805e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXBW(); // done Mar.28.2010 3806e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXBD(); // done Mar.29.2010 3807e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXBQ(); // done Mar.29.2010 3808e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXWD(); // done Mar.28.2010 3809e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXWQ(); // done Mar.29.2010 3810e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_PMOVZXDQ(); // done Mar.29.2010 3811e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_POPCNTW(); 3812e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_POPCNTL(); 3813e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj test_POPCNTQ(); 381412f508afbe006f56c8123ae7498854fdd2c2f366sewardj test_PMULDQ(); 3815b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PMULLD(); 3816db3c42fa77005947079b12ea19291c7fe041ec19sewardj test_PTEST(); 3817c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj test_ROUNDSD_w_immediate_rounding(); 3818c7d0a8fd9316f0f54af4c4c762d905453809d09fsewardj test_ROUNDSS_w_immediate_rounding(); 381905b885350430ded6fe29966b5af645e16c88f18bsewardj test_ROUNDPD_w_immediate_rounding(); 382005b885350430ded6fe29966b5af645e16c88f18bsewardj test_ROUNDPS_w_immediate_rounding(); 38214fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj test_ROUNDSD_w_mxcsr_rounding(); 38224fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj test_ROUNDSS_w_mxcsr_rounding(); 38234fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj test_ROUNDPD_w_mxcsr_rounding(); 38244fbf7c76db1a37051d329a5bd29f8733832d56a2sewardj test_ROUNDPS_w_mxcsr_rounding(); 3825b823b8531aedef4c8abff2544ea12aa0795e914dsewardj // ------ SSE 4.2 ------ 3826b823b8531aedef4c8abff2544ea12aa0795e914dsewardj test_PCMPGTQ(); 3827f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj // CRC32B,Q 38282a258897a1f1af8f5c7f0035a546971bce5c00b0sewardj test_PACKUSDW(); 3829a63005c6d9b95e37301376702dbcbb20bfee3782sewardj test_PHMINPOSUW(); 3830b34cb7f0fdefec97f5d3618841b140e7bd681820sewardj test_MPSADBW(); 3831c5a5c57b567e9781d30c422428158a71545b59fasewardj test_MOVNTDQA(); /* not sure whether this is 4.1 or 4.2 */ 3832e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#else 3833f60af032f3a3e1c8438ceaef2b92caa403802b21sewardj test_MPSADBW(); 3834e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj#endif 3835e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 3836e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj return 0; 3837e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj} 3838e7acec738f3821704c69a3a1bbf449d4ef0fc680sewardj 3839