summaryrefslogtreecommitdiff
path: root/kaldi_io/src/tools/ATLAS/include/atlas_f77blas.h
blob: a7c109d34a4b1c94091bf0e178e3461ef7ad2857 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
#ifndef ATLAS_F77_LVLS
#define ATLAS_F77_LVLS

#include "atlas_f77.h"

#if   defined( StringSunStyle  )
#define F77_CHAR_DECL          F77_CHAR          /* input character*1 */
#define F77_1_CHAR             , F77_INTEGER
#define F77_2_CHAR             F77_1_CHAR F77_1_CHAR
#define F77_3_CHAR             F77_2_CHAR F77_1_CHAR
#define F77_4_CHAR             F77_3_CHAR F77_1_CHAR
#elif defined( StringCrayStyle )
#define F77_CHAR_DECL          F77_CHAR          /* input character*1 */
#elif defined( StringStructVal )
#define F77_CHAR_DECL          F77_CHAR          /* input character*1 */
#elif defined( StringStructPtr )
#define F77_CHAR_DECL          F77_CHAR *        /* input character*1 */
#endif

#ifndef F77_1_CHAR
#define F77_1_CHAR
#define F77_2_CHAR
#define F77_3_CHAR
#define F77_4_CHAR
#endif

#ifndef F77_CHAR_DECL
   #define F77_CHAR_DECL          F77_CHAR *        /* input character*1 */
#endif

#define F77_INT_DECL           const F77_INTEGER *   /* input integer */

#ifdef TREAL
#define F77_SIN_DECL           const TYPE *           /* input scalar */
#define F77_SINOUT_DECL        TYPE *          /* input/output scalar */
#define F77_RIN_DECL           const TYPE *      /* input real scalar */
#define F77_RINOUT_DECL        TYPE *     /* input/output real scalar */
#else
#define F77_SIN_DECL           const TYPE *           /* input scalar */
#define F77_SINOUT_DECL        TYPE *          /* input/output scalar */
#define F77_RIN_DECL           const TYPE *      /* input real scalar */
#define F77_RINOUT_DECL        TYPE *     /* input/output real scalar */
#endif

#define F77_VIN_DECL           const TYPE *           /* input vector */
#define F77_VINOUT_DECL        TYPE *          /* input/output matrix */

#define F77_MIN_DECL           const TYPE *           /* input matrix */
#define F77_MINOUT_DECL        TYPE *          /* input/output matrix */

#if   defined( CRAY )
#define F77_VOID_FUN           extern fortran void      /* subroutine */
#define F77_INT_FUN            extern fortran int /* integer function */
#define F77_TYPE_FUN           extern fortran TYPE   /* real function */
#define F77_DBLE_FUN           extern fortran double /* dble function */
#else
#define F77_VOID_FUN           extern void              /* subroutine */
#define F77_INT_FUN            extern int         /* integer function */
#define F77_TYPE_FUN           extern TYPE           /* real function */
#define F77_DBLE_FUN           extern double         /* dble function */
#endif

#if   defined( NoChange )
/*
 * These defines  set  up  the  naming scheme required to have a FORTRAN
 * routine called by a C routine with the following  FORTRAN to C inter-
 * face:
 *
 *          FORTRAN DECLARATION            C CALL
 *          SUBROUTINE DGEMM(...)          dgemm(...)
 */
#if   defined( SREAL )

#define    F77rotg             srotg
#define    F77rotmg            srotmg
#define    F77nrm2             swrapnrm2
#define    F77asum             swrapasum
#define    F77amax             isamax
#define    F77scal             sscal
#define    F77axpy             saxpy
#define    F77axpby            fatlas_saxpby
#define    F77set              fatlas_sset
#define    F77copy             scopy
#define    F77swap             sswap
#define    F77rot              srot
#define    F77rotm             srotm
#define    F77dot              swrapdot
#define    F77dsdot            dswrapdot
#define    F77sdsdot           sdswrapdot

#define    F77gemv             sgemv
#define    F77gbmv             sgbmv
#define    F77sbmv             ssbmv
#define    F77spmv             sspmv
#define    F77symv             ssymv
#define    F77tbmv             stbmv
#define    F77tpmv             stpmv
#define    F77trmv             strmv
#define    F77tbsv             stbsv
#define    F77tpsv             stpsv
#define    F77trsv             strsv
#define    F77ger              sger
#define    F77spr              sspr
#define    F77syr              ssyr
#define    F77spr2             sspr2
#define    F77syr2             ssyr2

#define    F77gemm             sgemm
#define    F77symm             ssymm
#define    F77syrk             ssyrk
#define    F77syr2k            ssyr2k
#define    F77trmm             strmm
#define    F77trsm             strsm

