1 <DEFINE AND-GEN (OP1 OP2 DEST "OPTIONAL" HINT)
2 #DECL ((OP1 OP2) <OR FIX VARTBL> (DEST) <OR VARTBL ATOM>)
3 <ANDOR-GEN .OP1 .OP2 .DEST AND>>
5 <DEFINE OR-GEN (OP1 OP2 DEST "OPTIONAL" HINT)
6 #DECL ((OP1 OP2) <OR FIX VARTBL> (DEST) <OR VARTBL ATOM>)
7 <ANDOR-GEN .OP1 .OP2 .DEST OR>>
9 <DEFINE EOR-GEN (OP1 OP2 DEST "OPTIONAL" HINT)
10 #DECL ((OP1 OP2) <OR FIX VARTBL> (DEST) <OR VARTBL ATOM>)
11 <ANDOR-GEN .OP1 .OP2 .DEST EOR>>
13 <DEFINE EQV-GEN (OP1 OP2 DEST "OPTIONAL" HINT)
14 #DECL ((OP1 OP2) <OR FIX VARTBL> (DEST) <OR VARTBL ATOM>)
15 <ANDOR-GEN .OP1 .OP2 .DEST EQV>>
17 <DEFINE ANDOR-GEN (OP1 OP2 DEST OPC "AUX" (VAC <>) TMP LVAR)
18 #DECL ((OP1 OP2) <OR FIX VARTBL> (DEST) <OR VARTBL ATOM> (OPC) ATOM)
19 <COND (<TYPE? <SET TMP .OP1> FIX> <SET OP1 .OP2> <SET OP2 .TMP>)>
20 <COND (<AND <SET LVAR <FIND-CACHE-VAR .OP1>>
21 <SET VAC <LINKVAR-VALUE-AC .LVAR>>
23 (<AND <TYPE? .OP2 VARTBL>
24 <SET LVAR <FIND-CACHE-VAR <SET TMP .OP2>>>
25 <SET VAC <LINKVAR-VALUE-AC .LVAR>>
30 <COND (.VAC <MUNG-AC .VAC>)>
31 <COND (<TYPE? .OP2 FIX>
33 <SET OP2 <CHTYPE <XORB .OP2 -1> FIX>>
35 (<==? .OPC AND> <SET OP2 <CHTYPE <XORB .OP2 -1> FIX>>)>)
36 (<OR <==? .OPC EQV> <==? .OPC AND>>
37 <COND (.VAC <EMIT ,INST-MCOML <MA-REG .VAC> <MA-REG .VAC>>)
40 <VAR-VALUE-ADDRESS .OP1>
41 <MA-REG <SET VAC <GET-AC PREF-VAL T>>>>)>
42 <COND (<==? .OPC EQV> <SET OPC EOR>)>)>
46 <EMIT <COND (<==? .OPC AND> ,INST-BICL2)
47 (<==? .OPC EOR> ,INST-XORL2)
49 <COND (<TYPE? .OP2 FIX> <MA-IMM .OP2>)
50 (ELSE <VAR-VALUE-ADDRESS .OP2>)>
53 <EMIT <COND (<==? .OPC AND> ,INST-BICL3)
54 (<==? .OPC EOR> ,INST-XORL3)
57 <VAR-VALUE-ADDRESS .OP1>
58 <MA-REG <SET VAC <GET-AC PREF-VAL T>>>>)
60 <EMIT <COND (<==? .OPC AND> ,INST-BICL3)
61 (<==? .OPC EOR> ,INST-XORL3)
63 <COND (<TYPE? .OP1 FIX> <MA-IMM .OP1>)
65 (ELSE <VAR-VALUE-ADDRESS .OP1>)>
66 <VAR-VALUE-ADDRESS .OP2>
68 (ELSE <SET VAC <GET-AC PREF-VAL T>>)>>>)>
69 <DEST-DECL .VAC .DEST FIX>
72 <DEFINE ASH-GEN (VAL1 VAL2 DEST "OPTIONAL" HINT)
73 #DECL ((VAL1 VAL2) <OR FIX VARTBL> (DEST) <OR ATOM VARTBL>)
74 <SHIFT-GEN .VAL1 .VAL2 .DEST ASH>>
76 <DEFINE LSH-GEN (VAL1 VAL2 DEST "OPTIONAL" HINT)
77 #DECL ((VAL1 VAL2) <OR FIX VARTBL> (DEST) <OR ATOM VARTBL>)
78 <SHIFT-GEN .VAL1 .VAL2 .DEST LSH>>
80 <DEFINE ROT-GEN (VAL1 VAL2 DEST "OPTIONAL" HINT)
81 #DECL ((VAL1 VAL2) <OR FIX VARTBL> (DEST) <OR ATOM VARTBL>)
82 <SHIFT-GEN .VAL1 .VAL2 .DEST ROT>>
84 <DEFINE SHIFT-GEN (VAL1 VAL2 DEST OPC "AUX" (VAC <>) (USE-LONG <>) LVAR)
85 #DECL ((VAL1 VAL2) <OR VARTBL FIX> (DEST) <OR VARTBL ATOM> (OPC) ATOM)
86 <COND (<AND <==? .OPC LSH>
87 <OR <TYPE? .VAL1 VARTBL> <L? .VAL1 0>>
88 <OR <TYPE? .VAL2 VARTBL> <L? .VAL2 0>>>
89 <SET VAC <GET-AC PREF-VAL T>>
90 <GET-AC <NEXT-AC .VAC> T>
92 <COND (<TYPE? .VAL1 VARTBL>
93 <LOAD-VAR .VAL1 VALUE T .VAC>)
94 (ELSE <LOAD-CONSTANT .VAC .VAL1>)>
95 <EMIT ,INST-CLRL <MA-REG <NEXT-AC .VAC>>>)
96 (<OR <TYPE? .VAL1 FIX>
97 <NOT <AND <SET LVAR <FIND-CACHE-VAR .VAL1>>
98 <SET VAC <LINKVAR-VALUE-AC .LVAR>>
101 <COND (<AND .VAC <N==? .VAL1 .DEST>>
103 <EMIT <COND (<==? .OPC ROT> ,INST-ROTL)
104 (.USE-LONG ,INST-ASHQ)
106 <COND (<TYPE? .VAL2 FIX> <MA-IMM .VAL2>)
107 (ELSE <VAR-VALUE-ADDRESS .VAL2>)>
108 <COND (.VAC <MA-REG .VAC>)
109 (<TYPE? .VAL1 FIX> <MA-IMM .VAL1>)
110 (ELSE <VAR-VALUE-ADDRESS .VAL1>)>
111 <COND (.USE-LONG <MA-REG .VAC>)
113 (ELSE <MA-REG <SET VAC <GET-AC PREF-VAL>>>)>>
114 <DEST-DECL .VAC .DEST FIX>