Arithmetic Operations | |
SSP_FORCEINLINE __m128 | ssp_arithmetic_hadd4_dup_ps_REF (__m128 a) |
SSP_FORCEINLINE __m128i | ssp_arithmetic_hadd4_epu16_REF (__m128i a) |
Convert Operations | |
SSP_FORCEINLINE void | ssp_convert_reverse_transpose_REF (__m128i *a, __m128i *b, __m128i *c) |
SSP_FORCEINLINE void | ssp_convert_3c_3p_epi8_REF (__m128i *rgb1, __m128i *rgb2, __m128i *rgb3) |
SSP_FORCEINLINE void | ssp_convert_3p_3c_epi8_REF (__m128i *r, __m128i *g, __m128i *b) |
SSP_FORCEINLINE void | ssp_convert_3c_3p_epi16_REF (__m128i *rgb1, __m128i *rgb2, __m128i *rgb3) |
SSP_FORCEINLINE void | ssp_convert_3p_3c_epi16_REF (__m128i *r, __m128i *g, __m128i *b) |
SSP_FORCEINLINE void | ssp_convert_3c_3p_epi32_REF (__m128i *rgb1, __m128i *rgb2, __m128i *rgb3) |
SSP_FORCEINLINE void | ssp_convert_3p_3c_epi32_REF (__m128i *r, __m128i *g, __m128i *b) |
SSP_FORCEINLINE void | ssp_convert_4c_4p_epi8_REF (__m128i *rgba1, __m128i *rgba2, __m128i *rgba3, __m128i *rgba4) |
SSP_FORCEINLINE void | ssp_convert_4p_4c_epi8_REF (__m128i *r, __m128i *g, __m128i *b, __m128i *a) |
SSP_FORCEINLINE void | ssp_convert_4c_4p_epi16_REF (__m128i *rgba1, __m128i *rgba2, __m128i *rgba3, __m128i *rgba4) |
SSP_FORCEINLINE void | ssp_convert_4p_4c_epi16_REF (__m128i *r, __m128i *g, __m128i *b, __m128i *a) |
SSP_FORCEINLINE void | ssp_convert_4c_4p_epi32_REF (__m128i *rgba1, __m128i *rgba2, __m128i *rgba3, __m128i *rgba4) |
SSP_FORCEINLINE void | ssp_convert_4p_4c_epi32_REF (__m128i *r, __m128i *g, __m128i *b, __m128i *a) |
Logical Operations | |
SSP_FORCEINLINE __m128i | ssp_logical_invert_si128_REF (__m128i a) |
SSP_FORCEINLINE __m128i | ssp_slli_epi8_REF (__m128i a, const int b) |
SSP_FORCEINLINE __m128i | ssp_srli_epi8_REF (__m128i a, const int b) |
Memory Operations | |
__m128i | ssp_memory_load1_epu8_REF (unsigned char a) |
Number Operations{ | |
SSP_FORCEINLINE int | ssp_number_isValidNumber_F32_REF (ssp_s32 *val) |
SSP_FORCEINLINE int | ssp_number_isValidNumber_F64_REF (ssp_s64 *val) |
SSP_FORCEINLINE ssp_f32 | ssp_number_changeSNanToQNaN_F32_REF (ssp_s32 *val) |
SSP_FORCEINLINE ssp_f64 | ssp_number_changeSNanToQNaN_F64_REF (ssp_s64 *val) |
SSP_FORCEINLINE __m128 ssp_arithmetic_hadd4_dup_ps_REF | ( | __m128 | a | ) |
Definition at line 16 of file SSEPlus_arithmetic_REF.h.
00017 { 00018 ssp_m128 A; 00019 ssp_f32 t; 00020 00021 A.f = a; 00022 t = A.f32[0] + 00023 A.f32[1] + 00024 A.f32[2] + 00025 A.f32[3]; 00026 00027 A.f32[0] = t; 00028 A.f32[1] = t; 00029 A.f32[2] = t; 00030 A.f32[3] = t; 00031 return A.f; 00032 }
SSP_FORCEINLINE __m128i ssp_arithmetic_hadd4_epu16_REF | ( | __m128i | a | ) |
SSP_FORCEINLINE void ssp_convert_3c_3p_epi16_REF | ( | __m128i * | rgb1, | |
__m128i * | rgb2, | |||
__m128i * | rgb3 | |||
) |
Definition at line 182 of file SSEPlus_convert_REF.h.
00183 { 00184 ssp_m128 trgb1, trgb2, trgb3; 00185 ssp_m128 r, g, b; 00186 trgb1.i = *rgb1; 00187 trgb2.i = *rgb2; 00188 trgb3.i = *rgb3; 00189 00190 r.s16[0] = trgb1.s16[0]; 00191 r.s16[1] = trgb1.s16[3]; 00192 r.s16[2] = trgb1.s16[6]; 00193 r.s16[3] = trgb2.s16[1]; 00194 r.s16[4] = trgb2.s16[4]; 00195 r.s16[5] = trgb2.s16[7]; 00196 r.s16[6] = trgb3.s16[2]; 00197 r.s16[7] = trgb3.s16[5]; 00198 00199 g.s16[0] = trgb1.s16[1]; 00200 g.s16[1] = trgb1.s16[4]; 00201 g.s16[2] = trgb1.s16[7]; 00202 g.s16[3] = trgb2.s16[2]; 00203 g.s16[4] = trgb2.s16[5]; 00204 g.s16[5] = trgb3.s16[0]; 00205 g.s16[6] = trgb3.s16[3]; 00206 g.s16[7] = trgb3.s16[6]; 00207 00208 b.s16[0] = trgb1.s16[2]; 00209 b.s16[1] = trgb1.s16[5]; 00210 b.s16[2] = trgb2.s16[0]; 00211 b.s16[3] = trgb2.s16[3]; 00212 b.s16[4] = trgb2.s16[6]; 00213 b.s16[5] = trgb3.s16[1]; 00214 b.s16[6] = trgb3.s16[4]; 00215 b.s16[7] = trgb3.s16[7]; 00216 00217 *rgb1 = r.i; 00218 *rgb2 = g.i; 00219 *rgb3 = b.i; 00220 }
SSP_FORCEINLINE void ssp_convert_3c_3p_epi32_REF | ( | __m128i * | rgb1, | |
__m128i * | rgb2, | |||
__m128i * | rgb3 | |||
) |
Definition at line 264 of file SSEPlus_convert_REF.h.
00265 { 00266 ssp_m128 trgb1, trgb2, trgb3; 00267 ssp_m128 r, g, b; 00268 trgb1.i = *rgb1; 00269 trgb2.i = *rgb2; 00270 trgb3.i = *rgb3; 00271 00272 r.s32[0] = trgb1.s32[0]; 00273 r.s32[1] = trgb1.s32[3]; 00274 r.s32[2] = trgb2.s32[2]; 00275 r.s32[3] = trgb3.s32[1]; 00276 00277 g.s32[0] = trgb1.s32[1]; 00278 g.s32[1] = trgb2.s32[0]; 00279 g.s32[2] = trgb2.s32[3]; 00280 g.s32[3] = trgb3.s32[2]; 00281 00282 b.s32[0] = trgb1.s32[2]; 00283 b.s32[1] = trgb2.s32[1]; 00284 b.s32[2] = trgb3.s32[0]; 00285 b.s32[3] = trgb3.s32[3]; 00286 00287 *rgb1 = r.i; 00288 *rgb2 = g.i; 00289 *rgb3 = b.i; 00290 }
SSP_FORCEINLINE void ssp_convert_3c_3p_epi8_REF | ( | __m128i * | rgb1, | |
__m128i * | rgb2, | |||
__m128i * | rgb3 | |||
) |
Definition at line 48 of file SSEPlus_convert_REF.h.
00049 { 00050 ssp_m128 RGB1, RGB2, RGB3; 00051 ssp_m128 R,G,B; 00052 00053 RGB1.i = *rgb1; 00054 RGB2.i = *rgb2; 00055 RGB3.i = *rgb3; 00056 00057 R.u8[0 ] = RGB1.u8[0 ]; //RED 00058 R.u8[1 ] = RGB1.u8[3 ]; 00059 R.u8[2 ] = RGB1.u8[6 ]; 00060 R.u8[3 ] = RGB1.u8[9 ]; 00061 R.u8[4 ] = RGB1.u8[12]; 00062 R.u8[5 ] = RGB1.u8[15]; 00063 R.u8[6 ] = RGB2.u8[2 ]; 00064 R.u8[7 ] = RGB2.u8[5 ]; 00065 R.u8[8 ] = RGB2.u8[8 ]; 00066 R.u8[9 ] = RGB2.u8[11]; 00067 R.u8[10] = RGB2.u8[14]; 00068 R.u8[11] = RGB3.u8[1 ]; 00069 R.u8[12] = RGB3.u8[4 ]; 00070 R.u8[13] = RGB3.u8[7 ]; 00071 R.u8[14] = RGB3.u8[10]; 00072 R.u8[15] = RGB3.u8[13]; 00073 00074 G.u8[0 ] = RGB1.u8[1 ]; //GREEN 00075 G.u8[1 ] = RGB1.u8[4 ]; 00076 G.u8[2 ] = RGB1.u8[7 ]; 00077 G.u8[3 ] = RGB1.u8[10]; 00078 G.u8[4 ] = RGB1.u8[13]; 00079 G.u8[5 ] = RGB2.u8[0 ]; 00080 G.u8[6 ] = RGB2.u8[3 ]; 00081 G.u8[7 ] = RGB2.u8[6 ]; 00082 G.u8[8 ] = RGB2.u8[9 ]; 00083 G.u8[9 ] = RGB2.u8[12]; 00084 G.u8[10] = RGB2.u8[15]; 00085 G.u8[11] = RGB3.u8[2 ]; 00086 G.u8[12] = RGB3.u8[5 ]; 00087 G.u8[13] = RGB3.u8[8 ]; 00088 G.u8[14] = RGB3.u8[11]; 00089 G.u8[15] = RGB3.u8[14]; 00090 00091 B.u8[0 ] = RGB1.u8[2 ]; //BLUE 00092 B.u8[1 ] = RGB1.u8[5 ]; 00093 B.u8[2 ] = RGB1.u8[8 ]; 00094 B.u8[3 ] = RGB1.u8[11]; 00095 B.u8[4 ] = RGB1.u8[14]; 00096 B.u8[5 ] = RGB2.u8[1 ]; 00097 B.u8[6 ] = RGB2.u8[4 ]; 00098 B.u8[7 ] = RGB2.u8[7 ]; 00099 B.u8[8 ] = RGB2.u8[10]; 00100 B.u8[9 ] = RGB2.u8[13]; 00101 B.u8[10] = RGB3.u8[0 ]; 00102 B.u8[11] = RGB3.u8[3 ]; 00103 B.u8[12] = RGB3.u8[6 ]; 00104 B.u8[13] = RGB3.u8[9 ]; 00105 B.u8[14] = RGB3.u8[12]; 00106 B.u8[15] = RGB3.u8[15]; 00107 00108 00109 *rgb1 = R.i; 00110 *rgb2 = G.i; 00111 *rgb3 = B.i; 00112 }
SSP_FORCEINLINE void ssp_convert_3p_3c_epi16_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b | |||
) |
Definition at line 223 of file SSEPlus_convert_REF.h.
00224 { 00225 ssp_m128 rgb1, rgb2, rgb3; 00226 ssp_m128 tr, tg, tb; 00227 tr.i = *r; 00228 tg.i = *g; 00229 tb.i = *b; 00230 00231 rgb1.s16[0] = tr.s16[0]; 00232 rgb1.s16[3] = tr.s16[1]; 00233 rgb1.s16[6] = tr.s16[2]; 00234 rgb2.s16[1] = tr.s16[3]; 00235 rgb2.s16[4] = tr.s16[4]; 00236 rgb2.s16[7] = tr.s16[5]; 00237 rgb3.s16[2] = tr.s16[6]; 00238 rgb3.s16[5] = tr.s16[7]; 00239 00240 rgb1.s16[1] = tg.s16[0]; 00241 rgb1.s16[4] = tg.s16[1]; 00242 rgb1.s16[7] = tg.s16[2]; 00243 rgb2.s16[2] = tg.s16[3]; 00244 rgb2.s16[5] = tg.s16[4]; 00245 rgb3.s16[0] = tg.s16[5]; 00246 rgb3.s16[3] = tg.s16[6]; 00247 rgb3.s16[6] = tg.s16[7]; 00248 00249 rgb1.s16[2] = tb.s16[0]; 00250 rgb1.s16[5] = tb.s16[1]; 00251 rgb2.s16[0] = tb.s16[2]; 00252 rgb2.s16[3] = tb.s16[3]; 00253 rgb2.s16[6] = tb.s16[4]; 00254 rgb3.s16[1] = tb.s16[5]; 00255 rgb3.s16[4] = tb.s16[6]; 00256 rgb3.s16[7] = tb.s16[7]; 00257 00258 *r = rgb1.i; 00259 *g = rgb2.i; 00260 *b = rgb3.i; 00261 }
SSP_FORCEINLINE void ssp_convert_3p_3c_epi32_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b | |||
) |
Definition at line 293 of file SSEPlus_convert_REF.h.
00294 { 00295 ssp_m128 tr, tg, tb; 00296 ssp_m128 rgb1, rgb2, rgb3; 00297 00298 tr.i = *r; 00299 tg.i = *g; 00300 tb.i = *b; 00301 00302 rgb1.s32[0] = tr.s32[0]; 00303 rgb1.s32[3] = tr.s32[1]; 00304 rgb2.s32[2] = tr.s32[2]; 00305 rgb3.s32[1] = tr.s32[3]; 00306 00307 rgb1.s32[1] = tg.s32[0]; 00308 rgb2.s32[0] = tg.s32[1]; 00309 rgb2.s32[3] = tg.s32[2]; 00310 rgb3.s32[2] = tg.s32[3]; 00311 00312 rgb1.s32[2] = tb.s32[0]; 00313 rgb2.s32[1] = tb.s32[1]; 00314 rgb3.s32[0] = tb.s32[2]; 00315 rgb3.s32[3] = tb.s32[3]; 00316 00317 *r = rgb1.i; 00318 *g = rgb2.i; 00319 *b = rgb3.i; 00320 }
SSP_FORCEINLINE void ssp_convert_3p_3c_epi8_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b | |||
) |
Definition at line 116 of file SSEPlus_convert_REF.h.
00117 { 00118 ssp_m128 R,G,B; 00119 ssp_m128 RGB1, RGB2, RGB3; 00120 00121 R.i = *r; 00122 G.i = *g; 00123 B.i = *b; 00124 00125 RGB1.u8[0 ] = R.u8[0 ]; 00126 RGB1.u8[1 ] = G.u8[0 ]; 00127 RGB1.u8[2 ] = B.u8[0 ]; 00128 RGB1.u8[3 ] = R.u8[1 ]; 00129 RGB1.u8[4 ] = G.u8[1 ]; 00130 RGB1.u8[5 ] = B.u8[1 ]; 00131 RGB1.u8[6 ] = R.u8[2 ]; 00132 RGB1.u8[7 ] = G.u8[2 ]; 00133 RGB1.u8[8 ] = B.u8[2 ]; 00134 RGB1.u8[9 ] = R.u8[3 ]; 00135 RGB1.u8[10] = G.u8[3 ]; 00136 RGB1.u8[11] = B.u8[3 ]; 00137 RGB1.u8[12] = R.u8[4 ]; 00138 RGB1.u8[13] = G.u8[4 ]; 00139 RGB1.u8[14] = B.u8[4 ]; 00140 RGB1.u8[15] = R.u8[5 ]; 00141 00142 RGB2.u8[0 ] = G.u8[5 ]; 00143 RGB2.u8[1 ] = B.u8[5 ]; 00144 RGB2.u8[2 ] = R.u8[6 ]; 00145 RGB2.u8[3 ] = G.u8[6 ]; 00146 RGB2.u8[4 ] = B.u8[6 ]; 00147 RGB2.u8[5 ] = R.u8[7 ]; 00148 RGB2.u8[6 ] = G.u8[7 ]; 00149 RGB2.u8[7 ] = B.u8[7 ]; 00150 RGB2.u8[8 ] = R.u8[8 ]; 00151 RGB2.u8[9 ] = G.u8[8 ]; 00152 RGB2.u8[10] = B.u8[8 ]; 00153 RGB2.u8[11] = R.u8[9 ]; 00154 RGB2.u8[12] = G.u8[9 ]; 00155 RGB2.u8[13] = B.u8[9 ]; 00156 RGB2.u8[14] = R.u8[10]; 00157 RGB2.u8[15] = G.u8[10]; 00158 00159 RGB3.u8[0 ] = B.u8[10]; 00160 RGB3.u8[1 ] = R.u8[11]; 00161 RGB3.u8[2 ] = G.u8[11]; 00162 RGB3.u8[3 ] = B.u8[11]; 00163 RGB3.u8[4 ] = R.u8[12]; 00164 RGB3.u8[5 ] = G.u8[12]; 00165 RGB3.u8[6 ] = B.u8[12]; 00166 RGB3.u8[7 ] = R.u8[13]; 00167 RGB3.u8[8 ] = G.u8[13]; 00168 RGB3.u8[9 ] = B.u8[13]; 00169 RGB3.u8[10] = R.u8[14]; 00170 RGB3.u8[11] = G.u8[14]; 00171 RGB3.u8[12] = B.u8[14]; 00172 RGB3.u8[13] = R.u8[15]; 00173 RGB3.u8[14] = G.u8[15]; 00174 RGB3.u8[15] = B.u8[15]; 00175 00176 *r = RGB1.i; 00177 *g = RGB2.i; 00178 *b = RGB3.i; 00179 }
SSP_FORCEINLINE void ssp_convert_4c_4p_epi16_REF | ( | __m128i * | rgba1, | |
__m128i * | rgba2, | |||
__m128i * | rgba3, | |||
__m128i * | rgba4 | |||
) |
Definition at line 406 of file SSEPlus_convert_REF.h.
00407 { 00408 int n; 00409 ssp_m128 trgba1, trgba2, trgba3, trgba4; 00410 ssp_m128 r, g, b, a; 00411 00412 trgba1.i = *rgba1; 00413 trgba2.i = *rgba2; 00414 trgba3.i = *rgba3; 00415 trgba4.i = *rgba4; 00416 00417 for( n = 0; n < 2; n++ ) 00418 { 00419 r.s16[0+n] = trgba1.s16[4*n]; 00420 r.s16[2+n] = trgba2.s16[4*n]; 00421 r.s16[4+n] = trgba3.s16[4*n]; 00422 r.s16[6+n] = trgba4.s16[4*n]; 00423 00424 g.s16[0+n] = trgba1.s16[4*n+1]; 00425 g.s16[2+n] = trgba2.s16[4*n+1]; 00426 g.s16[4+n] = trgba3.s16[4*n+1]; 00427 g.s16[6+n] = trgba4.s16[4*n+1]; 00428 00429 b.s16[0+n] = trgba1.s16[4*n+2]; 00430 b.s16[2+n] = trgba2.s16[4*n+2]; 00431 b.s16[4+n] = trgba3.s16[4*n+2]; 00432 b.s16[6+n] = trgba4.s16[4*n+2]; 00433 00434 a.s16[0+n] = trgba1.s16[4*n+3]; 00435 a.s16[2+n] = trgba2.s16[4*n+3]; 00436 a.s16[4+n] = trgba3.s16[4*n+3]; 00437 a.s16[6+n] = trgba4.s16[4*n+3]; 00438 } 00439 00440 *rgba1 = r.i; 00441 *rgba2 = g.i; 00442 *rgba3 = b.i; 00443 *rgba4 = a.i; 00444 }
SSP_FORCEINLINE void ssp_convert_4c_4p_epi32_REF | ( | __m128i * | rgba1, | |
__m128i * | rgba2, | |||
__m128i * | rgba3, | |||
__m128i * | rgba4 | |||
) |
Definition at line 487 of file SSEPlus_convert_REF.h.
00488 { 00489 ssp_m128 trgba1, trgba2, trgba3, trgba4; 00490 ssp_m128 r, g, b, a; 00491 00492 trgba1.i = *rgba1; 00493 trgba2.i = *rgba2; 00494 trgba3.i = *rgba3; 00495 trgba4.i = *rgba4; 00496 00497 r.s32[0] = trgba1.s32[0]; 00498 r.s32[1] = trgba2.s32[0]; 00499 r.s32[2] = trgba3.s32[0]; 00500 r.s32[3] = trgba4.s32[0]; 00501 00502 g.s32[0] = trgba1.s32[1]; 00503 g.s32[1] = trgba2.s32[1]; 00504 g.s32[2] = trgba3.s32[1]; 00505 g.s32[3] = trgba4.s32[1]; 00506 00507 b.s32[0] = trgba1.s32[2]; 00508 b.s32[1] = trgba2.s32[2]; 00509 b.s32[2] = trgba3.s32[2]; 00510 b.s32[3] = trgba4.s32[2]; 00511 00512 a.s32[0] = trgba1.s32[3]; 00513 a.s32[1] = trgba2.s32[3]; 00514 a.s32[2] = trgba3.s32[3]; 00515 a.s32[3] = trgba4.s32[3]; 00516 00517 *rgba1 = r.i; 00518 *rgba2 = g.i; 00519 *rgba3 = b.i; 00520 *rgba4 = a.i; 00521 }
SSP_FORCEINLINE void ssp_convert_4c_4p_epi8_REF | ( | __m128i * | rgba1, | |
__m128i * | rgba2, | |||
__m128i * | rgba3, | |||
__m128i * | rgba4 | |||
) |
Definition at line 324 of file SSEPlus_convert_REF.h.
00325 { 00326 int n; 00327 ssp_m128 trgba1, trgba2, trgba3, trgba4; 00328 ssp_m128 r, g, b, a; 00329 00330 trgba1.i = *rgba1; 00331 trgba2.i = *rgba2; 00332 trgba3.i = *rgba3; 00333 trgba4.i = *rgba4; 00334 00335 for( n = 0; n < 4; n++ ) 00336 { 00337 r.s8[0+n] = trgba1.s8[4*n]; 00338 r.s8[4+n] = trgba2.s8[4*n]; 00339 r.s8[8+n] = trgba3.s8[4*n]; 00340 r.s8[12+n] = trgba4.s8[4*n]; 00341 00342 g.s8[0+n] = trgba1.s8[4*n+1]; 00343 g.s8[4+n] = trgba2.s8[4*n+1]; 00344 g.s8[8+n] = trgba3.s8[4*n+1]; 00345 g.s8[12+n] = trgba4.s8[4*n+1]; 00346 00347 b.s8[0+n] = trgba1.s8[4*n+2]; 00348 b.s8[4+n] = trgba2.s8[4*n+2]; 00349 b.s8[8+n] = trgba3.s8[4*n+2]; 00350 b.s8[12+n] = trgba4.s8[4*n+2]; 00351 00352 a.s8[0+n] = trgba1.s8[4*n+3]; 00353 a.s8[4+n] = trgba2.s8[4*n+3]; 00354 a.s8[8+n] = trgba3.s8[4*n+3]; 00355 a.s8[12+n] = trgba4.s8[4*n+3]; 00356 } 00357 00358 *rgba1 = r.i; 00359 *rgba2 = g.i; 00360 *rgba3 = b.i; 00361 *rgba4 = a.i; 00362 }
SSP_FORCEINLINE void ssp_convert_4p_4c_epi16_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b, | |||
__m128i * | a | |||
) |
Definition at line 447 of file SSEPlus_convert_REF.h.
00448 { 00449 int n; 00450 ssp_m128 tr, tg, tb, ta; 00451 ssp_m128 rgba1, rgba2, rgba3, rgba4; 00452 tr.i = *r; 00453 tg.i = *g; 00454 tb.i = *b; 00455 ta.i = *a; 00456 00457 for( n = 0; n < 2; n++ ) 00458 { 00459 rgba1.s16[4*n] = tr.s16[0+n]; 00460 rgba2.s16[4*n] = tr.s16[2+n]; 00461 rgba3.s16[4*n] = tr.s16[4+n]; 00462 rgba4.s16[4*n] = tr.s16[6+n]; 00463 00464 rgba1.s16[4*n+1] = tg.s16[0+n]; 00465 rgba2.s16[4*n+1] = tg.s16[2+n]; 00466 rgba3.s16[4*n+1] = tg.s16[4+n]; 00467 rgba4.s16[4*n+1] = tg.s16[6+n]; 00468 00469 rgba1.s16[4*n+2] = tb.s16[0+n]; 00470 rgba2.s16[4*n+2] = tb.s16[2+n]; 00471 rgba3.s16[4*n+2] = tb.s16[4+n]; 00472 rgba4.s16[4*n+2] = tb.s16[6+n]; 00473 00474 rgba1.s16[4*n+3] = ta.s16[0+n]; 00475 rgba2.s16[4*n+3] = ta.s16[2+n]; 00476 rgba3.s16[4*n+3] = ta.s16[4+n]; 00477 rgba4.s16[4*n+3] = ta.s16[6+n]; 00478 } 00479 00480 *r = rgba1.i; 00481 *g = rgba2.i; 00482 *b = rgba3.i; 00483 *a = rgba4.i; 00484 }
SSP_FORCEINLINE void ssp_convert_4p_4c_epi32_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b, | |||
__m128i * | a | |||
) |
Definition at line 524 of file SSEPlus_convert_REF.h.
00525 { 00526 ssp_m128 tr, tg, tb, ta; 00527 ssp_m128 rgba1, rgba2, rgba3, rgba4; 00528 tr.i = *r; 00529 tg.i = *g; 00530 tb.i = *b; 00531 ta.i = *a; 00532 00533 rgba1.s32[0] = tr.s32[0]; 00534 rgba2.s32[0] = tr.s32[1]; 00535 rgba3.s32[0] = tr.s32[2]; 00536 rgba4.s32[0] = tr.s32[3]; 00537 00538 rgba1.s32[1] = tg.s32[0]; 00539 rgba2.s32[1] = tg.s32[1]; 00540 rgba3.s32[1] = tg.s32[2]; 00541 rgba4.s32[1] = tg.s32[3]; 00542 00543 rgba1.s32[2] = tb.s32[0]; 00544 rgba2.s32[2] = tb.s32[1]; 00545 rgba3.s32[2] = tb.s32[2]; 00546 rgba4.s32[2] = tb.s32[3]; 00547 00548 rgba1.s32[3] = ta.s32[0]; 00549 rgba2.s32[3] = ta.s32[1]; 00550 rgba3.s32[3] = ta.s32[2]; 00551 rgba4.s32[3] = ta.s32[3]; 00552 00553 *r = rgba1.i; 00554 *g = rgba2.i; 00555 *b = rgba3.i; 00556 *a = rgba4.i; 00557 }
SSP_FORCEINLINE void ssp_convert_4p_4c_epi8_REF | ( | __m128i * | r, | |
__m128i * | g, | |||
__m128i * | b, | |||
__m128i * | a | |||
) |
Definition at line 366 of file SSEPlus_convert_REF.h.
00367 { 00368 int n; 00369 ssp_m128 tr, tg, tb, ta; 00370 ssp_m128 rgba1, rgba2, rgba3, rgba4; 00371 tr.i = *r; 00372 tg.i = *g; 00373 tb.i = *b; 00374 ta.i = *a; 00375 00376 for( n = 0; n < 4; n++ ) 00377 { 00378 rgba1.s8[4*n] = tr.s8[0+n]; 00379 rgba2.s8[4*n] = tr.s8[4+n]; 00380 rgba3.s8[4*n] = tr.s8[8+n]; 00381 rgba4.s8[4*n] = tr.s8[12+n]; 00382 00383 rgba1.s8[4*n+1] = tg.s8[0+n]; 00384 rgba2.s8[4*n+1] = tg.s8[4+n]; 00385 rgba3.s8[4*n+1] = tg.s8[8+n]; 00386 rgba4.s8[4*n+1] = tg.s8[12+n]; 00387 00388 rgba1.s8[4*n+2] = tb.s8[0+n]; 00389 rgba2.s8[4*n+2] = tb.s8[4+n]; 00390 rgba3.s8[4*n+2] = tb.s8[8+n]; 00391 rgba4.s8[4*n+2] = tb.s8[12+n]; 00392 00393 rgba1.s8[4*n+3] = ta.s8[0+n]; 00394 rgba2.s8[4*n+3] = ta.s8[4+n]; 00395 rgba3.s8[4*n+3] = ta.s8[8+n]; 00396 rgba4.s8[4*n+3] = ta.s8[12+n]; 00397 } 00398 00399 *r = rgba1.i; 00400 *g = rgba2.i; 00401 *b = rgba3.i; 00402 *a = rgba4.i; 00403 }
SSP_FORCEINLINE void ssp_convert_reverse_transpose_REF | ( | __m128i * | a, | |
__m128i * | b, | |||
__m128i * | c | |||
) |
Definition at line 19 of file SSEPlus_convert_REF.h.
00020 { 00021 ssp_m128 Ai, Ao, Bi, Bo, Ci, Co; 00022 Ai.i = *a; 00023 Bi.i = *b; 00024 Ci.i = *c; 00025 00026 Ao.u32[ 0 ] = Ai.u32[ 0 ]; 00027 Ao.u32[ 1 ] = Bi.u32[ 0 ]; 00028 Ao.u32[ 2 ] = Ci.u32[ 0 ]; 00029 Ao.u32[ 3 ] = Ai.u32[ 1 ]; 00030 00031 Bo.u32[ 0 ] = Bi.u32[ 1 ]; 00032 Bo.u32[ 1 ] = Ci.u32[ 1 ]; 00033 Bo.u32[ 2 ] = Ai.u32[ 2 ]; 00034 Bo.u32[ 3 ] = Bi.u32[ 2 ]; 00035 00036 Co.u32[ 0 ] = Ci.u32[ 2 ]; 00037 Co.u32[ 1 ] = Ai.u32[ 3 ]; 00038 Co.u32[ 2 ] = Bi.u32[ 3 ]; 00039 Co.u32[ 3 ] = Ci.u32[ 3 ]; 00040 00041 *a = Ao.i; 00042 *b = Bo.i; 00043 *c = Co.i; 00044 }
SSP_FORCEINLINE __m128i ssp_logical_invert_si128_REF | ( | __m128i | a | ) |
__m128i ssp_memory_load1_epu8_REF | ( | unsigned char | a | ) |
Definition at line 36 of file SSEPlus_number_REF.h.
00036 : move into utility collection 00037 { 00038 ssp_f32* retVal = (ssp_f32*)val; 00039 // Check if the value is already a QNaN 00040 if( (*val & 0x00400000) != 0x00400000 ) 00041 { 00042 // Check if the value is + or - infinitie 00043 if( (*val | 0x7F800000) != 0x7F800000 ) 00044 { 00045 // Convert SNan To QNaN 00046 *retVal = (ssp_f32)( *val | 0x00400000 ); 00047 } 00048 } 00049 return *retVal; 00050 }
Definition at line 52 of file SSEPlus_number_REF.h.
00052 : move into utility collection 00053 { 00054 ssp_f64* retVal = (ssp_f64*)val; 00055 // Check if the value is already a QNaN 00056 if( (*val & 0x0008000000000000ll) != 0x0008000000000000ll ) 00057 { 00058 // Check if the value is + or - infinitie 00059 if( (*val | 0x7FF0000000000000ll) != 0x7FF0000000000000ll ) 00060 { 00061 // Convert SNan To QNaN 00062 *retVal = (ssp_f64)( *val | 0x0008000000000000ll ); 00063 } 00064 } 00065 return *retVal; 00066 }
SSP_FORCEINLINE int ssp_number_isValidNumber_F32_REF | ( | ssp_s32 * | val | ) |
Definition at line 15 of file SSEPlus_number_REF.h.
00015 : move into utility collection 00016 { 00017 // Check for NAN, +infin, or -infin (exponent: 111 1111 1) 00018 // Are the exponent bits all 1's? 00019 if( (*val & 0x7F800000) == 0x7F800000 ) 00020 { 00021 return 0; 00022 } 00023 return 1; 00024 }
SSP_FORCEINLINE int ssp_number_isValidNumber_F64_REF | ( | ssp_s64 * | val | ) |
Definition at line 25 of file SSEPlus_number_REF.h.
00025 : move into utility collection 00026 { 00027 // Check for NAN, +infin, or -infin (exponent: 1111 1111) 00028 // Are the exponent bits all 1's? 00029 if( (*val & 0x7FF0000000000000ll) == 0x7FF0000000000000ll ) 00030 { 00031 return 0; 00032 } 00033 return 1; 00034 }
SSP_FORCEINLINE __m128i ssp_slli_epi8_REF | ( | __m128i | a, | |
const int | b | |||
) |
SSP_FORCEINLINE __m128i ssp_srli_epi8_REF | ( | __m128i | a, | |
const int | b | |||
) |