6 void __attribute__((noinline
)) matmul(const int coreid
, const int ncores
, const int lda
, const data_t A
[], const data_t B
[], data_t C
[] )
9 static __thread
int i
, j
, k
;
10 static __thread data_t tempA0
, tempA1
, tempA2
, tempA3
, tempA4
, tempA5
, tempA6
, tempA7
;
11 static __thread data_t tempC0
, tempC1
, tempC2
, tempC3
, tempC4
, tempC5
, tempC6
, tempC7
, tempC8
, tempC9
, tempC10
, tempC11
, tempC12
, tempC13
, tempC14
, tempC15
;
13 static __thread
int start
, end
, jStride
, jToRow
, jToCol
;
16 end
= ((ncores
== 1) ? 2 : (coreid
+1) ) << 9;
19 for (j
=start
; j
< end
; j
+=jStride
) {
30 for ( i
=0; i
< lda
; i
+=2 ) {
31 tempA0
= A
[i
+ jToRow
];
32 tempA1
= A
[i
+1 + jToRow
];
33 tempC0
+= tempA0
* B
[(jToCol
) + (i
<<5)];
34 tempC1
+= tempA0
* B
[(jToCol
+1 ) + (i
<<5)];
35 tempC2
+= tempA0
* B
[(jToCol
+2 ) + (i
<<5)];
36 tempC3
+= tempA0
* B
[(jToCol
+3 ) + (i
<<5)];
37 tempC4
+= tempA0
* B
[(jToCol
+4 ) + (i
<<5)];
38 tempC5
+= tempA0
* B
[(jToCol
+5 ) + (i
<<5)];
39 tempC6
+= tempA0
* B
[(jToCol
+6 ) + (i
<<5)];
40 tempC7
+= tempA0
* B
[(jToCol
+7 ) + (i
<<5)];
41 tempC0
+= tempA1
* B
[(jToCol
) + ((i
+1)<<5)];
42 tempC1
+= tempA1
* B
[(jToCol
+1 ) + ((i
+1)<<5)];
43 tempC2
+= tempA1
* B
[(jToCol
+2 ) + ((i
+1)<<5)];
44 tempC3
+= tempA1
* B
[(jToCol
+3 ) + ((i
+1)<<5)];
45 tempC4
+= tempA1
* B
[(jToCol
+4 ) + ((i
+1)<<5)];
46 tempC5
+= tempA1
* B
[(jToCol
+5 ) + ((i
+1)<<5)];
47 tempC6
+= tempA1
* B
[(jToCol
+6 ) + ((i
+1)<<5)];
48 tempC7
+= tempA1
* B
[(jToCol
+7 ) + ((i
+1)<<5)];