43 for(
int i=0; i < n_mat; i++) {
44 tmp1= _mm_loadu_pd(m1_p);
45 tmp2= _mm_loadu_pd(m2_p);
46 tmp3 = _mm_add_pd(tmp1,tmp2);
47 _mm_storeu_pd(m2_p, tmp3);
49 tmp4= _mm_loadu_pd(m1_p+2);
50 tmp5= _mm_loadu_pd(m2_p+2);
51 tmp6 = _mm_add_pd(tmp4,tmp5);
52 _mm_storeu_pd(m2_p+2, tmp6);
54 tmp7= _mm_loadu_pd(m1_p+4);
55 tmp8= _mm_loadu_pd(m2_p+4);
56 tmp9 = _mm_add_pd(tmp7,tmp8);
57 _mm_storeu_pd(m2_p+4, tmp9);
59 tmp10= _mm_loadu_pd(m1_p+6);
60 tmp11= _mm_loadu_pd(m2_p+6);
61 tmp12 = _mm_add_pd(tmp10,tmp11);
62 _mm_storeu_pd(m2_p+6, tmp12);
64 tmp13= _mm_loadu_pd(m1_p+8);
65 tmp14= _mm_loadu_pd(m2_p+8);
66 tmp15 = _mm_add_pd(tmp13,tmp14);
67 _mm_storeu_pd(m2_p+8, tmp15);
69 tmp1= _mm_loadu_pd(m1_p+10);
70 tmp2= _mm_loadu_pd(m2_p+10);
71 tmp3 = _mm_add_pd(tmp1,tmp2);
72 _mm_storeu_pd(m2_p+10, tmp3);
74 tmp4= _mm_loadu_pd(m1_p+12);
75 tmp5= _mm_loadu_pd(m2_p+12);
76 tmp6 = _mm_add_pd(tmp4,tmp5);
77 _mm_storeu_pd(m2_p+12, tmp6);
79 tmp7= _mm_loadu_pd(m1_p+14);
80 tmp8= _mm_loadu_pd(m2_p+14);
81 tmp9 = _mm_add_pd(tmp7,tmp8);
82 _mm_storeu_pd(m2_p+14, tmp9);
84 tmp10= _mm_loadu_pd(m1_p+16);
85 tmp11= _mm_loadu_pd(m2_p+16);
86 tmp12 = _mm_add_pd(tmp10,tmp11);
87 _mm_storeu_pd(m2_p+16, tmp12);
117 for(
int i=0; i < n_mat; i++) {
118 tmp1= _mm_loadu_pd(m1_p);
119 tmp2= _mm_loadu_pd(m2_p);
120 tmp3 = _mm_sub_pd(tmp2,tmp1);
121 _mm_storeu_pd(m2_p, tmp3);
123 tmp4= _mm_loadu_pd(m1_p+2);
124 tmp5= _mm_loadu_pd(m2_p+2);
125 tmp6 = _mm_sub_pd(tmp5,tmp4);
126 _mm_storeu_pd(m2_p+2, tmp6);
128 tmp7= _mm_loadu_pd(m1_p+4);
129 tmp8= _mm_loadu_pd(m2_p+4);
130 tmp9 = _mm_sub_pd(tmp8,tmp7);
131 _mm_storeu_pd(m2_p+4, tmp9);
133 tmp10= _mm_loadu_pd(m1_p+6);
134 tmp11= _mm_loadu_pd(m2_p+6);
135 tmp12 = _mm_sub_pd(tmp11,tmp10);
136 _mm_storeu_pd(m2_p+6, tmp12);
138 tmp13= _mm_loadu_pd(m1_p+8);
139 tmp14= _mm_loadu_pd(m2_p+8);
140 tmp15 = _mm_sub_pd(tmp14,tmp13);
141 _mm_storeu_pd(m2_p+8, tmp15);
143 tmp1= _mm_loadu_pd(m1_p+10);
144 tmp2= _mm_loadu_pd(m2_p+10);
145 tmp3 = _mm_sub_pd(tmp2,tmp1);
146 _mm_storeu_pd(m2_p+10, tmp3);
148 tmp4= _mm_loadu_pd(m1_p+12);
149 tmp5= _mm_loadu_pd(m2_p+12);
150 tmp6 = _mm_sub_pd(tmp5,tmp4);
151 _mm_storeu_pd(m2_p+12, tmp6);
153 tmp7= _mm_loadu_pd(m1_p+14);
154 tmp8= _mm_loadu_pd(m2_p+14);
155 tmp9 = _mm_sub_pd(tmp8,tmp7);
156 _mm_storeu_pd(m2_p+14, tmp9);
158 tmp10= _mm_loadu_pd(m1_p+16);
159 tmp11= _mm_loadu_pd(m2_p+16);
160 tmp12 = _mm_sub_pd(tmp11,tmp10);
161 _mm_storeu_pd(m2_p+16, tmp12);
163 m1_p += 18; m2_p+=18;
171 __m128d mfact = _mm_set_pd( (
REAL64)(-1), (
REAL64)(1) );
194 for(
int i=0; i < n_mat; i++) {
196 m1_11= _mm_loadu_pd(m1_p);
197 m1_12= _mm_loadu_pd(m1_p+2);
198 m1_13= _mm_loadu_pd(m1_p+4);
199 m1_21= _mm_loadu_pd(m1_p+6);
200 m1_22= _mm_loadu_pd(m1_p+8);
201 m1_23= _mm_loadu_pd(m1_p+10);
202 m1_31= _mm_loadu_pd(m1_p+12);
203 m1_32= _mm_loadu_pd(m1_p+14);
204 m1_33= _mm_loadu_pd(m1_p+16);
206 tmp1 = _mm_loadu_pd(m2_p);
207 tmp2 = _mm_mul_pd(mfact, m1_11);
208 tmp3 = _mm_add_pd(tmp1, tmp2);
209 _mm_storeu_pd(m2_p, tmp3);
211 tmp4 = _mm_loadu_pd(m2_p+2);
212 tmp5 = _mm_mul_pd(mfact, m1_21);
213 tmp6 = _mm_add_pd(tmp4, tmp5);
214 _mm_storeu_pd(m2_p+2,tmp6);
216 tmp1 = _mm_loadu_pd(m2_p+4);
217 tmp2 = _mm_mul_pd(mfact, m1_31);
218 tmp3 = _mm_add_pd(tmp1, tmp2);
219 _mm_storeu_pd(m2_p+4, tmp3);
221 tmp4 = _mm_loadu_pd(m2_p+6);
222 tmp5 = _mm_mul_pd(mfact, m1_12);
223 tmp6 = _mm_add_pd(tmp4, tmp5);
224 _mm_storeu_pd(m2_p+6, tmp6);
227 tmp1 = _mm_loadu_pd(m2_p+8);
228 tmp2 = _mm_mul_pd(mfact, m1_22);
229 tmp3 = _mm_add_pd(tmp1, tmp2);
230 _mm_storeu_pd(m2_p+8, tmp3);
232 tmp4 = _mm_loadu_pd(m2_p+10);
233 tmp5 = _mm_mul_pd(mfact, m1_32);
234 tmp6 = _mm_add_pd(tmp4, tmp5);
235 _mm_storeu_pd(m2_p+10,tmp6);
237 tmp4 = _mm_loadu_pd(m2_p+12);
238 tmp5 = _mm_mul_pd(mfact, m1_13);
239 tmp6 = _mm_add_pd(tmp4, tmp5);
240 _mm_storeu_pd(m2_p+12, tmp6);
243 tmp1 = _mm_loadu_pd(m2_p+14);
244 tmp2 = _mm_mul_pd(mfact, m1_23);
245 tmp3 = _mm_add_pd(tmp1, tmp2);
246 _mm_storeu_pd(m2_p+14, tmp3);
248 tmp4 = _mm_loadu_pd(m2_p+16);
249 tmp5 = _mm_mul_pd(mfact, m1_33);
250 tmp6 = _mm_add_pd(tmp4, tmp5);
251 _mm_storeu_pd(m2_p+16, tmp6);
253 m1_p += 18; m2_p+=18;
284 for(
int i=0; i < n_mat; i++) {
286 m1_11= _mm_loadu_pd(m1_p);
287 m1_12= _mm_loadu_pd(m1_p+2);
288 m1_13= _mm_loadu_pd(m1_p+4);
289 m1_21= _mm_loadu_pd(m1_p+6);
290 m1_22= _mm_loadu_pd(m1_p+8);
291 m1_23= _mm_loadu_pd(m1_p+10);
292 m1_31= _mm_loadu_pd(m1_p+12);
293 m1_32= _mm_loadu_pd(m1_p+14);
294 m1_33= _mm_loadu_pd(m1_p+16);
296 tmp1 = _mm_loadu_pd(m2_p);
297 tmp2 = _mm_mul_pd(mfact, m1_11);
298 tmp3 = _mm_sub_pd(tmp1, tmp2);
299 _mm_storeu_pd(m2_p, tmp3);
301 tmp4 = _mm_loadu_pd(m2_p+2);
302 tmp5 = _mm_mul_pd(mfact, m1_21);
303 tmp6 = _mm_sub_pd(tmp4, tmp5);
304 _mm_storeu_pd(m2_p+2,tmp6);
306 tmp1 = _mm_loadu_pd(m2_p+4);
307 tmp2 = _mm_mul_pd(mfact, m1_31);
308 tmp3 = _mm_sub_pd(tmp1, tmp2);
309 _mm_storeu_pd(m2_p+4, tmp3);
311 tmp4 = _mm_loadu_pd(m2_p+6);
312 tmp5 = _mm_mul_pd(mfact, m1_12);
313 tmp6 = _mm_sub_pd(tmp4, tmp5);
314 _mm_storeu_pd(m2_p+6, tmp6);
317 tmp1 = _mm_loadu_pd(m2_p+8);
318 tmp2 = _mm_mul_pd(mfact, m1_22);
319 tmp3 = _mm_sub_pd(tmp1, tmp2);
320 _mm_storeu_pd(m2_p+8, tmp3);
322 tmp4 = _mm_loadu_pd(m2_p+10);
323 tmp5 = _mm_mul_pd(mfact, m1_32);
324 tmp6 = _mm_sub_pd(tmp4, tmp5);
325 _mm_storeu_pd(m2_p+10,tmp6);
327 tmp4 = _mm_loadu_pd(m2_p+12);
328 tmp5 = _mm_mul_pd(mfact, m1_13);
329 tmp6 = _mm_sub_pd(tmp4, tmp5);
330 _mm_storeu_pd(m2_p+12, tmp6);
333 tmp1 = _mm_loadu_pd(m2_p+14);
334 tmp2 = _mm_mul_pd(mfact, m1_23);
335 tmp3 = _mm_sub_pd(tmp1, tmp2);
336 _mm_storeu_pd(m2_p+14, tmp3);
338 tmp4 = _mm_loadu_pd(m2_p+16);
339 tmp5 = _mm_mul_pd(mfact, m1_33);
340 tmp6 = _mm_sub_pd(tmp4, tmp5);
341 _mm_storeu_pd(m2_p+16, tmp6);
343 m1_p += 18; m2_p+=18;