// SIMD-Header einbinden #ifdef __INTEL_COMPILER # include // enthält auch xmmintrin.h #else # include #endif typedef union{ __m128 m; float f[4]; } vector; // Skalarprodukt mit Intrisics berechnen: float skalarproduktIntrinsics(float x[], float y[]) { __m128 *vecX = (__m128 *)x; __m128 *vecY = (__m128 *)y; vector tmp; tmp.m = _mm_mul_ps(vecX[0],vecY[0]); return tmp.f[0] + tmp.f[1] + tmp.f[2] + tmp.f[3]; } // Skalarprodukt mit F32vec4 berechnen: float skalarproduktSSE(float x[], float y[]) { F32vec4 *vecX = (F32vec4 *)x; F32vec4 *vecY = (F32vec4 *)y; F32vec4 tmp; tmp = vecX[0] * vecY[0]; return tmp[0] + tmp[1] + tmp[2] + tmp[3]; }