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
;
14 static data_t A1
[1024], B1
[1024];;
17 end
= ((ncores
== 1) ? 2 :(coreid
+1)) << 9;
21 for (j
=start
; j
< end
; j
+=jStride
) {
32 for ( i
=0; i
< lda
; i
+=2 ) {
33 tempA0
= A
[i
+ jToRow
];
34 tempA1
= A
[i
+1 + jToRow
];
35 tempC0
+= tempA0
* B
[(jToCol
) + (i
<<5)];
36 tempC1
+= tempA0
* B
[(jToCol
+1 ) + (i
<<5)];
37 tempC2
+= tempA0
* B
[(jToCol
+2 ) + (i
<<5)];
38 tempC3
+= tempA0
* B
[(jToCol
+3 ) + (i
<<5)];
39 tempC4
+= tempA0
* B
[(jToCol
+4 ) + (i
<<5)];
40 tempC5
+= tempA0
* B
[(jToCol
+5 ) + (i
<<5)];
41 tempC6
+= tempA0
* B
[(jToCol
+6 ) + (i
<<5)];
42 tempC7
+= tempA0
* B
[(jToCol
+7 ) + (i
<<5)];
43 tempC0
+= tempA1
* B
[(jToCol
) + ((i
+1)<<5)];
44 tempC1
+= tempA1
* B
[(jToCol
+1 ) + ((i
+1)<<5)];
45 tempC2
+= tempA1
* B
[(jToCol
+2 ) + ((i
+1)<<5)];
46 tempC3
+= tempA1
* B
[(jToCol
+3 ) + ((i
+1)<<5)];
47 tempC4
+= tempA1
* B
[(jToCol
+4 ) + ((i
+1)<<5)];
48 tempC5
+= tempA1
* B
[(jToCol
+5 ) + ((i
+1)<<5)];
49 tempC6
+= tempA1
* B
[(jToCol
+6 ) + ((i
+1)<<5)];
50 tempC7
+= tempA1
* B
[(jToCol
+7 ) + ((i
+1)<<5)];
63 for (i
= 0; i
< 1024; i
++) {
67 for (j
=start
; j
< end
; j
+=jStride
) {
78 for ( i
=0; i
< lda
; i
+=2 ) {
79 tempA0
= A1
[i
+ jToRow
];
80 tempA1
= A1
[i
+1 + jToRow
];
81 tempC0
+= tempA0
* B1
[(jToCol
) + (i
<<5)];
82 tempC1
+= tempA0
* B1
[(jToCol
+1 ) + (i
<<5)];
83 tempC2
+= tempA0
* B1
[(jToCol
+2 ) + (i
<<5)];
84 tempC3
+= tempA0
* B1
[(jToCol
+3 ) + (i
<<5)];
85 tempC4
+= tempA0
* B1
[(jToCol
+4 ) + (i
<<5)];
86 tempC5
+= tempA0
* B1
[(jToCol
+5 ) + (i
<<5)];
87 tempC6
+= tempA0
* B1
[(jToCol
+6 ) + (i
<<5)];
88 tempC7
+= tempA0
* B1
[(jToCol
+7 ) + (i
<<5)];
89 tempC0
+= tempA1
* B1
[(jToCol
) + ((i
+1)<<5)];
90 tempC1
+= tempA1
* B1
[(jToCol
+1 ) + ((i
+1)<<5)];
91 tempC2
+= tempA1
* B1
[(jToCol
+2 ) + ((i
+1)<<5)];
92 tempC3
+= tempA1
* B1
[(jToCol
+3 ) + ((i
+1)<<5)];
93 tempC4
+= tempA1
* B1
[(jToCol
+4 ) + ((i
+1)<<5)];
94 tempC5
+= tempA1
* B1
[(jToCol
+5 ) + ((i
+1)<<5)];
95 tempC6
+= tempA1
* B1
[(jToCol
+6 ) + ((i
+1)<<5)];
96 tempC7
+= tempA1
* B1
[(jToCol
+7 ) + ((i
+1)<<5)];