3
#include "atlas_misc.h"
6
(const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc)
9
/*--- achitecture specific declarations ---*/
11
/*--- program specific declarations ---*/
14
vector zerovec = {0.0,0.0,0.0,0.0};
18
float *pC1 = C+(ldc SHIFT);
19
const float *stM = A + M*KB;
20
const float *stN = B + NB*KB;
21
const int incAm = 1*KB-KB+56;
22
const int incBm = -KB+56;
23
const int incCm = 1 SHIFT;
24
const int incAn = -M*KB;
25
const int incBn = 2*KB;
26
const int incCn = (ldc*2-M)SHIFT;
28
/*--- initial arhitecture specific statements ---*/
31
/*--- main program statements ---*/
32
vec_mov_mr_1(&beta,reg0);
33
vec_mov_rm(reg0,&betavec);
39
vec_mov_mr(zerovec,reg7);
40
vec_mov_rr(reg7,reg0);
41
vec_mov_rr(reg7,reg1);
43
vec_mov_mr_1(pC0,reg0);
44
vec_mov_mr_1(pC1,reg1);
46
vec_mov_mr(betavec,reg7);
47
vec_mov_mr_1(pC0,reg0);
48
vec_mul_rr(reg7,reg0);
49
vec_mov_mr_1(pC1,reg1);
50
vec_mul_rr(reg7,reg1);
52
vec_mov_mr_a(pA0,reg6);
53
vec_mov_mr_a(pB0,reg2);
54
vec_mov_mr_a(pB0+KB,reg3);
55
vec_mul_rr(reg6,reg2);
56
vec_add_rr(reg2,reg0);
57
vec_mov_mr_a(pB0+4,reg4);
58
vec_mul_rr(reg6,reg3);
59
vec_add_rr(reg3,reg1);
60
vec_mov_mr_a(pA0+4,reg6);
61
vec_mov_mr_a(pB0+4+KB,reg5);
62
vec_mul_rr(reg6,reg4);
63
vec_add_rr(reg4,reg0);
64
vec_mov_mr_a(pB0+8,reg2);
65
vec_mul_rr(reg6,reg5);
66
vec_add_rr(reg5,reg1);
67
vec_mov_mr_a(pA0+8,reg6);
68
vec_mov_mr_a(pB0+8+KB,reg3);
69
vec_mul_rr(reg6,reg2);
70
vec_add_rr(reg2,reg0);
71
vec_mov_mr_a(pB0+12,reg4);
72
vec_mul_rr(reg6,reg3);
73
vec_add_rr(reg3,reg1);
74
vec_mov_mr_a(pA0+12,reg6);
75
vec_mov_mr_a(pB0+12+KB,reg5);
76
vec_mul_rr(reg6,reg4);
77
vec_add_rr(reg4,reg0);
78
vec_mov_mr_a(pB0+16,reg2);
79
vec_mul_rr(reg6,reg5);
80
vec_add_rr(reg5,reg1);
81
vec_mov_mr_a(pA0+16,reg6);
82
vec_mov_mr_a(pB0+16+KB,reg3);
83
vec_mul_rr(reg6,reg2);
84
vec_add_rr(reg2,reg0);
85
vec_mov_mr_a(pB0+20,reg4);
86
vec_mul_rr(reg6,reg3);
87
vec_add_rr(reg3,reg1);
88
vec_mov_mr_a(pA0+20,reg6);
89
vec_mov_mr_a(pB0+20+KB,reg5);
90
vec_mul_rr(reg6,reg4);
91
vec_add_rr(reg4,reg0);
92
vec_mov_mr_a(pB0+24,reg2);
93
vec_mul_rr(reg6,reg5);
94
vec_add_rr(reg5,reg1);
95
vec_mov_mr_a(pA0+24,reg6);
96
vec_mov_mr_a(pB0+24+KB,reg3);
97
vec_mul_rr(reg6,reg2);
98
vec_add_rr(reg2,reg0);
99
vec_mov_mr_a(pB0+28,reg4);
100
vec_mul_rr(reg6,reg3);
101
vec_add_rr(reg3,reg1);
102
vec_mov_mr_a(pA0+28,reg6);
103
vec_mov_mr_a(pB0+28+KB,reg5);
104
vec_mul_rr(reg6,reg4);
105
vec_add_rr(reg4,reg0);
106
vec_mov_mr_a(pB0+32,reg2);
107
vec_mul_rr(reg6,reg5);
108
vec_add_rr(reg5,reg1);
109
vec_mov_mr_a(pA0+32,reg6);
110
vec_mov_mr_a(pB0+32+KB,reg3);
111
vec_mul_rr(reg6,reg2);
112
vec_add_rr(reg2,reg0);
113
vec_mov_mr_a(pB0+36,reg4);
114
vec_mul_rr(reg6,reg3);
115
vec_add_rr(reg3,reg1);
116
vec_mov_mr_a(pA0+36,reg6);
117
vec_mov_mr_a(pB0+36+KB,reg5);
118
vec_mul_rr(reg6,reg4);
119
vec_add_rr(reg4,reg0);
120
vec_mov_mr_a(pB0+40,reg2);
121
vec_mul_rr(reg6,reg5);
122
vec_add_rr(reg5,reg1);
123
vec_mov_mr_a(pA0+40,reg6);
124
vec_mov_mr_a(pB0+40+KB,reg3);
125
vec_mul_rr(reg6,reg2);
126
vec_add_rr(reg2,reg0);
127
vec_mov_mr_a(pB0+44,reg4);
128
vec_mul_rr(reg6,reg3);
129
vec_add_rr(reg3,reg1);
130
vec_mov_mr_a(pA0+44,reg6);
131
vec_mov_mr_a(pB0+44+KB,reg5);
132
vec_mul_rr(reg6,reg4);
133
vec_add_rr(reg4,reg0);
134
vec_mov_mr_a(pB0+48,reg2);
135
vec_mul_rr(reg6,reg5);
136
vec_add_rr(reg5,reg1);
137
vec_mov_mr_a(pA0+48,reg6);
138
vec_mov_mr_a(pB0+48+KB,reg3);
139
vec_mul_rr(reg6,reg2);
140
vec_add_rr(reg2,reg0);
141
vec_mov_mr_a(pB0+52,reg2);
142
vec_mul_rr(reg6,reg3);
143
vec_add_rr(reg3,reg1);
144
vec_mov_mr_a(pA0+52,reg6);
145
vec_mov_mr_a(pB0+52+KB,reg3);
146
vec_mul_rr(reg6,reg2);
147
vec_add_rr(reg2,reg0);
148
vec_mul_rr(reg6,reg3);
149
vec_add_rr(reg3,reg1);
152
vec_mov_rm_1(reg0,pC0);
153
vec_mov_rm_1(reg1,pC1);