1 " BEGIN fort_macros.incl.alm
  2 "
  3 " Written: June 1976, R. A. Barnes
  4 "
  5 " Modified:
  6 "         22 June 84, MM - Install typeless functions support.
  7 "         28 Mar 84, HH - Install HFP support.
  8 "         10 January   1982, TO - Add 'emit_entry_defs' (simple).
  9 "          3 January   1982, TO - Add 'even' pseudo for ext_cg optimization
 10 "                   of DO-loop top label.
 11 "         29 Nov 82, HH - 361:  Remove 'get_format_var'.
 12 "         21 September 1982, TO - Add emit_storage_args.
 13 "          7 September 1982, TO - Add emit_cleanup_args.
 14 "          1 September 1982, TO - Add if/unless_cleanup.
 15 "          1 September 1982, TO - Add if/unless_storage_created, if/unless_VLA.
 16 "          3 May  1982, TO - Add (if/unless)_char_star_function.
 17 "          3 May  1982, TO - Add (if/unless)_check_multiply.
 18 "         27 July 1981, CRD - Add get_format_var.
 19 "         2 June 1981, CRD - Add push_sf_arg_count.
 20 "         24 September 1980, CRD - Change desc_ptr_in_base to be a simple
 21 "                   macro (desc_ptr_in_pr3), and add arg_ptr_in_pr1.
 22 "         16 July 1980, CRD - Add (if unless)_variable_arglist.
 23 "         15 July 1980, CRD - Add set_needs_descriptors
 24 "         23 June 1980, CRD - Add (if unless)_ansi77.
 25 "         11 June 1980, CRD - add push_operand_count.
 26 "         17 April 1980, CRD - add set_next_operand.
 27 "         4 March 1980, CRD - add many new macros for concatenation.
 28 "         23 February 1980, RAB - add float_power_of_two
 29 "         7 February 1980, CRD - Add int_to_char1 and char1_to_int.
 30 "         27 January 1980, RAB -  Add force_ql.
 31 "         24 January 1980, CRD - Add desc_ptr_in_base.
 32 "         18 January 1980, CRD - Add free_descriptors.
 33 "         27 December 1979, RAB - Add refresh_regs_if_next_is_jump and
 34 "                   note_eligible_ind_var_use for register optimizer
 35 "         30 November 1979, RAB - Add (if unless)_global,
 36 "                   (if unless)_induction_var, (if unless)_fb17,
 37 "                   (if unless)_global_ind_var, assign_index, compare_index,
 38 "                   test_index, increment_index, and decrement_index
 39 "                   macros for the register optimizer.
 40 "         3 November 1979, RAB - Remove obsolete version 1 macros indirect_scan
 41 "                   and finish_indirect_scan.  Add load_xreg, load_preg, and
 42 "                   refresh_regs macros for the register optimizer.
 43 "         16 October 1979, CRD - add two new macros, set_inds_valid and
 44 "                   ind_to_a.  set_inds_valid is used to update the
 45 "                   machine state when an instruction has been emitted that
 46 "                   (1) set the indicators, (2) modifies the eaq, and (3)
 47 "                   leaves the indicators valid for some register other than
 48 "                   the one it modifies.  ind_to_a is used to force logical
 49 "                   temporaries from the indicators to the A register without
 50 "                   losing the fact that indicators are valid for the A, as
 51 "                   use_ind does.
 52 "         15 October 1979, CRD - change if_ind and unless_ind to take an
 53 "                   eaq_name.
 54 "         25 July 1979, CRD - add tables of opcodes in comments.
 55 "         25 July 1979, CRD - add many more meta macros.
 56 "         24 July 1979, CRD - add def_left, def_1op, and def_1op_left meta
 57 "                   macros.  This localizes macro definitions and reduces the
 58 "                   possibility of misdefining a macro instruction.
 59 "         23 July 1979, CRD - add def_simple_cond, def_1op_cond meta macros.
 60 "                   Use if_bit to compress some if/unless pairs into a single
 61 "                   opcode.
 62 "         23 July 1979, CRD - add def_simple meta macro, move opcodes of simple
 63 "                   macro instructions to left half.
 64 "         20 July 1979, CRD - remove obsolete version 1 optimizer macros
 65 "         18 Nov 1978, RAB - macros to support centralized rounding:
 66 "                   round, set_rounded, store  no_update.
 67 "         29 March 1978, DSL - Change insert_bits to free_temp (39)
 68 "         January, February 1978 DSL - Add new macros for version II optimizer.
 69 "         20 December 1977 DSL - have v1opt and v2opt macros use the same
 70 "         macro numbers.
 71 "         1 December 1977, D. S. Levin to add macros for v2 optimizer and
 72 "         restructure.
 73 "         1 May 1977, R.A. Barnes to add store macro
 74 "         April 1976, G. D. Chang  to add the save_state macro.
 75 ^L
 76 "         META MACROS USED TO CREATE LANGUAGE MACROS
 77 "
 78 "                                                 int_dat_var
 79 "
 80           macro int_dat_var
 81           ife &1,var
 82           zero -1,inhibit+&2
 83           ifend_exit
 84           ifint &1
 85           zero &1,inhibit+&2
 86           ifend_exit
 87           zero 0,&1n+inhibit+&2
 88           &end
 89 "
 90 "                                                 array
 91 "
 92           macro array
 93           &(&=&x,1&[          vfd &;,&]18/&i&)
 94           equ &2,&x-1
 95           &end
 96 "
 97 "                                                 scan_label
 98 "
 99           macro scan_label