#elif defined( DREAL )

#define    F77rotg             drotg
#define    F77rotmg            drotmg
#define    F77nrm2             dwrapnrm2
#define    F77asum             dwrapasum
#define    F77amax             idamax
#define    F77scal             dscal
#define    F77axpy             daxpy
#define    F77axpby            fatlas_daxpby
#define    F77set              fatlas_dset
#define    F77copy             dcopy
#define    F77swap             dswap
#define    F77rot              drot
#define    F77rotm             drotm
#define    F77dot              dwrapdot

#define    F77gemv             dgemv
#define    F77gbmv             dgbmv
#define    F77sbmv             dsbmv
#define    F77spmv             dspmv
#define    F77symv             dsymv
#define    F77tbmv             dtbmv
#define    F77tpmv             dtpmv
#define    F77trmv             dtrmv
#define    F77tbsv             dtbsv
#define    F77tpsv             dtpsv
#define    F77trsv             dtrsv
#define    F77ger              dger
#define    F77spr              dspr
#define    F77syr              dsyr
#define    F77spr2             dspr2
#define    F77syr2             dsyr2

#define    F77gemm             dgemm
#define    F77symm             dsymm
#define    F77syrk             dsyrk
#define    F77syr2k            dsyr2k
#define    F77trmm             dtrmm
#define    F77trsm             dtrsm

#elif defined( SCPLX )

#define    F77rotg             crotg
#define    F77nrm2             scwrapnrm2
#define    F77asum             scwrapasum
#define    F77amax             icamax
#define    F77scal             cscal
#define    F77rscal            csscal
#define    F77axpy             caxpy
#define    F77axpby            fatlas_caxpby
#define    F77set              fatlas_cset
#define    F77copy             ccopy
#define    F77swap             cswap
#define    F77rot              csrot
#define    F77dotc             cwrapdotc
#define    F77dotu             cwrapdotu

#define    F77gbmv             cgbmv
#define    F77gemv             cgemv
#define    F77hbmv             chbmv
#define    F77hpmv             chpmv
#define    F77hemv             chemv
#define    F77tbmv             ctbmv
#define    F77tpmv             ctpmv
#define    F77trmv             ctrmv
#define    F77tbsv             ctbsv
#define    F77tpsv             ctpsv
#define    F77trsv             ctrsv
#define    F77gerc             cgerc
#define    F77geru             cgeru
#define    F77hpr              chpr
#define    F77her              cher
#define    F77hpr2             chpr2
#define    F77her2             cher2

#define    F77gemm             cgemm
#define    F77hemm             chemm
#define    F77herk             cherk
#define    F77her2k            cher2k
#define    F77symm             csymm
#define    F77syrk             csyrk
#define    F77syr2k            csyr2k
#define    F77trmm             ctrmm
#define    F77trsm             ctrsm

#elif defined( DCPLX )

#define    F77rotg             zrotg
#define    F77nrm2             dzwrapnrm2
#define    F77asum             dzwrapasum
#define    F77amax             izamax
#define    F77scal             zscal
#define    F77rscal            zdscal
#define    F77axpy             zaxpy
#define    F77axpby            fatlas_zaxpby
#define    F77set              fatlas_zset
#define    F77copy             zcopy
#define    F77swap             zswap
#define    F77rot              zdrot
#define    F77dotc             zwrapdotc
#define    F77dotu             zwrapdotu

#define    F77gbmv             zgbmv
#define    F77gemv             zgemv
#define    F77hbmv             zhbmv
#define    F77hpmv             zhpmv
#define    F77hemv             zhemv
#define    F77tbmv             ztbmv
#define    F77tpmv             ztpmv
#define    F77trmv             ztrmv
#define    F77tbsv             ztbsv
#define    F77tpsv             ztpsv
#define    F77trsv             ztrsv
#define    F77gerc             zgerc
#define    F77geru             zgeru
#define    F77hpr              zhpr
#define    F77her              zher
#define    F77hpr2             zhpr2
#define    F77her2             zher2

#define    F77gemm             zgemm
#define    F77hemm             zhemm
#define    F77herk             zherk
#define    F77her2k            zher2k
#define    F77symm             zsymm
#define    F77syrk             zsyrk
#define    F77syr2k            zsyr2k
#define    F77trmm             ztrmm
#define    F77trsm             ztrsm

#endif

#elif defined( UpCase   )
/*
 * These defines  set  up  the  naming scheme required to have a FORTRAN
 * routine called by a C routine with the following  FORTRAN to C inter-
 * face:
 *
 *          FORTRAN DECLARATION            C CALL
 *          SUBROUTINE DGEMM(...)          DGEMM(...)
 */
#if   defined( SREAL )

