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