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 &&=&x1& 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 &iinhibit+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 &&=&x1&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 opnameopname
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_namelbl
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 opnamediscard <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 opnameinteger <OPT ONLY>
631 zero &=&2,&1&;&2&,&1+inhibit+115
632 &end
633
634 macro drop " drop opnameinteger <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