3 <ENTRY ARITH-GEN ABS-GEN FLOAT-GEN FIX-GEN MOD-GEN ROT-GEN LSH-GEN 1?-GEN
4 GEN-FLOAT GENFLOAT MIN-MAX PRED:BRANCH:GEN 0-TEST FLIP TEST-GEN>
6 <USE "CACS" "CODGEN" "CHKDCL" "COMCOD" "COMPDEC" "CONFOR" "STRGEN"><DEFINE TEST-GEN (NOD WHERE
7 "OPTIONAL" (NOTF <>) (BRANCH <>) (DIR <>)
8 "AUX" (K <1 <KIDS .NOD>>) (K2 <2 <KIDS .NOD>>) REGT REGT2
9 (S <SW? <NODE-NAME .NOD>>) TRANSFORM ATYP ATYP2 B2
10 (SDIR .DIR) (RW .WHERE) TRANS1 (FLS <==? .RW FLUSHED>)
11 TEM (ONO .NO-KILL) (NO-KILL .ONO)
13 #DECL ((NOD K K2) NODE (REGT) DATUM (TRANSFORM) <SPECIAL TRANS>
14 (TRANS1) TRANS (NO-KILL) <SPECIAL LIST>)
16 <COND (<==? .WHERE FLUSHED> FLUSHED)
17 (ELSE <UPDATE-WHERE .NOD .WHERE>)>>
18 <COND (<OR <==? <NODE-TYPE .K2> ,QUOTE-CODE>
19 <AND <NOT <MEMQ <NODE-TYPE .K> ,SNODES>>
20 <NOT <SIDE-EFFECTS .NOD>>
21 <MEMQ <NODE-TYPE .K2> ,SNODES>>>
22 <COND (<AND <==? <NODE-TYPE .K> ,LVAL-CODE>
23 <COND (<==? <LENGTH <SET TEM <TYPE-INFO .K>>> 2> <2 .TEM>)
25 <SET TEM <NODE-NAME .K>>
28 <AND <==? <1 .LL> .TEM> <MAPLEAVE>>>
30 <SET NO-KILL ((<NODE-NAME .K> <>) !.NO-KILL)>)>
32 <SET K2 <1 <KIDS .NOD>>>
33 <PUT .NOD ,NODE-NAME <FLOP <NODE-NAME .NOD>>>)>
34 <SET ATYP <ISTYPE? <RESULT-TYPE .K2>>>
35 <SET ATYP2 <ISTYPE-GOOD? <RESULT-TYPE .K>>>
37 <DATUM <COND (.ATYP .ATYP) (ELSE ANY-AC)> ANY-AC>>
39 <COND (<OR <==? <NODE-TYPE .K> ,QUOTE-CODE>
40 <NOT <SIDE-EFFECTS .K2>>>
42 (.ATYP2 <DATUM .ATYP2 ANY-AC>)
43 (ELSE <DATUM ANY-AC ANY-AC>)>>
44 <COND (<N==? <NODE-TYPE .K> ,QUOTE-CODE>
45 <COND (<OR <==? .ATYP FLOAT> <==? .ATYP2 FLOAT>>)
47 <SET TRANSFORM <MAKE-TRANS .NOD 1 1 0 1 1 <+ 2 <- .S>> .S>>
48 <PUT <2 .TRANSFORM> 6 1>
49 <PUT <2 .TRANSFORM> 7 0>)>
50 <SET REGT2 <GEN .K .REGT2>>
51 <COND (<ASSIGNED? TRANSFORM>
52 <SET TRANS1 .TRANSFORM>
53 <SET TRANSFORM <UPDATE-TRANS .NOD .TRANS1>>)>
54 <COND (<TYPE? <DATVAL .REGT2> AC>
55 <SET REGT <GEN .K2 DONT-CARE>>
56 <COND (<TYPE? <DATVAL .REGT2> AC>
57 <PUT .NOD ,NODE-NAME <FLOP <NODE-NAME .NOD>>>
61 <COND (<ASSIGNED? TRANSFORM>
63 <SET TRANS1 .TRANSFORM>
64 <SET TRANSFORM .TEM>)>
68 (ELSE <TOACV .REGT>)>)
69 (ELSE <SET REGT <GEN .K2 .REGT>>)>)
71 <COND (<OR <==? .ATYP FIX>
74 <SET TRANSFORM <MAKE-TRANS .NOD 1 1 0 1 1 <+ 2 <- .S>> .S>>)>
75 <COND (<==? .ATYP FIX>
76 <PUT <PUT <2 .TRANSFORM> 2 1> 3 <FIX <NODE-NAME .K>>>)>
77 <COND (<LN-LST .K2> <SET REGT ,NO-DATUM>)
79 <SET REGT <GEN .K2 .REGT>>
81 <PUT .REGT ,DATTYP .ATYP>)>
89 <COND (<ASSIGNED? TRANSFORM>
90 <DO-TRANS <FIX <NODE-NAME .K>> .TRANSFORM>)
91 (ELSE <NODE-NAME .K>)>
92 <AND <ASSIGNED? TRANSFORM> <NOT <0? <1 <3 .TRANSFORM>>>>>>
94 <DELAY-KILL .NO-KILL .ONO>
95 <AND <ASSIGNED? TRANSFORM>
96 <CONFORM .REGT .REGT2 .TRANSFORM .TRANS1>
97 <PUT .NOD ,NODE-NAME <FLOP <NODE-NAME .NOD>>>>
99 <AND .NOTF <SET DIR <NOT .DIR>>>
101 <GEN-COMP2 <NODE-NAME .NOD>
106 <COND (.FLS .DIR) (ELSE <NOT .DIR>)>
107 <COND (.FLS .BRANCH) (ELSE <SET B2 <MAKE:TAG>>)>>
109 <SET RW <MOVE:ARG <MOVE:ARG <REFERENCE .SDIR> .WHERE> .RW>>
115 <GEN-COMP2 <NODE-NAME .NOD>
121 <SET BRANCH <MAKE:TAG>>>
122 <MOVE:ARG <REFERENCE T> .WHERE>
124 <BRANCH:TAG <SET B2 <MAKE:TAG>>>
126 <MOVE:ARG <REFERENCE <>> .WHERE>
128 <MOVE:ARG .WHERE .RW>)>>