~ubuntu-branches/ubuntu/vivid/atlas/vivid

« back to all changes in this revision

Viewing changes to tune/blas/gemm/CASES/ATL_mm_sse1_32K.c

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2002-04-13 10:07:52 UTC
  • Revision ID: james.westby@ubuntu.com-20020413100752-va9zm0rd4gpurdkq
Tags: upstream-3.2.1ln
ImportĀ upstreamĀ versionĀ 3.2.1ln

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#define SSE
 
2
#include "SSE3Dnow.h"
 
3
#include "atlas_misc.h"
 
4
 
 
5
void ATL_USERMM
 
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)
 
7
 
 
8
{
 
9
   /*--- achitecture specific declarations ---*/
 
10
 
 
11
   /*--- program specific declarations ---*/
 
12
   int i, j, k;
 
13
   vector betavec;
 
14
   vector zerovec = {0.0,0.0,0.0,0.0};
 
15
   const float *pA0 = A;
 
16
   const float *pB0 = B;
 
17
   float *pC0 = C;
 
18
   const float *stM = A + MB*KB;
 
19
   const float *stN = B + N*KB;
 
20
   const int incAm = 2*KB-KB+32;
 
21
   const int incBm = -KB+32;
 
22
   const int incCm = 2 SHIFT;
 
23
   const int incAn = -MB*KB;
 
24
   const int incBn = 1*KB;
 
25
   const int incCn = (ldc*1-MB)SHIFT;
 
26
 
 
27
   /*--- initial arhitecture specific statements ---*/
 
28
   vec_enter();
 
29
 
 
30
   /*--- main program statements ---*/
 
31
   vec_mov_mr_1(&beta,reg0);
 
32
   vec_mov_rm(reg0,&betavec);
 
33
   while(pB0 != stN)
 
34
   {
 
35
      do /* M-loop */
 
36
      {
 
37
#ifdef BETA0
 
38
         vec_mov_mr(zerovec,reg7);
 
39
         vec_mov_rr(reg7,reg0);
 
40
         vec_mov_rr(reg7,reg1);
 
41
#elif defined(BETA1)
 
42
         vec_mov_mr_1(pC0,reg0);
 
43
         vec_mov_mr_1(pC0+(1 SHIFT),reg1);
 
44
#else
 
45
         vec_mov_mr(betavec,reg7);
 
46
         vec_mov_mr_1(pC0,reg0);
 
47
         vec_mul_rr(reg7,reg0);
 
48
         vec_mov_mr_1(pC0+(1 SHIFT),reg1);
 
49
         vec_mul_rr(reg7,reg1);
 
50
#endif
 
51
         vec_mov_mr_a(pB0,reg6);
 
52
         vec_mov_mr_a(pA0,reg2);
 
53
         vec_mov_mr_a(pA0+KB,reg3);
 
54
         vec_mul_rr(reg6,reg2);
 
55
         vec_add_rr(reg2,reg0);
 
56
         vec_mov_mr_a(pA0+4,reg4);
 
57
         vec_mul_rr(reg6,reg3);
 
58
         vec_add_rr(reg3,reg1);
 
59
         vec_mov_mr_a(pB0+4,reg7);
 
60
         vec_mov_mr_a(pA0+4+KB,reg5);
 
61
         vec_mul_rr(reg7,reg4);
 
62
         vec_add_rr(reg4,reg0);
 
63
         vec_mov_mr_a(pA0+8,reg2);
 
64
         vec_mul_rr(reg7,reg5);
 
65
         vec_add_rr(reg5,reg1);
 
66
         vec_mov_mr_a(pB0+8,reg6);
 
67
         vec_mov_mr_a(pA0+8+KB,reg3);
 
68
         vec_mul_rr(reg6,reg2);
 
69
         vec_add_rr(reg2,reg0);
 
70
         vec_mov_mr_a(pA0+12,reg4);
 
71
         vec_mul_rr(reg6,reg3);
 
72
         vec_add_rr(reg3,reg1);
 
73
         vec_mov_mr_a(pB0+12,reg7);
 
74
         vec_mov_mr_a(pA0+12+KB,reg5);
 
75
         vec_mul_rr(reg7,reg4);
 
76
         vec_add_rr(reg4,reg0);
 
77
         vec_mov_mr_a(pA0+16,reg2);
 
78
         vec_mul_rr(reg7,reg5);
 
79
         vec_add_rr(reg5,reg1);
 
80
         vec_mov_mr_a(pB0+16,reg6);
 
81
         vec_mov_mr_a(pA0+16+KB,reg3);
 
82
         vec_mul_rr(reg6,reg2);
 
83
         vec_add_rr(reg2,reg0);
 
84
         vec_mov_mr_a(pA0+20,reg4);
 
85
         vec_mul_rr(reg6,reg3);
 
86
         vec_add_rr(reg3,reg1);
 
87
         vec_mov_mr_a(pB0+20,reg7);
 
88
         vec_mov_mr_a(pA0+20+KB,reg5);
 
89
         vec_mul_rr(reg7,reg4);
 
90
         vec_add_rr(reg4,reg0);
 
91
         vec_mov_mr_a(pA0+24,reg2);
 
92
         vec_mul_rr(reg7,reg5);
 
93
         vec_add_rr(reg5,reg1);
 
94
         vec_mov_mr_a(pB0+24,reg6);
 
95
         vec_mov_mr_a(pA0+24+KB,reg3);
 
96
         vec_mul_rr(reg6,reg2);
 
97
         vec_add_rr(reg2,reg0);
 
98
         vec_mov_mr_a(pA0+28,reg2);
 
99
         vec_mul_rr(reg6,reg3);
 
100
         vec_add_rr(reg3,reg1);
 
101
         vec_mov_mr_a(pB0+28,reg6);
 
102
         vec_mov_mr_a(pA0+28+KB,reg3);
 
103
         vec_mul_rr(reg6,reg2);
 
104
         vec_add_rr(reg2,reg0);
 
105
         vec_mul_rr(reg6,reg3);
 
106
         vec_add_rr(reg3,reg1);
 
107
         vec_sum(reg0);
 
108
         vec_sum(reg1);
 
109
         vec_mov_rm_1(reg0,pC0);
 
110
         vec_mov_rm_1(reg1,pC0+(1 SHIFT));
 
111
         pA0 += incAm;
 
112
         pB0 += incBm;
 
113
         pC0 += incCm;
 
114
      }
 
115
      while(pA0 != stM);
 
116
 
 
117
      pA0 += incAn;
 
118
      pB0 += incBn;
 
119
      pC0 += incCn;
 
120
   }
 
121
 
 
122
   vec_exit();
 
123
}