#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 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.
Definition at line 357 of file VM_SSEFunc.h.
| #define V4SF | ( | A | ) | (v4sf)A |
Definition at line 89 of file VM_SSEFunc.h.
| #define V4SI | ( | A | ) | (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, | |||
| B | ) | V4SI(_mm_cmpeq_ps(A,B)) |
Definition at line 192 of file VM_SSEFunc.h.
| #define VM_CMPGE | ( | A, | |||
| B | ) | V4SI(_mm_cmpge_ps(A,B)) |
Definition at line 191 of file VM_SSEFunc.h.
| #define VM_CMPGT | ( | A, | |||
| B | ) | V4SI(_mm_cmpgt_ps(A,B)) |
Definition at line 190 of file VM_SSEFunc.h.
| #define VM_CMPLE | ( | A, | |||
| B | ) | V4SI(_mm_cmple_ps(A,B)) |
Definition at line 189 of file VM_SSEFunc.h.
| #define VM_CMPLT | ( | A, | |||
| B | ) | V4SI(_mm_cmplt_ps(A,B)) |
Definition at line 188 of file VM_SSEFunc.h.
| #define VM_CMPNE | ( | A, | |||
| B | ) | 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:
uint rounding = GETROUND(); \ SETROUND(VM_SSE_ROUND_DOWN);
Definition at line 362 of file VM_SSEFunc.h.
| #define VM_P_INT | ( | ) |
Value:
uint rounding = GETROUND(); \ SETROUND(VM_SSE_ROUND_ZERO);
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 | ( | X | ) | 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 __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.
1.5.9