OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [ada/] [i-forbla.ads] - Blame information for rev 384

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 281 jeremybenn
------------------------------------------------------------------------------
2
--                                                                          --
3
--                         GNAT RUN-TIME COMPONENTS                         --
4
--                                                                          --
5
--               I N T E R F A C E S . F O R T R A N . B L A S              --
6
--                                                                          --
7
--                                 S p e c                                  --
8
--                                                                          --
9
--         Copyright (C) 2006-2009, Free Software Foundation, Inc.          --
10
--                                                                          --
11
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12
-- terms of the  GNU General Public License as published  by the Free Soft- --
13
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16
-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
17
--                                                                          --
18
-- As a special exception under Section 7 of GPL version 3, you are granted --
19
-- additional permissions described in the GCC Runtime Library Exception,   --
20
-- version 3.1, as published by the Free Software Foundation.               --
21
--                                                                          --
22
-- You should have received a copy of the GNU General Public License and    --
23
-- a copy of the GCC Runtime Library Exception along with this program;     --
24
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25
-- <http://www.gnu.org/licenses/>.                                          --
26
--                                                                          --
27
-- GNAT was originally developed  by the GNAT team at  New York University. --
28
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
29
--                                                                          --
30
------------------------------------------------------------------------------
31
 
32
--  This package provides a thin binding to the standard Fortran BLAS library.
33
--  Documentation and a reference BLAS implementation is available from
34
--  ftp://ftp.netlib.org. The main purpose of this package is to facilitate
35
--  implementation of the Ada 2005 Ada.Numerics.Generic_Real_Arrays and
36
--  Ada.Numerics.Generic_Complex_Arrays packages. Bindings to other BLAS
37
--  routines may be added over time.
38
 
39
--  As actual linker arguments to link with the BLAS implementation differs
40
--  according to platform and chosen BLAS implementation, the linker arguments
41
--  are given in the body of this package. The body may need to be modified in
42
--  order to link with different BLAS implementations tuned to the specific
43
--  target.
44
 
45
package Interfaces.Fortran.BLAS is
46
   pragma Pure;
47
   pragma Elaborate_Body;
48
 
49
   No_Trans   : aliased constant Character := 'N';
50
   Trans      : aliased constant Character := 'T';
51
   Conj_Trans : aliased constant Character := 'C';
52
 
53
   --  Vector types
54
 
55
   type Real_Vector is array (Integer range <>) of Real;
56
 
57
   type Complex_Vector is array (Integer range <>) of Complex;
58
 
59
   type Double_Precision_Vector is array (Integer range <>)
60
     of Double_Precision;
61
 
62
   type Double_Complex_Vector is array (Integer range <>) of Double_Complex;
63
 
64
   --  Matrix types
65
 
66
   type Real_Matrix is array (Integer range <>, Integer range <>)
67
     of Real;
68
 
69
   type Double_Precision_Matrix is array (Integer range <>, Integer range <>)
70
     of Double_Precision;
71
 
72
   type Complex_Matrix is array (Integer range <>, Integer range <>)
73
     of Complex;
74
 
75
   type Double_Complex_Matrix is array (Integer range <>, Integer range <>)
76
     of Double_Complex;
77
 
78
   --  BLAS Level 1
79
 
80
   function sdot
81
     (N     : Positive;
82
      X     : Real_Vector;
83
      Inc_X : Integer := 1;
84
      Y     : Real_Vector;
85
      Inc_Y : Integer := 1) return Real;
86
 
87
   function ddot
88
     (N     : Positive;
89
      X     : Double_Precision_Vector;
90
      Inc_X : Integer := 1;
91
      Y     : Double_Precision_Vector;
92
      Inc_Y : Integer := 1) return Double_Precision;
93
 
94
   function cdotu
95
     (N     : Positive;
96
      X     : Complex_Vector;
97
      Inc_X : Integer := 1;
98
      Y     : Complex_Vector;
99
      Inc_Y : Integer := 1) return Complex;
100
 
101
   function zdotu
102
     (N     : Positive;
103
      X     : Double_Complex_Vector;
104
      Inc_X : Integer := 1;
105
      Y     : Double_Complex_Vector;
106
      Inc_Y : Integer := 1) return Double_Complex;
107
 
108
   function snrm2
109
     (N     : Natural;
110
      X     : Real_Vector;
111
      Inc_X : Integer := 1) return Real;
112
 
113
   function dnrm2
114
     (N     : Natural;
115
      X     : Double_Precision_Vector;
116
      Inc_X : Integer := 1) return Double_Precision;
117
 
118
   function scnrm2
119
     (N     : Natural;
120
      X     : Complex_Vector;
121
      Inc_X : Integer := 1) return Real;
122
 
123
   function dznrm2
124
     (N     : Natural;
125
      X     : Double_Complex_Vector;
126
      Inc_X : Integer := 1) return Double_Precision;
127
 
128
   --  BLAS Level 2
129
 
130
   procedure sgemv
131
     (Trans : access constant Character;
132
      M     : Natural := 0;
133
      N     : Natural := 0;
134
      Alpha : Real := 1.0;
135
      A     : Real_Matrix;
136
      Ld_A  : Positive;
137
      X     : Real_Vector;
138
      Inc_X : Integer := 1;  -- must be non-zero
139
      Beta  : Real := 0.0;
140
      Y     : in out Real_Vector;
141
      Inc_Y : Integer := 1); -- must be non-zero
