VM/VM_SSEFunc.h File Reference

#include "VM_API.h"
#include <SYS/SYS_Types.h>
#include <xmmintrin.h>

Go to the source code of this file.

Defines

#define CPU_HAS_SIMD_INSTR   1
#define VM_SSE_STYLE   1
#define V4SF(A)   (v4sf)A
#define V4SI(A)   (v4si)A
#define VM_SPLATS   vm_splats
#define VM_CMPLT(A, B)   V4SI(_mm_cmplt_ps(A,B))
#define VM_CMPLE(A, B)   V4SI(_mm_cmple_ps(A,B))
#define VM_CMPGT(A, B)   V4SI(_mm_cmpgt_ps(A,B))
#define VM_CMPGE(A, B)   V4SI(_mm_cmpge_ps(A,B))
#define VM_CMPEQ(A, B)   V4SI(_mm_cmpeq_ps(A,B))
#define VM_CMPNE(A, B)   V4SI(_mm_cmpneq_ps(A,B))
#define vm_BASIC_CI(OP)
#define VM_ICMPGT   vm_cgt
#define VM_ICMPLT   vm_clt
#define VM_ICMPEQ   vm_ceq
#define VM_IADD   vm_sse_iadd
#define VM_ISUB   vm_sse_isub
#define VM_ADD   _mm_add_ps
#define VM_SUB   _mm_sub_ps
#define VM_MUL   _mm_mul_ps
#define VM_DIV   _mm_div_ps
#define VM_SQRT   _mm_sqrt_ps
#define VM_ISQRT   _mm_rsqrt_ps
#define VM_INVERT   _mm_rcp_ps
#define VM_ABS   vm_sse_abs
#define VM_FDIV   vm_sse_fdiv
#define VM_NEG   vm_sse_negate
#define VM_FSQRT   vm_sse_fsqrt
#define VM_MADD   vm_sse_madd
#define VM_MIN   _mm_min_ps
#define VM_MAX   _mm_max_ps
#define VM_AND   _mm_and_ps
#define VM_ANDNOT   _mm_andnot_ps
#define VM_OR   _mm_or_ps
#define VM_XOR   _mm_xor_ps
#define VM_ALLBITS   vm_allbits
#define VM_SHUFFLE   vm_shuffle
#define VM_SHUFFLE_MASK(a0, a1, b0, b1)   ((b1)<<6|(b0)<<4 | (a1)<<2|(a0))
#define VM_SWAPHL(X)   VM_SHUFFLE(X, 2, 3, 0, 1);
#define VM_SSE_ROUND_MASK   0x6000
#define VM_SSE_ROUND_ZERO   0x6000
#define VM_SSE_ROUND_UP   0x4000
#define VM_SSE_ROUND_DOWN   0x2000
#define VM_SSE_ROUND_NEAR   0x0000
#define GETROUND()   (_mm_getcsr()&VM_SSE_ROUND_MASK)
#define SETROUND(x)   (_mm_setcsr(x|(_mm_getcsr()&~VM_SSE_ROUND_MASK)))
#define VM_P_FLOOR()
#define VM_FLOOR   vm_sse_floor
#define VM_INT   vm_sse_intcast
#define VM_E_FLOOR()   SETROUND(rounding); _mm_empty();
#define VM_P_INT()
#define VM_E_INT()   SETROUND(rounding); _mm_empty();
#define VM_IFLOAT   vm_sse_floatcast

Typedefs

typedef __m128 v4sf
typedef __m128 v4si
typedef __m64 v2si


Define Documentation

#define CPU_HAS_SIMD_INSTR   1

Definition at line 29 of file VM_SSEFunc.h.

 
#define GETROUND (  )     (_mm_getcsr()&VM_SSE_ROUND_MASK)

Definition at line 356 of file VM_SSEFunc.h.

#define SETROUND ( x   )     (_mm_setcsr(x|(_mm_getcsr()&~VM_SSE_ROUND_MASK)))

Definition at line 357 of file VM_SSEFunc.h.

#define V4SF (  )     (v4sf)A

Definition at line 89 of file VM_SSEFunc.h.

#define V4SI (  )     (v4si)A

Definition at line 90 of file VM_SSEFunc.h.

#define VM_ABS   vm_sse_abs

Definition at line 259 of file VM_SSEFunc.h.

#define VM_ADD   _mm_add_ps

Definition at line 252 of file VM_SSEFunc.h.

#define VM_ALLBITS   vm_allbits

Definition at line 285 of file VM_SSEFunc.h.

#define VM_AND   _mm_and_ps

Definition at line 278 of file VM_SSEFunc.h.

#define VM_ANDNOT   _mm_andnot_ps

Definition at line 279 of file VM_SSEFunc.h.

#define vm_BASIC_CI ( OP   ) 

Value:

v4si                 rval; \
            const int32         *ai = (int32 *)&a; \
            const int32         *bi = (int32 *)&b; \
            vm_splats(rval, \
                    ai[0] OP bi[0] ? 0xFFFFFFFF : 0, \
                    ai[1] OP bi[1] ? 0xFFFFFFFF : 0, \
                    ai[2] OP bi[2] ? 0xFFFFFFFF : 0, \
                    ai[3] OP bi[3] ? 0xFFFFFFFF : 0); \
            return rval;

Definition at line 206 of file VM_SSEFunc.h.

#define VM_CMPEQ ( A,
 )     V4SI(_mm_cmpeq_ps(A,B))

