19 __m128d sum1 = _mm_setzero_pd();
20 __m128d sum2 = _mm_setzero_pd();
21 __m128d sum3 = _mm_setzero_pd();
22 __m128d sum4 = _mm_setzero_pd();
35 for(
int i=0; i < n_4spin; i++) {
38 tmp5=_mm_mul_pd(tmp1,tmp1);
39 sum1=_mm_add_pd(sum1,tmp5);
41 tmp2=_mm_load_pd(in+2);
42 tmp6=_mm_mul_pd(tmp2,tmp2);
43 sum2=_mm_add_pd(sum2,tmp6);
45 tmp3=_mm_load_pd(in+4);
46 tmp7=_mm_mul_pd(tmp3,tmp3);
47 sum3=_mm_add_pd(sum3,tmp7);
49 tmp4=_mm_load_pd(in+6);
50 tmp8=_mm_mul_pd(tmp4,tmp4);
51 sum4=_mm_add_pd(sum4,tmp8);
53 tmp1=_mm_load_pd(in+8);
54 tmp5=_mm_mul_pd(tmp1,tmp1);
55 sum1=_mm_add_pd(sum1,tmp5);
57 tmp2=_mm_load_pd(in+10);
58 tmp6=_mm_mul_pd(tmp2,tmp2);
59 sum2=_mm_add_pd(sum2,tmp6);
61 tmp3=_mm_load_pd(in+12);
62 tmp7=_mm_mul_pd(tmp3,tmp3);
63 sum3=_mm_add_pd(sum3,tmp7);
65 tmp4=_mm_load_pd(in+14);
66 tmp8=_mm_mul_pd(tmp4,tmp4);
67 sum4=_mm_add_pd(sum4,tmp8);
69 tmp1=_mm_load_pd(in+16);
70 tmp5=_mm_mul_pd(tmp1,tmp1);
71 sum1=_mm_add_pd(sum1,tmp5);
73 tmp2=_mm_load_pd(in+18);
74 tmp6=_mm_mul_pd(tmp2,tmp2);
75 sum2=_mm_add_pd(sum2,tmp6);
77 tmp3=_mm_load_pd(in+20);
78 tmp7=_mm_mul_pd(tmp3,tmp3);
79 sum3=_mm_add_pd(sum3,tmp7);
81 tmp4=_mm_load_pd(in+22);
82 tmp8=_mm_mul_pd(tmp4,tmp4);
83 sum4=_mm_add_pd(sum4,tmp8);
89 sum1 = _mm_add_pd(sum1,sum2);
90 sum3 = _mm_add_pd(sum3,sum4);
91 sum1 = _mm_add_pd(sum1,sum3);
93 tmp1 = _mm_shuffle_pd(sum1, sum1, 0x1);
94 sum1 = _mm_add_pd(tmp1,sum1);
95 _mm_storel_pd(
sum,sum1);