36 __m128d sum1 = _mm_setzero_pd();
37 __m128d sum2 = _mm_setzero_pd();
38 __m128d sum3 = _mm_setzero_pd();
39 __m128d sum4 = _mm_setzero_pd();
57 for(
int i=0; i < n_4spin; i++) {
59 tmp1 = _mm_load_pd(x_p);
60 tmp2 = _mm_load_pd(y_p);
61 tmp3 = _mm_mul_pd(tmp1,tmp2);
62 sum1 = _mm_add_pd(sum1,tmp3);
65 tmp4 = _mm_load_pd(x_p+2);
66 tmp5 = _mm_load_pd(y_p+2);
67 tmp6 = _mm_mul_pd(tmp4,tmp5);
68 sum2 = _mm_add_pd(sum2,tmp6);
70 tmp7 = _mm_load_pd(x_p+4);
71 tmp8 = _mm_load_pd(y_p+4);
72 tmp9 = _mm_mul_pd(tmp7,tmp8);
73 sum3 = _mm_add_pd(sum3,tmp9);
75 tmp10 = _mm_load_pd(x_p+6);
76 tmp11 = _mm_load_pd(y_p+6);
77 tmp12 = _mm_mul_pd(tmp10,tmp11);
78 sum4 = _mm_add_pd(sum4,tmp12);
82 tmp1 = _mm_load_pd(x_p+8);
83 tmp2 = _mm_load_pd(y_p+8);
84 tmp3 = _mm_mul_pd(tmp1,tmp2);
85 sum1 = _mm_add_pd(sum1,tmp3);
87 tmp4 = _mm_load_pd(x_p+10);
88 tmp5 = _mm_load_pd(y_p+10);
89 tmp6 = _mm_mul_pd(tmp4,tmp5);
90 sum2 = _mm_add_pd(sum2,tmp6);
92 tmp7 = _mm_load_pd(x_p+12);
93 tmp8 = _mm_load_pd(y_p+12);
94 tmp9 = _mm_mul_pd(tmp7,tmp8);
95 sum3 = _mm_add_pd(sum3,tmp9);
97 tmp10 = _mm_load_pd(x_p+14);
98 tmp11 = _mm_load_pd(y_p+14);
99 tmp12 = _mm_mul_pd(tmp10,tmp11);
100 sum4 = _mm_add_pd(sum4,tmp12);
104 tmp1 = _mm_load_pd(x_p+16);
105 tmp2 = _mm_load_pd(y_p+16);
106 tmp3 = _mm_mul_pd(tmp1,tmp2);
107 sum1 = _mm_add_pd(sum1,tmp3);
109 tmp4 = _mm_load_pd(x_p+18);
110 tmp5 = _mm_load_pd(y_p+18);
111 tmp6 = _mm_mul_pd(tmp4,tmp5);
112 sum2 = _mm_add_pd(sum2,tmp6);
114 tmp7 = _mm_load_pd(x_p+20);
115 tmp8 = _mm_load_pd(y_p+20);
116 tmp9 = _mm_mul_pd(tmp7,tmp8);
117 sum3 = _mm_add_pd(sum3,tmp9);
119 tmp10 = _mm_load_pd(x_p+22);
120 tmp11 = _mm_load_pd(y_p+22);
121 tmp12 = _mm_mul_pd(tmp10,tmp11);
122 sum4 = _mm_add_pd(sum4,tmp12);
129 sum1 = _mm_add_pd(sum1,sum2);
130 sum3 = _mm_add_pd(sum3,sum4);
133 sum1 = _mm_add_pd(sum1,sum3);
136 tmp1 = _mm_shuffle_pd(sum1, sum1, 0x1);
137 sum1 = _mm_add_pd(tmp1,sum1);
140 _mm_storeh_pd(
sum,sum1);