#define    F77rotg             SROTG
#define    F77rotmg            SROTMG
#define    F77nrm2             SWRAPNRM2
#define    F77asum             SWRAPASUM
#define    F77amax             ISAMAX
#define    F77scal             SSCAL
#define    F77axpy             SAXPY
#define    F77axpby            FATLAS_SAXPBY
#define    F77set              FATLAS_SSET
#define    F77copy             SCOPY
#define    F77swap             SSWAP
#define    F77rot              SROT
#define    F77rotm             SROTM
#define    F77dot              SWRAPDOT
#define    F77dsdot            DSWRAPDOT
#define    F77sdsdot           SDSWRAPDOT

#define    F77gemv             SGEMV
#define    F77gbmv             SGBMV
#define    F77sbmv             SSBMV
#define    F77spmv             SSPMV
#define    F77symv             SSYMV
#define    F77tbmv             STBMV
#define    F77tpmv             STPMV
#define    F77trmv             STRMV
#define    F77tbsv             STBSV
#define    F77tpsv             STPSV
#define    F77trsv             STRSV
#define    F77ger              SGER
#define    F77spr              SSPR
#define    F77syr              SSYR
#define    F77spr2             SSPR2
#define    F77syr2             SSYR2

#define    F77gemm             SGEMM
#define    F77symm             SSYMM
#define    F77syrk             SSYRK
#define    F77syr2k            SSYR2K
#define    F77trmm             STRMM
#define    F77trsm             STRSM

#elif defined( DREAL )

#define    F77rotg             DROTG
#define    F77rotmg            DROTMG
#define    F77nrm2             DWRAPNRM2
#define    F77asum             DWRAPASUM
#define    F77amax             IDAMAX
#define    F77scal             DSCAL
#define    F77axpy             DAXPY
#define    F77axpby            FATLAS_DAXPBY
#define    F77set              FATLAS_DSET
#define    F77copy             DCOPY
#define    F77swap             DSWAP
#define    F77rot              DROT
#define    F77rotm             DROTM
#define    F77dot              DWRAPDOT

#define    F77gemv             DGEMV
#define    F77gbmv             DGBMV
#define    F77sbmv             DSBMV
#define    F77spmv             DSPMV
#define    F77symv             DSYMV
#define    F77tbmv             DTBMV
#define    F77tpmv             DTPMV
#define    F77trmv             DTRMV
#define    F77tbsv             DTBSV
#define    F77tpsv             DTPSV
#define    F77trsv             DTRSV
#define    F77ger              DGER
#define    F77spr              DSPR
#define    F77syr              DSYR
#define    F77spr2             DSPR2
#define    F77syr2             DSYR2

#define    F77gemm             DGEMM
#define    F77symm             DSYMM
#define    F77syrk             DSYRK
#define    F77syr2k            DSYR2K
#define    F77trmm             DTRMM
#define    F77trsm             DTRSM

#elif defined( SCPLX )

#define    F77rotg             CROTG
#define    F77nrm2             SCWRAPNRM2
#define    F77asum             SCWRAPASUM
#define    F77amax             ICAMAX
#define    F77scal             CSCAL
#define    F77rscal            CSSCAL
#define    F77axpy             CAXPY
#define    F77axpby            FATLAS_CAXPBY
#define    F77set              FATLAS_CSET
#define    F77copy             CCOPY
#define    F77swap             CSWAP
#define    F77rot              CSROT
#define    F77dotc             CWRAPDOTC
#define    F77dotu             CWRAPDOTU

#define    F77gbmv             CGBMV
#define    F77gemv             CGEMV
#define    F77hbmv             CHBMV
#define    F77hpmv             CHPMV
#define    F77hemv             CHEMV
#define    F77tbmv             CTBMV
#define    F77tpmv             CTPMV
#define    F77trmv             CTRMV
#define    F77tbsv             CTBSV
#define    F77tpsv             CTPSV
#define    F77trsv             CTRSV
#define    F77gerc             CGERC
#define    F77geru             CGERU
#define    F77hpr              CHPR
#define    F77her              CHER
#define    F77hpr2             CHPR2
#define    F77her2             CHER2

#define    F77gemm             CGEMM
#define    F77hemm             CHEMM
#define    F77herk             CHERK
#define    F77her2k            CHER2K
#define    F77symm             CSYMM
#define    F77syrk             CSYRK
#define    F77syr2k            CSYR2K
#define    F77trmm             CTRMM
#define    F77trsm             CTRSM

#elif defined( DCPLX )