Definition at line 192 of file VM_SSEFunc.h.

#define VM_CMPGE ( A,
 )     V4SI(_mm_cmpge_ps(A,B))

Definition at line 191 of file VM_SSEFunc.h.

#define VM_CMPGT ( A,
 )     V4SI(_mm_cmpgt_ps(A,B))

Definition at line 190 of file VM_SSEFunc.h.

#define VM_CMPLE ( A,
 )     V4SI(_mm_cmple_ps(A,B))

Definition at line 189 of file VM_SSEFunc.h.

#define VM_CMPLT ( A,
 )     V4SI(_mm_cmplt_ps(A,B))

Definition at line 188 of file VM_SSEFunc.h.

#define VM_CMPNE ( A,
 )     V4SI(_mm_cmpneq_ps(A,B))

Definition at line 193 of file VM_SSEFunc.h.

#define VM_DIV   _mm_div_ps

Definition at line 255 of file VM_SSEFunc.h.

 
#define VM_E_FLOOR (  )     SETROUND(rounding); _mm_empty();

Definition at line 375 of file VM_SSEFunc.h.

 
#define VM_E_INT (  )     SETROUND(rounding); _mm_empty();

Definition at line 378 of file VM_SSEFunc.h.

#define VM_FDIV   vm_sse_fdiv

Definition at line 261 of file VM_SSEFunc.h.

#define VM_FLOOR   vm_sse_floor

Definition at line 364 of file VM_SSEFunc.h.

#define VM_FSQRT   vm_sse_fsqrt

Definition at line 263 of file VM_SSEFunc.h.

#define VM_IADD   vm_sse_iadd

Definition at line 247 of file VM_SSEFunc.h.

#define VM_ICMPEQ   vm_ceq

Definition at line 223 of file VM_SSEFunc.h.

#define VM_ICMPGT   vm_cgt

Definition at line 221 of file VM_SSEFunc.h.

#define VM_ICMPLT   vm_clt

Definition at line 222 of file VM_SSEFunc.h.

#define VM_IFLOAT   vm_sse_floatcast

Definition at line 382 of file VM_SSEFunc.h.

#define VM_INT   vm_sse_intcast

Definition at line 366 of file VM_SSEFunc.h.

#define VM_INVERT   _mm_rcp_ps

Definition at line 258 of file VM_SSEFunc.h.

#define VM_ISQRT   _mm_rsqrt_ps

Definition at line 257 of file VM_SSEFunc.h.

#define VM_ISUB   vm_sse_isub

Definition at line 248 of file VM_SSEFunc.h.

#define VM_MADD   vm_sse_madd

Definition at line 264 of file VM_SSEFunc.h.

#define VM_MAX   _mm_max_ps

Definition at line 267 of file VM_SSEFunc.h.

#define VM_MIN   _mm_min_ps

Definition at line 266 of file VM_SSEFunc.h.

#define VM_MUL   _mm_mul_ps

Definition at line 254 of file VM_SSEFunc.h.

#define VM_NEG   vm_sse_negate

Definition at line 262 of file VM_SSEFunc.h.

#define VM_OR   _mm_or_ps

Definition at line 280 of file VM_SSEFunc.h.

 
#define VM_P_FLOOR (  ) 

Value:

Definition at line 362 of file VM_SSEFunc.h.

 
#define VM_P_INT (  ) 

Value:

Definition at line 376 of file VM_SSEFunc.h.

#define VM_SHUFFLE   vm_shuffle

Definition at line 287 of file VM_SSEFunc.h.

#define VM_SHUFFLE_MASK ( a0,
a1,
b0,
b1   )     ((b1)<<6|(b0)<<4 | (a1)<<2|(a0))

Definition at line 289 of file VM_SSEFunc.h.

#define VM_SPLATS   vm_splats

Definition at line 186 of file VM_SSEFunc.h.

#define VM_SQRT   _mm_sqrt_ps

Definition at line 256 of file VM_SSEFunc.h.

#define VM_SSE_ROUND_DOWN   0x2000

Definition at line 296 of file VM_SSEFunc.h.

#define VM_SSE_ROUND_MASK   0x6000

Definition at line 293 of file VM_SSEFunc.h.

#define VM_SSE_ROUND_NEAR   0x0000

Definition at line 297 of file VM_SSEFunc.h.

#define VM_SSE_ROUND_UP   0x4000

Definition at line 295 of file VM_SSEFunc.h.

#define VM_SSE_ROUND_ZERO   0x6000

Definition at line 294 of file VM_SSEFunc.h.

#define VM_SSE_STYLE   1

Definition at line 30 of file VM_SSEFunc.h.

#define VM_SUB   _mm_sub_ps

Definition at line 253 of file VM_SSEFunc.h.

#define VM_SWAPHL (  )     VM_SHUFFLE(X, 2, 3, 0, 1);

Definition at line 290 of file VM_SSEFunc.h.

#define VM_XOR   _mm_xor_ps

Definition at line 281 of file VM_SSEFunc.h.


Typedef Documentation

typedef __m64 v2si

Definition at line 48 of file VM_SSEFunc.h.

typedef __m128 v4sf

Definition at line 46 of file VM_SSEFunc.h.

typedef __m128 v4si

Definition at line 47 of file VM_SSEFunc.h.


Generated on Thu May 24 00:09:05 2012 for HDK by  doxygen 1.5.9