1 /*
2  * Copyright (c) 2016-2019, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #ifndef FORTRAN_RTLRTNS_H_
19 #define FORTRAN_RTLRTNS_H_
20 
21 /**
22    \file
23    \brief Declarations used to access the run time library structure defined in
24    rte_rtns.h.
25  */
26 
27 #include "rtlRtnsDesc.h"
28 
29 /** \brief Enumerator for some (eventually all) the RTL library routines.
30  *
31  * NOTE: within each section (E.g., NO RTN to END_OF_PFX_F90,
32  * END_OF_PFX_F90+1 to ...) the ftnRtlRtns entries must be sorted on the
33  * baseNm field of the ftnRtlRtns or, equivalently, the order of the enum
34  * names.
35  */
36 typedef enum {
37   RTE_no_rtn,
38   RTE_achara,
39   RTE_addr_1_dim_1st_elem,
40   RTE_adjustla,
41   RTE_adjustra,
42   RTE_alloca,
43   RTE_alloc03a,
44   RTE_alloc03_chka,
45   RTE_alloc04a,
46   RTE_alloc04_chka,
47   RTE_alloc04_chkma,
48   RTE_alloc04_chkpa,
49   RTE_alloc04ma,
50   RTE_alloc04pa,
51   RTE_allocated,
52   RTE_allocated2,
53   RTE_allocated_lhs,
54   RTE_allocated_lhs2,
55   RTE_amodulev,
56   RTE_amodulov,
57   RTE_asn_closure,
58   RTE_auto_alloc,
59   RTE_auto_alloc04,
60   RTE_auto_alloc04m,
61   RTE_auto_alloc04p,
62   RTE_auto_allocv,
63   RTE_auto_calloc,
64   RTE_auto_calloc04,
65   RTE_auto_calloc04m,
66   RTE_auto_calloc04p,
67   RTE_auto_dealloc,
68   RTE_auto_deallocm,
69   RTE_auto_deallocp,
70   RTE_c_f_procptr,
71   RTE_c_f_ptr,
72   RTE_calloc03a,
73   RTE_calloc04a,
74   RTE_calloc04ma,
75   RTE_calloc04pa,
76   RTE_ceiling,
77   RTE_ceilingv,
78   RTE_class_obj_size,
79   RTE_cmd_arg_cnt,
80   RTE_cmplx16,
81   RTE_cmplx32,
82   RTE_cmplx8,
83   RTE_conformable,
84   /* diff from previous three is to
85    * pass value, not address */
86   RTE_conformable_11v,
87   RTE_conformable_1dv,
88   RTE_conformable_22v,
89   RTE_conformable_2dv,
90   RTE_conformable_33v,
91   RTE_conformable_3dv,
92   RTE_conformable_d1v,
93   RTE_conformable_d2v,
94   RTE_conformable_d3v,
95   RTE_conformable_dd,
96   RTE_conformable_dnv,
97   RTE_conformable_ndv,
98   RTE_conformable_nnv,
99   RTE_contigchk,
100   RTE_contigerror,
101   RTE_copy_f77_argl,
102   RTE_copy_f77_argsl,
103   RTE_copy_f90_argl,
104   RTE_copy_proc_desc,
105   RTE_dble,
106   RTE_dceiling,
107   RTE_dceilingv,
108   RTE_dealloca,
109   RTE_dealloc03a,
110   RTE_dealloc03ma,
111   RTE_dealloc03pa,
112   RTE_dealloc_mbr03a,
113   RTE_dealloc_mbr03ma,
114   RTE_dealloc_mbr03pa,
115   RTE_dealloc_poly03,
116   RTE_dealloc_poly_mbr03a,
117   RTE_deallocx,
118   RTE_dfloor,
119   RTE_dfloorv,
120   RTE_dmodulev,
121   RTE_dmodulov,
122   RTE_errorstop08a_char,
123   RTE_errorstop08a_int,
124   RTE_exit,
125   RTE_expon,
126   RTE_expond,
127   RTE_expondx,
128   RTE_exponx,
129   RTE_extends_type_of,
130   RTE_finalize,
131   RTE_floor,
132   RTE_floorv,
133   RTE_frac,
134   RTE_fracd,
135   RTE_fracdx,
136   RTE_fracx,
137   RTE_get_cmda,
138   RTE_get_cmd_arga,
139   RTE_get_env_vara,
140   RTE_hypot,
141   RTE_hypotd,
142   RTE_i8modulov,
143   RTE_iachara,
144   RTE_ichar,
145   RTE_imodulov,
146   RTE_indexa,
147   RTE_init_from_desc,
148   RTE_init_unl_poly_desc,
149   RTE_int,
150   RTE_int1,
151   RTE_int2,
152   RTE_int4,
153   RTE_int8,
154   RTE_is_contiguous,
155   RTE_is_iostat_end,
156   RTE_is_iostat_eor,
157   RTE_kexpondx,
158   RTE_ksize,
159   RTE_lb,
160   RTE_lb1,
161   RTE_lb2,
162   RTE_lb4,
163   RTE_lb8,
164   RTE_lba,
165   RTE_lba1,
166   RTE_lba2,
167   RTE_lba4,
168   RTE_lba8,
169   RTE_lbaz,
170   RTE_lbaz1,
171   RTE_lbaz2,
172   RTE_lbaz4,
173   RTE_lbaz8,
174   RTE_lbound,
175   RTE_lbound1,
176   RTE_lbound2,
177   RTE_lbound4,
178   RTE_lbound8,
179   RTE_lbounda,
180   RTE_lbounda1,
181   RTE_lbounda2,
182   RTE_lbounda4,
183   RTE_lbounda8,
184   RTE_lboundaz,
185   RTE_lboundaz1,
186   RTE_lboundaz2,
187   RTE_lboundaz4,
188   RTE_lboundaz8,
189   RTE_lena,
190   RTE_lentrima,
191   RTE_loc,
192   RTE_log1,
193   RTE_log2,
194   RTE_log4,
195   RTE_log8,
196   RTE_matmul_cplx16,
197   RTE_matmul_cplx16mxv_t,
198   RTE_matmul_cplx32,
199   RTE_matmul_cplx8,
200   RTE_matmul_cplx8mxv_t,
201   RTE_matmul_int1,
202   RTE_matmul_int2,
203   RTE_matmul_int4,
204   RTE_matmul_int8,
205   RTE_matmul_log1,
206   RTE_matmul_log2,
207   RTE_matmul_log4,
208   RTE_matmul_log8,
209   RTE_matmul_real16,
210   RTE_matmul_real4,
211   RTE_matmul_real4mxv_t,
212   RTE_matmul_real8,
213   RTE_matmul_real8mxv_t,
214   RTE_max,
215   RTE_mcopy1,
216   RTE_mcopy2,
217   RTE_mcopy4,
218   RTE_mcopy8,
219   RTE_mcopyz16,
220   RTE_mcopyz4,
221   RTE_mcopyz8,
222   RTE_mergec,
223   RTE_mergecha,
224   RTE_merged,
225   RTE_mergedc,
226   RTE_mergedt,
227   RTE_mergei,
228   RTE_mergei1,
229   RTE_mergei2,
230   RTE_mergei8,
231   RTE_mergel,
232   RTE_mergel1,
233   RTE_mergel2,
234   RTE_mergel8,
235   RTE_mergeq,
236   RTE_merger,
237   RTE_min,
238   RTE_mmul_cmplx16,
239   RTE_mmul_cmplx8,
240   RTE_mmul_real4,
241   RTE_mmul_real8,
242   RTE_modulov,
243   RTE_move_alloc,
244   RTE_mp_bcs_nest,
245   RTE_mp_ecs_nest,
246   RTE_mset1,
247   RTE_mset2,
248   RTE_mset4,
249   RTE_mset8,
250   RTE_msetz16,
251   RTE_msetz4,
252   RTE_msetz8,
253   RTE_mvbits,
254   RTE_mzero1,
255   RTE_mzero2,
256   RTE_mzero4,
257   RTE_mzero8,
258   RTE_mzeroz16,
259   RTE_mzeroz4,
260   RTE_mzeroz8,
261   RTE_nadjustl,
262   RTE_nadjustr,
263   RTE_name,
264   RTE_nearest,
265   RTE_nearestd,
266   RTE_nearestdx,
267   RTE_nearestx,
268   RTE_nlena,
269   RTE_nlentrim,
270   RTE_nrepeat,
271   RTE_nscan,
272   RTE_nstr_copy,
273   RTE_nstr_copy_klen,
274   RTE_nstr_index,
275   RTE_nstr_index_klen,
276   RTE_nstrcmp,
277   RTE_nstrcmp_klen,
278   RTE_ntrim,
279   RTE_nverify,
280   RTE_pausea,
281   RTE_poly_asn,
282   RTE_poly_asn_dest_intrin,
283   RTE_poly_asn_src_intrin,
284   RTE_poly_conform_types,
285   RTE_poly_element_addr,
286   RTE_poly_element_addr1,
287   RTE_poly_element_addr2,
288   RTE_poly_element_addr3,
289   RTE_present,
290   RTE_present_ptr,
291   RTE_presentc,
292   RTE_ptr_alloca,
293   RTE_ptr_alloc03a,
294   RTE_ptr_alloc04a,
295   RTE_ptr_alloc04ma,
296   RTE_ptr_alloc04pa,
297   RTE_ptr_calloc03a,
298   RTE_ptr_calloc04a,
299   RTE_ptr_calloc04ma,
300   RTE_ptr_calloc04pa,
301   RTE_ptr_src_alloc03a,
302   RTE_ptr_src_alloc04a,
303   RTE_ptr_src_alloc04ma,
304   RTE_ptr_src_alloc04pa,
305   RTE_ptr_src_calloc03a,
306   RTE_ptr_src_calloc04a,
307   RTE_ptr_src_calloc04ma,
308   RTE_ptr_src_calloc04pa,
309   RTE_ptrchk,
310   RTE_ptrcp,
311   RTE_real,
312   RTE_real16,
313   RTE_real4,
314   RTE_real8,
315   RTE_repeata,
316   RTE_rrspacing,
317   RTE_rrspacingd,
318   RTE_rrspacingdx,
319   RTE_rrspacingx,
320   RTE_rtn_name,
321   RTE_same_intrin_type_as,
322   RTE_same_type_as,
323   RTE_scale,
324   RTE_scaled,
325   RTE_scaledx,
326   RTE_scalex,
327   RTE_scana,
328   RTE_sect,
329   RTE_sect1,
330   RTE_sect1v,
331   RTE_sect2,
332   RTE_sect2v,
333   RTE_sect3,
334   RTE_sect3v,
335   RTE_sel_char_kinda,
336   RTE_sel_int_kind,
337   RTE_sel_real_kind,
338   RTE_set_intrin_type,
339   RTE_set_type,
340   RTE_setexp,
341   RTE_setexpd,
342   RTE_setexpdx,
343   RTE_setexpx,
344   RTE_shape,
345   RTE_shape1,
346   RTE_shape2,
347   RTE_shape4,
348   RTE_shape8,
349   RTE_show,
350   RTE_size,
351   RTE_spacing,
352   RTE_spacingd,
353   RTE_spacingdx,
354   RTE_spacingx,
355   RTE_stopa,
356   RTE_stop08a,
357   RTE_str_copy,
358   RTE_str_copy_klen,
359   RTE_str_cpy1,
360   RTE_str_free,
361   RTE_str_index,
362   RTE_str_index_klen,
363   RTE_str_malloc,
364   RTE_str_malloc_klen,
365   RTE_strcmp,
366   RTE_strcmp_klen,
367   RTE_subchk,
368   RTE_subchk64,
369   RTE_tmp_desc,
370   RTE_template,
371   RTE_template1,
372   RTE_template1v,
373   RTE_template2,
374   RTE_template2v,
375   RTE_template3,
376   RTE_template3v,
377   RTE_test_and_set_type,
378   RTE_trima,
379   RTE_ub,
380   RTE_ub1,
381   RTE_ub2,
382   RTE_ub4,
383   RTE_ub8,
384   RTE_uba,
385   RTE_uba1,
386   RTE_uba2,
387   RTE_uba4,
388   RTE_uba8,
389   RTE_ubaz,
390   RTE_ubaz1,
391   RTE_ubaz2,
392   RTE_ubaz4,
393   RTE_ubaz8,
394   RTE_ubound,
395   RTE_ubound1,
396   RTE_ubound2,
397   RTE_ubound4,
398   RTE_ubound8,
399   RTE_ubounda,
400   RTE_ubounda1,
401   RTE_ubounda2,
402   RTE_ubounda4,
403   RTE_ubounda8,
404   RTE_uboundaz,
405   RTE_uboundaz1,
406   RTE_uboundaz2,
407   RTE_uboundaz4,
408   RTE_uboundaz8,
409   RTE_verifya,
410   END_OF_PFX_F90,
411   RTE_all,
412   RTE_all_scatterx,
413   RTE_alls,
414   RTE_any,
415   RTE_any_scatterx,
416   RTE_anys,
417   RTE_associated,
418   RTE_associated_chara,
419   RTE_associated_t,
420   RTE_associated_tchara,
421   RTE_barrier,
422   RTE_block_loop,
423   RTE_comm_copy,
424   RTE_comm_free,
425   RTE_comm_gatherx,
426   RTE_comm_scatterx,
427   RTE_copy_out,
428   RTE_count,
429   RTE_counts,
430   RTE_cpu_time,
431   RTE_cpu_timed,
432   RTE_cshift,
433   RTE_cshiftca,
434   RTE_cshifts,
435   RTE_cshiftsca,
436   RTE_cyclic_loop,
437   RTE_dandta,
438   RTE_datea,
439   RTE_datew,
440   RTE_dotpr,
441   RTE_eoshift,
442   RTE_eoshiftca,
443   RTE_eoshifts,
444   RTE_eoshiftsa,
445   RTE_eoshiftsaca,
446   RTE_eoshiftsca,
447   RTE_eoshiftss,
448   RTE_eoshiftssca,
449   RTE_eoshiftsz,
450   RTE_eoshiftszca,
451   RTE_eoshiftz,
452   RTE_eoshiftzca,
453   RTE_extent,
454   RTE_findloc,
455   RTE_findlocs,
456   RTE_findlocstr,
457   RTE_findlocstrs,
458   RTE_free,
459   RTE_freen,
460   RTE_ftimea,
461   RTE_ftimew,
462   RTE_function_entrya,
463   RTE_function_exit,
464   RTE_get_scalar,
465   RTE_global_all,
466   RTE_global_any,
467   RTE_global_firstmax,
468   RTE_global_firstmin,
469   RTE_global_iall,
470   RTE_global_iany,
471   RTE_global_iparity,
472   RTE_global_lastmax,
473   RTE_global_lastmin,
474   RTE_global_maxval,
475   RTE_global_minval,
476   RTE_global_parity,
477   RTE_global_product,
478   RTE_global_sum,
479   RTE_globalize,
480   RTE_iall_scatterx,
481   RTE_iany_scatterx,
482   RTE_idate,
483   RTE_ilen,
484   RTE_indexDsc,
485   RTE_indexxa,
486   RTE_indexx_cra,
487   RTE_indexx_cr_nma,
488   RTE_init,
489   RTE_instance,
490   RTE_iparity_scatterx,
491   RTE_islocal_idx,
492   RTE_jdate,
493   RTE_lastval,
494   RTE_lbound1Dsc,
495   RTE_lbound2Dsc,
496   RTE_lbound4Dsc,
497   RTE_lbound8Dsc,
498   RTE_lboundDsc,
499   RTE_lbounda1Dsc,
500   RTE_lbounda2Dsc,
501   RTE_lbounda4Dsc,
502   RTE_lbounda8Dsc,
503   RTE_lboundaDsc,
504   RTE_lboundaz1Dsc,
505   RTE_lboundaz2Dsc,
506   RTE_lboundaz4Dsc,
507   RTE_lboundaz8Dsc,
508   RTE_lboundazDsc,
509   RTE_leadz,
510   RTE_lenDsc,
511   RTE_lenxa,
512   RTE_lenx_cra,
513   RTE_lenx_cr_nma,
514   RTE_line_entry,
515   RTE_lineno,
516   RTE_localize_bounds,
517   RTE_localize_index,
518   RTE_matmul,
519   RTE_maxloc,
520   RTE_maxloc_b,
521   RTE_maxlocs,
522   RTE_maxlocs_b,
523   RTE_norm2,
524   RTE_norm2_nodim,
525   RTE_maxval,
526   RTE_maxval_scatterx,
527   RTE_maxvals,
528   RTE_member_base,
529   RTE_minloc,
530   RTE_minloc_b,
531   RTE_minlocs,
532   RTE_minlocs_b,
533   RTE_minval,
534   RTE_minval_scatterx,
535   RTE_minvals,
536   RTE_np,
537   RTE_nullify,
538   RTE_nullify_chara,
539   RTE_nullifyx,
540   RTE_number_of_processors,
541   RTE_olap_cshift,
542   RTE_olap_eoshift,
543   RTE_olap_shift,
544   RTE_pack,
545   RTE_packca,
546   RTE_packz,
547   RTE_packzca,
548   RTE_parity_scatterx,
549   RTE_permute_section,
550   RTE_popcnt,
551   RTE_poppar,
552   RTE_processors,
553   RTE_processors_rank,
554   RTE_product,
555   RTE_product_scatterx,
556   RTE_products,
557   RTE_ptr_asgn,
558   RTE_ptr_asgn_chara,
559   RTE_ptr_assign,
560   RTE_ptr_assign_chara,
561   RTE_ptr_assign_charxa,
562   RTE_ptr_assignx,
563   RTE_ptr_assn,
564   RTE_ptr_assn_assumeshp,
565   RTE_ptr_assn_chara,
566   RTE_ptr_assn_char_assumeshp,
567   RTE_ptr_assn_charxa,
568   RTE_ptr_assn_dchara,
569   RTE_ptr_assn_dchar_assumeshp,
570   RTE_ptr_assn_dcharxa,
571   RTE_ptr_assnx,
572   RTE_ptr_fix_assumeshp,
573   RTE_ptr_fix_assumeshp1,
574   RTE_ptr_fix_assumeshp2,
575   RTE_ptr_fix_assumeshp3,
576   RTE_ptr_ina,
577   RTE_ptr_in_chara,
578   RTE_ptr_offset,
579   RTE_ptr_out,
580   RTE_ptr_out_chara,
581   RTE_ptr_shape_assn,
582   RTE_ptr_shape_assnx,
583   RTE_qopy_in,
584   RTE_realign,
585   RTE_redistribute,
586   RTE_reduce_descriptor,
587   RTE_reshape,
588   RTE_reshapeca,
589   RTE_rnum,
590   RTE_rnumd,
591   RTE_rseed,
592   RTE_secnds,
593   RTE_secndsd,
594   RTE_shapeDsc,
595   RTE_sizeDsc,
596   RTE_spread,
597   RTE_spread_descriptor,
598   RTE_spreadca,
599   RTE_spreadcs,
600   RTE_spreadsa,
601   RTE_sum,
602   RTE_sum_scatterx,
603   RTE_sums,
604   RTE_sysclk,
605   RTE_templateDsc,
606   RTE_transfer,
607   RTE_type,
608   RTE_typep,
609   RTE_ubound1Dsc,
610   RTE_ubound2Dsc,
611   RTE_ubound4Dsc,
612   RTE_ubound8Dsc,
613   RTE_uboundDsc,
614   RTE_ubounda1Dsc,
615   RTE_ubounda2Dsc,
616   RTE_ubounda4Dsc,
617   RTE_ubounda8Dsc,
618   RTE_uboundaDsc,
619   RTE_uboundaz1Dsc,
620   RTE_uboundaz2Dsc,
621   RTE_uboundaz4Dsc,
622   RTE_uboundaz8Dsc,
623   RTE_uboundazDsc,
624   RTE_unpack,
625   RTE_unpackca,
626   END_OF_PFX_FTN,
627   RTE_f90io_aux_init,
628   RTE_f90io_backspace,
629   RTE_f90io_begin,
630   RTE_f90io_byte_reada,
631   RTE_f90io_byte_read64a,
632   RTE_f90io_byte_writea,
633   RTE_f90io_byte_write64a,
634   RTE_f90io_closea,
635   RTE_f90io_dts_fmtr,
636   RTE_f90io_dts_fmtw,
637   RTE_f90io_dts_stat,
638   RTE_f90io_encode_fmta,
639   RTE_f90io_encode_fmtv,
640   RTE_f90io_end,
641   RTE_f90io_endfile,
642   RTE_f90io_flush,
643   RTE_f90io_fmt_reada,
644   RTE_f90io_fmt_read64_aa,
645   RTE_f90io_fmt_read_aa,
646   RTE_f90io_fmt_writea,
647   RTE_f90io_fmt_write64_aa,
648   RTE_f90io_fmt_write_aa,
649   RTE_f90io_fmtr_end,
650   RTE_f90io_fmtr_inita,
651   RTE_f90io_fmtr_init03a,
652   RTE_f90io_fmtr_init2003a,
653   RTE_f90io_fmtr_initva,
654   RTE_f90io_fmtr_initv2003a,
655   RTE_f90io_fmtr_intern_inita,
656   RTE_f90io_fmtr_intern_inite,
657   RTE_f90io_fmtr_intern_initev,
658   RTE_f90io_fmtr_intern_initva,
659   RTE_f90io_fmtw_end,
660   RTE_f90io_fmtw_inita,
661   RTE_f90io_fmtw_init03a,
662   RTE_f90io_fmtw_initva,
663   RTE_f90io_fmtw_intern_inita,
664   RTE_f90io_fmtw_intern_inite,
665   RTE_f90io_fmtw_intern_initev,
666   RTE_f90io_fmtw_intern_initva,
667   RTE_f90io_get_newunit,
668   RTE_f90io_inquirea,
669   RTE_f90io_inquire03a,
670   RTE_f90io_inquire03_2a,
671   RTE_f90io_inquire2003a,
672   RTE_f90io_iomsga,
673   RTE_f90io_iomsg_,
674   RTE_f90io_ldra,
675   RTE_f90io_ldr64_aa,
676   RTE_f90io_ldr_aa,
677   RTE_f90io_ldr_end,
678   RTE_f90io_ldr_init,
679   RTE_f90io_ldr_init03a,
680   RTE_f90io_ldr_intern_inita,
681   RTE_f90io_ldr_intern_inite,
682   RTE_f90io_ldwa,
683   RTE_f90io_ldw64_aa,
684   RTE_f90io_ldw_aa,
685   RTE_f90io_ldw_end,
686   RTE_f90io_ldw_init,
687   RTE_f90io_ldw_init03a,
688   RTE_f90io_ldw_intern_inita,
689   RTE_f90io_ldw_intern_inite,
690   RTE_f90io_nml_read,
691   RTE_f90io_nml_write,
692   RTE_f90io_nmlr,
693   RTE_f90io_nmlr_end,
694   RTE_f90io_nmlr_init,
695   RTE_f90io_nmlr_init03a,
696   RTE_f90io_nmlr_intern_inita,
697   RTE_f90io_nmlw,
698   RTE_f90io_nmlw_end,
699   RTE_f90io_nmlw_init,
700   RTE_f90io_nmlw_init03a,
701   RTE_f90io_nmlw_intern_inita,
702   RTE_f90io_open03a,
703   RTE_f90io_open2003a,
704   RTE_f90io_open_asynca,
705   RTE_f90io_open_cvta,
706   RTE_f90io_open_sharea,
707   RTE_f90io_print_init,
708   RTE_f90io_rewind,
709   RTE_f90io_sc_cd_fmt_write,
710   RTE_f90io_sc_cd_ldw,
711   RTE_f90io_sc_cf_fmt_write,
712   RTE_f90io_sc_cf_ldw,
713   RTE_f90io_sc_ch_fmt_write,
714   RTE_f90io_sc_ch_ldw,
715   RTE_f90io_sc_d_fmt_write,
716   RTE_f90io_sc_d_ldw,
717   RTE_f90io_sc_f_fmt_write,
718   RTE_f90io_sc_f_ldw,
719   RTE_f90io_sc_fmt_write,
720   RTE_f90io_sc_i_fmt_write,
721   RTE_f90io_sc_i_ldw,
722   RTE_f90io_sc_l_fmt_write,
723   RTE_f90io_sc_l_ldw,
724   RTE_f90io_sc_ldw,
725   RTE_f90io_src_info03a,
726   RTE_f90io_src_infox03a,
727   RTE_f90io_swbackspace,
728   RTE_f90io_unf_asynca,
729   RTE_f90io_unf_end,
730   RTE_f90io_unf_init,
731   RTE_f90io_unf_reada,
732   RTE_f90io_unf_read64_aa,
733   RTE_f90io_unf_read_aa,
734   RTE_f90io_unf_writea,
735   RTE_f90io_unf_write64_aa,
736   RTE_f90io_unf_write_aa,
737   RTE_f90io_usw_end,
738   RTE_f90io_usw_init,
739   RTE_f90io_usw_reada,
740   RTE_f90io_usw_read64_aa,
741   RTE_f90io_usw_read_aa,
742   RTE_f90io_usw_writea,
743   RTE_f90io_usw_write64_aa,
744   RTE_f90io_usw_write_aa,
745   RTE_f90io_wait,
746   END_OF_IO,
747   RTE_io_fmt_read,
748   RTE_io_fmt_read64,
749   RTE_io_fmt_write,
750   RTE_io_fmt_write64,
751   RTE_io_ldr,
752   RTE_io_ldr64,
753   RTE_io_ldw,
754   RTE_io_ldw64,
755   RTE_io_unf_read,
756   RTE_io_unf_read64,
757   RTE_io_unf_write,
758   RTE_io_unf_write64,
759   RTE_io_usw_read,
760   RTE_io_usw_read64,
761   RTE_io_usw_write,
762   RTE_io_usw_write64,
763   END_OF_FTNIO
764 } FtnRtlEnum;
765 
766 /** \brief "ftype" information about those RTL routines where the 1st argument
767  *  is a section descriptor that is being created/modified.  The int return by
768  *  getF90TmplSectRtn is a bitfield composed of some combination of these
769  *  values.
770  */
771 #define FTYPE_SECT 1
772 #define FTYPE_TEMPLATE 2
773 #define FTYPE_TEMPLATE1 3
774 #define FTYPE_TEMPLATE1V 4
775 #define FTYPE_TEMPLATE2 5
776 #define FTYPE_TEMPLATE2V 6
777 #define FTYPE_TEMPLATE3 7
778 #define FTYPE_TEMPLATE3V 8
779 #define FTYPE_I8 0x10
780 #define FTYPE_MASK 0x0f
781 
782 /**
783    \brief ...
784  */
785 char *mkRteRtnNm(FtnRtlEnum rteRtn);
786 
787 /** \brief Returns an integer bitfield contain information about a RTL routine
788  *  that creates or modifies an array descriptor.  If the routine does not
789  *  create or modify an array descriptor, zero is returned.
790  */
791 int getF90TmplSectRtn(char *rtnNm);
792 
793 /**
794    \brief ...
795  */
796 void dump_FtnRteRtn(FtnRtlEnum rteRtn);
797 
798 #endif /* FORTRAN_RTLRTNS_H_ */
799