142
 
143
   procedure dgemv
144
     (Trans : access constant Character;
145
      M     : Natural := 0;
146
      N     : Natural := 0;
147
      Alpha : Double_Precision := 1.0;
148
      A     : Double_Precision_Matrix;
149
      Ld_A  : Positive;
150
      X     : Double_Precision_Vector;
151
      Inc_X : Integer := 1;  -- must be non-zero
152
      Beta  : Double_Precision := 0.0;
153
      Y     : in out Double_Precision_Vector;
154
      Inc_Y : Integer := 1); -- must be non-zero
155
 
156
   procedure cgemv
157
     (Trans : access constant Character;
158
      M     : Natural := 0;
159
      N     : Natural := 0;
160
      Alpha : Complex := (1.0, 1.0);
161
      A     : Complex_Matrix;
162
      Ld_A  : Positive;
163
      X     : Complex_Vector;
164
      Inc_X : Integer := 1;  -- must be non-zero
165
      Beta  : Complex := (0.0, 0.0);
166
      Y     : in out Complex_Vector;
167
      Inc_Y : Integer := 1); -- must be non-zero
168
 
169
   procedure zgemv
170
     (Trans : access constant Character;
171
      M     : Natural := 0;
172
      N     : Natural := 0;
173
      Alpha : Double_Complex := (1.0, 1.0);
174
      A     : Double_Complex_Matrix;
175
      Ld_A  : Positive;
176
      X     : Double_Complex_Vector;
177
      Inc_X : Integer := 1;  -- must be non-zero
178
      Beta  : Double_Complex := (0.0, 0.0);
179
      Y     : in out Double_Complex_Vector;
180
      Inc_Y : Integer := 1); -- must be non-zero
181
 
182
   --  BLAS Level 3
183
 
184
   procedure sgemm
185
     (Trans_A : access constant Character;
186
      Trans_B : access constant Character;
187
      M       : Positive;
188
      N       : Positive;
189
      K       : Positive;
190
      Alpha   : Real := 1.0;
191
      A       : Real_Matrix;
192
      Ld_A    : Integer;
193
      B       : Real_Matrix;
194
      Ld_B    : Integer;
195
      Beta    : Real := 0.0;
196
      C       : in out Real_Matrix;
197
      Ld_C    : Integer);
198
 
199
   procedure dgemm
200
     (Trans_A : access constant Character;
201
      Trans_B : access constant Character;
202
      M       : Positive;
203
      N       : Positive;
204
      K       : Positive;
205
      Alpha   : Double_Precision := 1.0;
206
      A       : Double_Precision_Matrix;
207
      Ld_A    : Integer;
208
      B       : Double_Precision_Matrix;
209
      Ld_B    : Integer;
210
      Beta    : Double_Precision := 0.0;
211
      C       : in out Double_Precision_Matrix;
212
      Ld_C    : Integer);
213
 
214
   procedure cgemm
215
     (Trans_A : access constant Character;
216
      Trans_B : access constant Character;
217
      M       : Positive;
218
      N       : Positive;
219
      K       : Positive;
220
      Alpha   : Complex := (1.0, 1.0);
221
      A       : Complex_Matrix;
222
      Ld_A    : Integer;
223
      B       : Complex_Matrix;
224
      Ld_B    : Integer;
225
      Beta    : Complex := (0.0, 0.0);
226
      C       : in out Complex_Matrix;
227
      Ld_C    : Integer);
228
 
229
   procedure zgemm
230
     (Trans_A : access constant Character;
231
      Trans_B : access constant Character;
232
      M       : Positive;
233
      N       : Positive;
234
      K       : Positive;
235
      Alpha   : Double_Complex := (1.0, 1.0);
236
      A       : Double_Complex_Matrix;
237
      Ld_A    : Integer;
238
      B       : Double_Complex_Matrix;
239
      Ld_B    : Integer;
240
      Beta    : Double_Complex := (0.0, 0.0);
241
      C       : in out Double_Complex_Matrix;
242
      Ld_C    : Integer);
243
 
244
private
245
   pragma Import (Fortran, cdotu,  "cdotu_");
246
   pragma Import (Fortran, cgemm,  "cgemm_");
247
   pragma Import (Fortran, cgemv,  "cgemv_");
248
   pragma Import (Fortran, ddot,   "ddot_");
249
   pragma Import (Fortran, dgemm,  "dgemm_");
250
   pragma Import (Fortran, dgemv,  "dgemv_");
251
   pragma Import (Fortran, dnrm2,  "dnrm2_");
252
   pragma Import (Fortran, dznrm2, "dznrm2_");
253
   pragma Import (Fortran, scnrm2, "scnrm2_");
254
   pragma Import (Fortran, sdot,   "sdot_");
255
   pragma Import (Fortran, sgemm,  "sgemm_");
256
   pragma Import (Fortran, sgemv,  "sgemv_");
257
   pragma Import (Fortran, snrm2,  "snrm2_");
258
   pragma Import (Fortran, zdotu,  "zdotu_");
259
   pragma Import (Fortran, zgemm,  "zgemm_");
260
   pragma Import (Fortran, zgemv,  "zgemv_");
261
end Interfaces.Fortran.BLAS;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.