100           ife &1,next
101           zero &3,&2
102           ifend_exit
103           ife &1,continue
104           zero &4,&2
105           ifend_exit
106           zero &1,&2
107           &end
108 "
109 "                                                 if_mac2
110 "
111           macro if_mac2
112           ife &3,op1
113           zero &4,&1+2048*&2+768+inhibit+&5
114           ifend
115           ine &3,op1
116           zero &4,&1+2048*&2+256*&3+inhibit+&5
117           ifend
118           &end
119 "
120 "                                                 if_mac1
121 "
122           macro if_mac1
123           ife &2,<
124           if_mac2 &1,0,&3,&4,&5
125           ifend_exit
126           ife &2,>
127           if_mac2 &1,1,&3,&4,&5
128           ifend_exit
129           ife &2,=
130           if_mac2 &1,2,&3,&4,&5
131           ifend_exit
132           ife &2,^=
133           if_mac2 &1,3,&3,&4,&5
134           ifend_exit
135           ife &2,<=
136           if_mac2 &1,4,&3,&4,&5
137           ifend_exit
138           ife &2,>=
139           if_mac2 &1,5,&3,&4,&5
140           ifend_exit
141           &end
142 "
143 "                                                 rest_of_error
144 "
145           macro rest_of_error
146           ife &1,()
147           ifend_exit
148           ife &1,ascii
149           vfd 18/&U,10/&l2,1/1,7/67
150           use .strings.
151 &U:       aci "&2"
152           use .text.
153           rest_of_error &FQ3
154           ifend_exit
155           zero 0,&1+inhibit+67
156           rest_of_error &FQ2
157           &end
158 "
159 "                                                 def_simple
160 "
161           macro def_simple
162           macro &1
163           zero &2,inhibit+6
164           &&end
165           &end
166 "
167 "                                                 def_simple_cond
168 "
169           macro def_simple_cond
170           macro if_&1
171           zero &&1,if_bit+inhibit+&2
172           &&end
173           macro unless_&1
174           zero &&1,inhibit+&2
175           &&end
176           &end
177 "
178 "                                                 def_1op_cond
179 "
180           macro def_1op_cond
181           macro if_&1
182           zero &&2,&&1+if_bit+inhibit+&2
183           &&end
184           macro unless_&1
185           zero &&2,&&1+inhibit+&2
186           &&end
187           &end
188 "
189 "                                                 def_1op
190 "
191           macro def_1op
192           macro &1
193           zero 0,&&1+inhibit+&2
194           &&end
195           &end
196 "
197 "                                                 def_left
198 "
199           macro def_left
200           macro &1
201           zero &&1,inhibit+&2
202           &&end
203           &end
204 "
205 "                                                 def_leftn
206 "
207           macro def_leftn
208           macro &1
209           zero &&1n,inhibit+&2
210           &&end
211           &end
212 "
213 "                                                 def_1op_left
214 "
215           macro def_1op_left
216           macro &1
217           zero &&2,&&1+inhibit+&2
218           &&end
219           &end
220 "
221 "                                                 def_1op_left_flag
222 "
223           macro def_1op_left_flag
224           macro &1
225           ife &&3,()
226           zero &&2,&&1+inhibit+&2
227           ifend_exit
228           zero &&2,&&1+&&3+inhibit+&2
229           &&end
230           &end
231 "
232 "                                                 def_int_dat_var
233 "
234           macro def_int_dat_var
235           macro &1
236           int_dat_var &&1,&2
237           &&end
238           &end
239 "
240 "                                                 def_type_cond
241 "
242           macro def_type_cond
243           macro &1
244           zero &&2,&&(1&&i+&&)inhibit+&2
245           &&end
246           &end
247 "
248 "                                                 def_2op_left
249 "
250           macro def_2op_left
251           macro &1
252           zero &&3,&&2+&&1+inhibit+&2
253           &&end
254           &end
255 "
256 "                                                 def_array1
257 "
258           macro def_array1
259           macro &1
260           zero &&U,inhibit+&2
261           array (&&1),&&U
262           &&end
263           &end
264 "
265 "                                                 def_array2
266 "
267           macro def_array2
268           macro &1
269           zero &&U,&&1+inhibit+&2
270           array (&&2),&&U
271           &&end
272           &end
273 "
274 "                                                 def_2op
275 "
276           macro def_2op
277           macro &1
278           zero 0,&&1+&&2+inhibit+&2
279           &&end
280           &end
281 "
282 "                                                 def_1op_optleft
283 "
284           macro def_1op_optleft
285           macro &1
286           ine &&2,()
287           zero &&2,&&1+inhibit+&2
288           ifend_exit
289           zero 0,&&1+inhibit+&2
290           &&end
291           &end
292 "
293 "                                                 def_1op_flag
294 "
295           macro def_1op_flag
296           macro &1
297           ife &&1,()
298           zero 0,inhibit+&2
299           ifend_exit
300           zero 1,&&1+inhibit+&2
301           &&end
302           &end
303 "
304 "                                                 def_general_cond
305 "
306           macro def_general_cond
307           macro &1
308           if_mac1 &&1,&&2,&&3,&&4,&2
309           &&end
310           &end
311 "
312 "                                                 def_1op_name
313 "
314           macro def_1op_name
315           macro &1
316           zero 0,&&1n+inhibit+&2
317           &&end
318           &end
319 "
320 "                                                 def_2op_name
321 "
322           macro def_2op_name
323           macro &1
324           zero &&1n,&&2+inhibit+&2
325           &&end
326           &end
327 ^L
328 "         TABLE OF OPCODE ASSIGNMENTS
329 "
330 "         NOTE: If you change any of these opcode assignments, be sure to
331 "         change BOTH ext_code_generator and fort_optimizing_cg!!!
332 "
333 "
334 "         1         copy
335 "         2         swap
336 "         3         pop
337 "         4         push_temp
338 "         5         push_variable
339 "         6         used for extended opcode dispatch
340 "         7         emit_eis
341 "         8         push_constant
342 "         9         convert_constant
343 "         10        push_count_indexed
344 "         11        push_builtin
345 "         12        proc
346 "         13        func
347 "         14        call
348 "         15        return
349 "         16        jump
350 "         17        scan
351 "         18        exit
352 "         19        s_call
353 "         20        set_inds_valid
354 "         21        if_dt
355 "         22        unless_dt
356 "         23        if_optype
357 "         24        unless_optype
358 "         25        (if unless)_array
359 "         26        (if unless)_aligned
360 "         27        if_eaq
361 "         28        unless_eaq
362 "         29        dt_jump
363 "         30        ind_jump
364 "         31        if
365 "         32        unless
366 "         33        jump_indexed
367 "         34        emit, emit_data, emit_inst
368 "         35        label
369 "         36        rel_con
370 "         37        set_rel_constant
371 "         38        add_to_address
372 "         39        free_temp
373 "         40        reserve_regs
374 "         41        load_pr
375 "         42        use_a
376 "         43        use_q
377 "         44        make_addressable
378 "         45        use_eaq
379 "         46        load
380 "         47        load_top
381 "         48        in_reg
382 "         49        refresh_regs
383 "         50        push_sf_arg_count
384 "         51        increment
385 "         52        decrement
386 "         53        multiply
387 "         54        push_count
388 "         55        push_bif_index
389 "         56        (if unless)_saving_stack_extent
390 "         57        start_cat
391 "         58        shorten_stack
392 "         59        set_next_operand
393 "         60        (if unless)_ansi77
394 "         61        s_func_label
395 "         62        push_s_func_label
396 "         63        push_s_func_var
397 "         64        push_array_size
398 "         65        print
399 "         66        error
400 "         67        used by rest_of_error
401 "         68        push_length
402 "         69        (if unless)_variable_arglist
403 "         70        used by call
404 "         71        used by make_addressable
405 "         72        if_ind
406 "         73        unless_ind
407 "         74        (if unless)_char_star_function
408 "         75        (if unless)_check_multiply
409 "         76        make_io_desc
410 "         77        (if unless)_one_word_dt
411 "         78        assign_entry
412 "         79        (if unless)_storage_created
413 "         80        push_char_temp
414 "         81        (if unless)_parameter
415 "         82        (if unless)_global
416 "         83        (if unless)_induction_var
417 "         84        (if unless)_fb17
418 "         85        (if unless)_negative
419 "         86        (if unless)_global_ind_var
420 "         87        (if unless)_local
421 "         88        (if unless)_VLA
422 "         89        (if unless)_main
423 "         90        (if unless)_cleanup
424 "         91        (if unless)_constant_addrs
425 "         92        (if unless)_hfp
426 "         93        get_quick_label
427 "         94        UNUSED
428 "         95        (if unless)_needs_descriptors
429 "         96        UNUSED
430 "         97        UNUSED
431 "         98        UNUSED
432 "         99        (if unless)_namelist_used
433 "         100       UNUSED
434 "         101       if_next_statement
435 "         102       unless_next_statement
436 "         103       UNUSED
437 "         104       push_operand
438 "         105       compare
439 "         106       UNUSED
440 "         107       UNUSED
441 "         108       round
442 "         109       flush_ref
443 "         110       save_state
444 "         111       store
445 "         112       load_pr_value
446 "         113       load_for_test
447 "         114       set_in_storage
448 "         115       bump
449 "         116       drop
450 "         117       UNUSED
451 "         118       (if unless)_zero
452 "         119       UNUSED
453 "         120       UNUSED
454 "         121       push_ref_count
455 "         122       UNUSED
456 "         123       float_power_of_fpbase
457 "         124       dt_jump1
458 "         125       pad_char_const_to_word
459 "         126       pad_char_const_to_dw
460 "         127       power_of_two
461 ^L
462 "         LANGUAGE MACROS
463 "
464 "
465           def_1op copy,1                          " copy opname
466           def_1op swap,2                          " swap opname
467           def_1op pop,3                           " pop opname
468           def_int_dat_var push_temp,4             " push_temp {int|dt_name|var}
469           def_1op_name push_variable,5            " push_variable dt_name <NON-OPT ONLY>
470           def_left emit_eis,7                     " emit_eis [equal_lengths]
471           def_int_dat_var push_constant,8         " push_constant {int|dt_name|var}
472           def_1op_name convert_constant,9         " convert_constant dt_name
473           def_array2 push_count_indexed,10        " push_count_indexed opname,(count,...)
474           def_left push_builtin,11                " push_builtin builtin_name
475 
476           macro proc                              " proc {int|var} [,error_lbl]
477           vfd 18/&2,10/&1,1/1,7/12
478           &end
479 
480           macro func                              " func {int|var} [,error_lbl]
481           vfd 18/&2,10/&1,1/1,7/13
482           &end
483 
484           macro call                              " call lbl,[error_lbl]
485           ife &2,()
486           zero &1,inhibit+14
487           ifend_exit
488           zero &1,inhibit+70
489           zero &2
490           &end
491 
492           def_1op_flag return,15                  " return [eaq_name|opname]
493           def_left jump,16                        " jump lbl
494 
495           macro scan                              " scan err_lbl,(exit_lbl...)
496 &u:
497           ife &1,continue
498           zero *,inhibit+17
499           ifend
500           ine &1,continue
501           scan_label &1,inhibit+17,&U,&p
502           ifend
503           &(2       scan_label &i,inhibit+16,&U,&p
504           &)
505 &U:
506           &end
507 
508           def_left exit,18                        " exit integer <NON-OPT ONLY>
509           def_left s_call,19                      " s_call lbl
510           def_1op set_inds_valid,20               " set_inds_valid eaq_name
511           def_type_cond if_dt,21                  " if_dt (dt_name...),lbl
512           def_type_cond unless_dt,22              " unless_dt (dt_name...),lbl
513           def_type_cond if_optype,23              " if_optype (dt_name...),lbl
514           def_type_cond unless_optype,24          " unless_optype (dt_name...),lbl
515           def_simple_cond array,25                " (if unless)_array lbl
516           def_1op_cond aligned,26                 " (if unless)_aligned opname,lbl
517           def_2op_left if_eaq,27                  " if_eaq eaq_name,opname,lbl
518           def_2op_left unless_eaq,28              " unless_eaq eaq_name,opname,lbl
519           def_array1 dt_jump,29                   " dt_jump (lbl,...)
520           def_array1 ind_jump,30                  " ind_jump (lbl,...)
521           def_general_cond if,31                  " if opname,relop,opname,lbl
522           def_general_cond unless,32              " unless opname,relop,opname,lbl
523           def_array2 jump_indexed,33              " jump_indexed opname,(lbl,...)
524           def_left emit,34                        " emit integer
525           def_left emit_data,34                   " emit_data integer
526 
527           macro emit_inst                         " emit_inst integer
528           zero &1,inst_word+inhibit+34
529           &end
530 
531           def_1op label,35                        " label opname
532           def_1op rel_con,36                      " rel_con opname
533           def_1op set_rel_constant,37             " set_rel_constant opname
534           def_1op_flag add_to_address,38          " add_to_address [opname]
535           def_1op free_temp,39                    " free_temp opname
536 
537           macro reserve_regs                      " reserve_regs (xpr_name,...)
538           &(&=&x,1&[zero &;+&]&i&),inhibit+40
539           &end
540 
541           def_2op_name load_pr,41                 " load_pr pr_name,opname
542           def_left use_a,42                       " use_a [protect_indicators] <OPT ONLY>
543           def_left use_q,43                       " use_q [protect_indicators] <OPT ONLY>
544 
545           macro make_addressable                  " make_addressable opname[,opname]
546           ife &2,()
547           zero 0,&1+inhibit+44
548           ifend_exit
549           zero &2,&1+inhibit+71
550           &end
551 
552           def_left use_eaq,45                     " use_eaq [protect_indicators]
553           def_2op load,46                         " load eaq_name,opname
554           def_1op_optleft load_top,47             " load_top eaq_name[,lbl]
555           def_2op in_reg,48                       " in_reg eaq_name,opname
556           def_left refresh_regs,49                " refresh_regs [protect_indicators] <OPT ONLY>
557           def_1op push_sf_arg_count,50            " push_sf_arg_count opname <NON-OPT ONLY>
558           def_1op_left increment,51               " increment opname,int
559           def_1op_left decrement,52               " decrement opname,int
560           def_1op_left multiply,53                " multiply opname,int
561           def_left push_count,54                  " push_count integer
562           def_1op push_bif_index,55               " push_bif_index opname
563           def_simple_cond saving_stack_extent,56  " (if unless)_saving_stack_extent lbl
564           def_left start_cat,57                   " start_cat lbl
565           def_left shorten_stack,58               " shorten_stack [protect_indicators]
566           def_left set_next_operand,59            " set_next_operand opno <OPT ONLY>
567           def_simple_cond ansi77,60               " (if unless)_ansi77 lbl
568           def_1op s_func_label,61                 " s_func_label opname <NON-OPT ONLY>
569           def_1op push_s_func_label,62            " push_s_func_label opname <NON-OPT ONLY>
570           def_1op_left push_s_func_var,63         " push_s_func_var opname,lbl <NON-OPT ONLY>
571           def_1op push_array_size,64              " push_array_size opname
572 
573           macro print                             " print errno,opname,...
574 &u:       vfd 18/&1,10/&U,1/1,7/65
575           rest_of_error &FQ2
576           equ &U,*-&p-1
577           &end
578 
579           macro error                             " error errno,opname,...
580           ine &1,()
581 &u:       vfd 18/&1,10/&U,1/1,7/66
582           rest_of_error &FQ2
583           equ &U,*-&p-1
584           ifend_exit
585           zero 0,inhibit+66
586           &end
587 
588           def_1op push_length,68                  " push_length opname
589           def_1op_cond variable_arglist,69        " (if unless)_variable_arglist opname,lbl
590           def_1op_left if_ind,72                  " if_ind eaq_name,lbl
591           def_1op_left unless_ind,73              " unless_ind eaq_name,lbl
592           def_simple_cond char_star_function,74   " (if unless)_char_star_function
593           def_simple_cond check_multiply,75       " (if unless)_check_multiply
594           def_left make_io_desc,76                " make_io_desc bits
595           def_1op_cond one_word_dt,77             " (if unless)_one_word_dt,lbl
596           def_1op assign_entry,78                 " assign_entry opname
597           def_simple_cond storage_created,79      " (if unless)_storage_created lbl
598           def_int_dat_var push_char_temp,80       " push_char_temp {int|dt_name|var}
599           def_1op_cond parameter,81               " (if unless)_parameter opname,lbl
600           def_1op_cond global,82                  " (if unless)_global opname,lbl <OPT ONLY>
601           def_1op_cond induction_var,83           " (if unless)_induction_var opname,lbl <OPT ONLY>
602           def_1op_cond fb17,84                    " (if unless)_fb17 opname,lbl <OPT ONLY>
603           def_1op_cond negative,85                " (if unless)_negative opname,lbl
604           def_1op_cond global_ind_var,86          " (if unless)_global_ind_var opname,lbl <OPT ONLY>
605           def_1op_cond local,87                   " (if unless)_local opname,lbl
606           def_1op_cond VLA,88                     " (if unless)_VLA opname,lbl
607           def_simple_cond main,89                 " (if unless)_main lbl
608           def_simple_cond cleanup,90              " (if unless)_cleanup lbl
609           def_simple_cond constant_addrs,91       " (if unless)_constant_addrs lbl
610           def_simple_cond hfp,92                  " (if unless)_hfp lbl
611           def_1op get_quick_label,93              " get_quick_label opname
612           def_1op_cond needs_descriptors,95       " (if unless)_needs_descriptors opname,lbl
613           def_simple_cond namelist_used,99        " (if unless)_namelist_used lbl
614           def_1op_left if_next_statement,101      " if_next_statement opname,lbl <OPT ONLY>
615           def_1op_left unless_next_statement,102  " unless_next_statement opname,lbl <OPT ONLY>
616           def_left push_operand,104               " push_operand lbl
617           def_2op compare,105                     " compare eaq_name,opname
618           def_1op round,108                       " round eaq_name
619           def_1op flush_ref,109                   " flush_ref opname
620           def_1op_optleft save_state,110          " save_state opname[,discard] <OPT ONLY>
621 
622           macro store                             " store eaq_name,opname[,??]
623           zero &=&3,no_update&[1&;0&],&1+&2+inhibit+111
624           &end
625 
626           def_2op_name load_pr_value,112          " load_pr_value eaq_name,opname
627           def_2op load_for_test,113               " load_for_test eaq_name,opname
628           def_1op set_in_storage,114              " set_in_storage opname
629 
630           macro bump                              " bump opname[,integer] <OPT ONLY>
631           zero &=&2,&[1&;&2&],&1+inhibit+115
632           &end
633 
634           macro drop                              " drop opname[,integer] <OPT ONLY>
635           zero &=&2,&[1&;&2&],&1+inhibit+116
636           &end
637 
638           def_1op_cond zero,118                   " (if unless)_zero opname,lbl
639           def_1op push_ref_count,121              " push_ref_count opname <OPT ONLY>
640           def_1op_left_flag float_power_of_fpbase,123
641           def_array2 dt_jump1,124                 " dt_jump1 opname,(lbl,...)
642           def_1op pad_char_const_to_word,125      " pad_char_const_to_word opname
643           def_1op pad_char_const_to_dw,126        " pad_char_const_to_dw opname
644           def_1op_left power_of_two,127           " power_of_two opname,lbl <OPT ONLY>
645 "
646 "
647 "         Macro numbers cannot exceed 127.
648 ^L
649 "         TABLE OF SIMPLE OPCODES
650 "
651 "         NOTE: If you add to or change any of these opcode assignments, be
652 "         sure to change BOTH ext_code_generator and fort_optimizing_cg!!!
653 "
654 "
655 "         1         push_label
656 "         2         push_rel_constant
657 "         3         s_return
658 "         4         free_regs
659 "         5         reset_regs
660 "         6         reset_eaq
661 "         7         use_ind
662 "         8         start_subscript
663 "         9         next_subscript
664 "         10        finish_subscript
665 "         11        subscript_error
666 "         12        s_func_finish
667 "         13        end_unit
668 "         14        stat
669 "         15        check_parameters
670 "         16        check_arg_list
671 "         17        store_arg_addrs
672 "         18        gen_itp_list
673 "         19        make_descriptors
674 "         20        set_runtime_block_loc
675 "         21        optimized_subscript
676 "         22        sub_index
677 "         23        discard_state
678 "         24        push_output
679 "         25        bump_args
680 "         26        drop_args
681 "         27        push_operand_count
682 "         28        skip_data
683 "         29        set_rounded
684 "         30        load_xreg
685 "         31        load_preg
686 "         32        drop_all_counts
687 "         33        ind_to_a
688 "         34        assign_index
689 "         35        compare_index
690 "         36        test_index
691 "         37        increment_index
692 "         38        decrement_index
693 "         39        make_substring
694 "         40        refresh_regs_if_next_is_jump
695 "         41        note_eligible_ind_var_use
696 "         42        free_descriptors
697 "         43        force_ql
698 "         44        int_to_char1
699 "         45        char1_to_int
700 "         46        continue_cat
701 "         47        finish_cat
702 "         48        set_needs_descriptors
703 "         49        desc_ptr_in_pr3
704 "         50        arg_ptr_in_pr1
705 "         52        emit_cleanup_args
706 "         53        emit_storage_args
707 "         54        emit_profile_entry
708 "         55        force_even
709 "         56        emit_entry_defs
710 "         57        rhs_fld
711 "         58        lhs_fld
712 ^L
713 "         SIMPLE LANGUAGE MACROS
714 "
715           def_simple push_label,1
716           def_simple push_rel_constant,2
717           def_simple s_return,3
718           def_simple free_regs,4
719           def_simple reset_regs,5                 " <NON-OPT ONLY>
720           def_simple reset_eaq,6
721           def_simple use_ind,7
722           def_simple start_subscript,8            " <NON-OPT ONLY>
723           def_simple next_subscript,9             " <NON-OPT ONLY>
724           def_simple finish_subscript,10          " <NON-OPT ONLY>
725           def_simple subscript_error,11           " <NON-OPT ONLY>
726           def_simple s_func_finish,12             " <NON-OPT ONLY>
727           def_simple end_unit,13
728           def_simple stat,14
729           def_simple check_parameters,15
730           def_simple check_arg_list,16
731           def_simple store_arg_addrs,17
732           def_simple gen_itp_list,18
733           def_simple make_descriptors,19
734           def_simple set_runtime_block_loc,20
735           def_simple optimized_subscript,21       " <OPT ONLY>
736           def_simple sub_index,22                 " <OPT ONLY>
737           def_simple discard_state,23             " <OPT ONLY>
738           def_simple push_output,24               " <OPT ONLY>
739           def_simple bump_args,25                 " <OPT ONLY>
740           def_simple drop_args,26                 " <OPT ONLY>
741           def_simple push_operand_count,27        " <OPT ONLY>
742           def_simple skip_data,28                 " <NON-OPT ONLY>
743           def_simple set_rounded,29               " <OPT ONLY>
744           def_simple load_xreg,30                 " <OPT ONLY>
745           def_simple load_preg,31                 " <OPT ONLY>
746           def_simple drop_all_counts,32           " <OPT ONLY>
747           def_simple ind_to_a,33                  " <OPT ONLY>
748           def_simple assign_index,34              " <OPT ONLY>
749           def_simple compare_index,35             " <OPT ONLY>
750           def_simple test_index,36                " <OPT ONLY>
751           def_simple increment_index,37           " <OPT ONLY>
752           def_simple decrement_index,38           " <OPT ONLY>
753           def_simple make_substring,39            " <NON-OPT ONLY>
754           def_simple refresh_regs_if_next_is_jump,40 " <OPT ONLY>
755           def_simple note_eligible_ind_var_use,41 " <OPT ONLY>
756           def_simple free_descriptors,42
757           def_simple force_ql,43                  " <OPT ONLY>
758           def_simple int_to_char1,44
759           def_simple char1_to_int,45
760           def_simple continue_cat,46
761           def_simple finish_cat,47
762           def_simple set_needs_descriptors,48
763           def_simple desc_ptr_in_pr3,49
764           def_simple arg_ptr_in_pr1,50
765           def_simple emit_cleanup_args,52
766           def_simple emit_storage_args,53
767           def_simple emit_profile_entry,54
768           def_simple force_even,55
769           def_simple emit_entry_defs,56
770           def_simple rhs_fld,57
771           def_simple lhs_fld,58
772 "
773 " END   fort_macros.incl.alm