#define    F77rotg             ZROTG
#define    F77nrm2             DZWRAPNRM2
#define    F77asum             DZWRAPASUM
#define    F77amax             IZAMAX
#define    F77scal             ZSCAL
#define    F77rscal            ZDSCAL
#define    F77axpy             ZAXPY
#define    F77axpby            FATLAS_ZAXPBY
#define    F77set              FATLAS_ZSET
#define    F77copy             ZCOPY
#define    F77swap             ZSWAP
#define    F77rot              ZDROT
#define    F77dotc             ZWRAPDOTC
#define    F77dotu             ZWRAPDOTU

#define    F77gbmv             ZGBMV
#define    F77gemv             ZGEMV
#define    F77hbmv             ZHBMV
#define    F77hpmv             ZHPMV
#define    F77hemv             ZHEMV
#define    F77tbmv             ZTBMV
#define    F77tpmv             ZTPMV
#define    F77trmv             ZTRMV
#define    F77tbsv             ZTBSV
#define    F77tpsv             ZTPSV
#define    F77trsv             ZTRSV
#define    F77gerc             ZGERC
#define    F77geru             ZGERU
#define    F77hpr              ZHPR
#define    F77her              ZHER
#define    F77hpr2             ZHPR2
#define    F77her2             ZHER2

#define    F77gemm             ZGEMM
#define    F77hemm             ZHEMM
#define    F77herk             ZHERK
#define    F77her2k            ZHER2K
#define    F77symm             ZSYMM
#define    F77syrk             ZSYRK
#define    F77syr2k            ZSYR2K
#define    F77trmm             ZTRMM
#define    F77trsm             ZTRSM

#endif

#elif defined( Add_     ) || defined( Add__    )
/*
 * These defines  set  up  the  naming scheme required to have a FORTRAN
 * routine called by a C routine  with the following  FORTRAN to C inter-
 * face:
 *
 *          FORTRAN DECLARATION            C CALL
 *          SUBROUTINE DGEMM(...)          dgemm_(...)
 */
#if   defined( SREAL )

#define    F77rotg             srotg_
#define    F77rotmg            srotmg_
#define    F77nrm2             swrapnrm2_
#define    F77asum             swrapasum_
#define    F77amax             isamax_
#define    F77scal             sscal_
#define    F77axpy             saxpy_
#ifdef Add_
   #define    F77axpby            fatlas_saxpby_
   #define    F77set              fatlas_sset_
#else
   #define    F77axpby            fatlas_saxpby__
   #define    F77set              fatlas_sset__
#endif
#define    F77copy             scopy_
#define    F77swap             sswap_
#define    F77rot              srot_
#define    F77rotm             srotm_
#define    F77dot              swrapdot_
#define    F77dsdot            dswrapdot_
#define    F77sdsdot           sdswrapdot_

#define    F77gemv             sgemv_
#define    F77gbmv             sgbmv_
#define    F77sbmv             ssbmv_
#define    F77spmv             sspmv_
#define    F77symv             ssymv_
#define    F77tbmv             stbmv_
#define    F77tpmv             stpmv_
#define    F77trmv             strmv_
#define    F77tbsv             stbsv_
#define    F77tpsv             stpsv_
#define    F77trsv             strsv_
#define    F77ger              sger_
#define    F77spr              sspr_
#define    F77syr              ssyr_
#define    F77spr2             sspr2_
#define    F77syr2             ssyr2_

#define    F77gemm             sgemm_
#define    F77symm             ssymm_
#define    F77syrk             ssyrk_
#define    F77syr2k            ssyr2k_
#define    F77trmm             strmm_
#define    F77trsm             strsm_

#elif defined( DREAL )

#define    F77rotg             drotg_
#define    F77rotmg            drotmg_
#define    F77nrm2             dwrapnrm2_
#define    F77asum             dwrapasum_
#define    F77amax             idamax_
#define    F77scal             dscal_
#define    F77axpy             daxpy_
#ifdef Add_
   #define    F77axpby            fatlas_daxpby_
   #define    F77set              fatlas_dset_
#else
   #define    F77axpby            fatlas_daxpby__
   #define    F77set              fatlas_dset__
#endif
#define    F77copy             dcopy_
#define    F77swap             dswap_
#define    F77rot              drot_
#define    F77rotm             drotm_
#define    F77dot              dwrapdot_

#define    F77gemv             dgemv_
#define    F77gbmv             dgbmv_
#define    F77sbmv             dsbmv_
#define    F77spmv             dspmv_
#define    F77symv             dsymv_
#define    F77tbmv             dtbmv_
#define    F77tpmv             dtpmv_
#define    F77trmv             dtrmv_
#define    F77tbsv             dtbsv_
#define    F77tpsv             dtpsv_
#define    F77trsv             dtrsv_
#define    F77ger              dger_
#define    F77spr              dspr_
#define    F77syr              dsyr_
#define    F77spr2             dspr2_
#define    F