#define STACK_MACHINE #include "c.h" #define NODEPTR_TYPE Node #define OP_LABEL(p) ((p)->op) #define LEFT_CHILD(p) ((p)->kids[0]) #define RIGHT_CHILD(p) ((p)->kids[1]) #define STATE_LABEL(p) ((p)->x.state) #define REGS 0xffffffff static void address(Symbol, Symbol, long); static void defaddress(Symbol); static void defconst(int, int, Value); static void defstring(int, char *); static void defsymbol(Symbol); static void emit2(Node); static void export(Symbol); static void function(Symbol, Symbol [], Symbol [], int); static void global(Symbol); static void import(Symbol); static void local(Symbol); static void progbeg(int, char **); static void progend(void); static void segment(int); static void space(int); extern void stackemit(Node forest); extern Node stackgen(Node forest); extern void swtch(Symbol label); /* generated at Tue May 13 12:28:20 2014 by $Id: lburg.c,v 2.10 2002/03/08 18:45:21 drh Exp $ */ static void _kids(NODEPTR_TYPE, int, NODEPTR_TYPE[]); static void _label(NODEPTR_TYPE); static int _rule(void*, int); #define _stmt_NT 1 #define _stk_NT 2 #define _tmp_NT 3 #define _addr_NT 4 #define _vread_NT 5 #define _var_NT 6 #define _cnst1_NT 7 #define _cnst2_NT 8 #define _cnst4_NT 9 #define _addr4_NT 10 #define _cnst3_NT 11 #define _con8_NT 12 #define _con17_NT 13 #define _con24_NT 14 #define _glob_NT 15 #define _local_NT 16 #define _zero_NT 17 #define _tuck1_NT 18 #define _tuck2_NT 19 #define _tuck3_NT 20 #define _tuck4_NT 21 static char *_ntname[] = { 0, "stmt", "stk", "tmp", "addr", "vread", "var", "cnst1", "cnst2", "cnst4", "addr4", "cnst3", "con8", "con17", "con24", "glob", "local", "zero", "tuck1", "tuck2", "tuck3", "tuck4", 0 }; struct _state { short cost[22]; struct { unsigned int _stmt:7; unsigned int _stk:7; unsigned int _tmp:1; unsigned int _addr:6; unsigned int _vread:3; unsigned int _var:2; unsigned int _cnst1:3; unsigned int _cnst2:3; unsigned int _cnst4:3; unsigned int _addr4:5; unsigned int _cnst3:1; unsigned int _con8:3; unsigned int _con17:3; unsigned int _con24:2; unsigned int _glob:1; unsigned int _local:2; unsigned int _zero:3; unsigned int _tuck1:3; unsigned int _tuck2:3; unsigned int _tuck3:3; unsigned int _tuck4:3; } rule; }; static short _nts_0[] = { _tmp_NT, 0 }; static short _nts_1[] = { 0 }; static short _nts_2[] = { _vread_NT, 0 }; static short _nts_3[] = { _stk_NT, _tmp_NT, 0 }; static short _nts_4[] = { _addr_NT, _tmp_NT, 0 }; static short _nts_5[] = { _stk_NT, _var_NT, 0 }; static short _nts_6[] = { _addr_NT, _var_NT, 0 }; static short _nts_7[] = { _con8_NT, 0 }; static short _nts_8[] = { _con17_NT, 0 }; static short _nts_9[] = { _con24_NT, 0 }; static short _nts_10[] = { _stk_NT, 0 }; static short _nts_11[] = { _addr_NT, 0 }; static short _nts_12[] = { _addr4_NT, 0 }; static short _nts_13[] = { _stk_NT, _local_NT, 0 }; static short _nts_14[] = { _addr_NT, _local_NT, 0 }; static short _nts_15[] = { _stk_NT, _addr_NT, 0 }; static short _nts_16[] = { _addr_NT, _addr_NT, 0 }; static short _nts_17[] = { _stk_NT, _glob_NT, 0 }; static short _nts_18[] = { _addr_NT, _glob_NT, 0 }; static short _nts_19[] = { _local_NT, 0 }; static short _nts_20[] = { _tuck1_NT, 0 }; static short _nts_21[] = { _tuck2_NT, 0 }; static short _nts_22[] = { _tuck3_NT, 0 }; static short _nts_23[] = { _tuck4_NT, 0 }; static short _nts_24[] = { _addr_NT, _stk_NT, 0 }; static short _nts_25[] = { _stk_NT, _stk_NT, 0 }; static short _nts_26[] = { _addr4_NT, _stk_NT, 0 }; static short _nts_27[] = { _stk_NT, _addr4_NT, 0 }; static short _nts_28[] = { _cnst1_NT, _stk_NT, 0 }; static short _nts_29[] = { _stk_NT, _cnst1_NT, 0 }; static short _nts_30[] = { _addr4_NT, _zero_NT, 0 }; static short _nts_31[] = { _addr4_NT, _cnst4_NT, 0 }; static short _nts_32[] = { _addr4_NT, _addr4_NT, 0 }; static short _nts_33[] = { _addr_NT, _addr4_NT, 0 }; static short _nts_34[] = { _addr4_NT, _addr_NT, 0 }; static short _nts_35[] = { _addr_NT, _zero_NT, 0 }; static short _nts_36[] = { _addr_NT, _cnst1_NT, 0 }; static short _nts_37[] = { _addr_NT, _cnst2_NT, 0 }; static short _nts_38[] = { _addr_NT, _cnst4_NT, 0 }; static short _nts_39[] = { _stk_NT, _cnst2_NT, 0 }; static short _nts_40[] = { _stk_NT, _cnst3_NT, 0 }; static short _nts_41[] = { _stk_NT, _cnst4_NT, 0 }; static short _nts_42[] = { _glob_NT, 0 }; static short _nts_43[] = { _stk_NT, _zero_NT, 0 }; static short *_nts[] = { 0, /* 0 */ _nts_0, /* 1 */ _nts_0, /* 2 */ _nts_0, /* 3 */ _nts_0, /* 4 */ _nts_0, /* 5 */ _nts_0, /* 6 */ _nts_0, /* 7 */ _nts_0, /* 8 */ _nts_1, /* 9 */ _nts_1, /* 10 */ _nts_1, /* 11 */ _nts_1, /* 12 */ _nts_2, /* 13 */ _nts_2, /* 14 */ _nts_2, /* 15 */ _nts_2, /* 16 */ _nts_2, /* 17 */ _nts_2, /* 18 */ _nts_2, /* 19 */ _nts_2, /* 20 */ _nts_3, /* 21 */ _nts_3, /* 22 */ _nts_3, /* 23 */ _nts_3, /* 24 */ _nts_3, /* 25 */ _nts_3, /* 26 */ _nts_4, /* 27 */ _nts_3, /* 28 */ _nts_5, /* 29 */ _nts_5, /* 30 */ _nts_5, /* 31 */ _nts_5, /* 32 */ _nts_5, /* 33 */ _nts_5, /* 34 */ _nts_6, /* 35 */ _nts_5, /* 36 */ _nts_1, /* 37 */ _nts_1, /* 38 */ _nts_1, /* 39 */ _nts_1, /* 40 */ _nts_1, /* 41 */ _nts_1, /* 42 */ _nts_1, /* 43 */ _nts_1, /* 44 */ _nts_1, /* 45 */ _nts_1, /* 46 */ _nts_1, /* 47 */ _nts_1, /* 48 */ _nts_1, /* 49 */ _nts_1, /* 50 */ _nts_1, /* 51 */ _nts_1, /* 52 */ _nts_1, /* 53 */ _nts_1, /* 54 */ _nts_1, /* 55 */ _nts_1, /* 56 */ _nts_1, /* 57 */ _nts_1, /* 58 */ _nts_1, /* 59 */ _nts_1, /* 60 */ _nts_1, /* 61 */ _nts_1, /* 62 */ _nts_1, /* 63 */ _nts_1, /* 64 */ _nts_1, /* 65 */ _nts_1, /* 66 */ _nts_1, /* 67 */ _nts_1, /* 68 */ _nts_1, /* 69 */ _nts_1, /* 70 */ _nts_1, /* 71 */ _nts_1, /* 72 */ _nts_1, /* 73 */ _nts_1, /* 74 */ _nts_7, /* 75 */ _nts_8, /* 76 */ _nts_9, /* 77 */ _nts_1, /* 78 */ _nts_1, /* 79 */ _nts_1, /* 80 */ _nts_10, /* 81 */ _nts_11, /* 82 */ _nts_1, /* 83 */ _nts_1, /* 84 */ _nts_1, /* 85 */ _nts_1, /* 86 */ _nts_1, /* 87 */ _nts_12, /* 88 */ _nts_1, /* 89 */ _nts_1, /* 90 */ _nts_1, /* 91 */ _nts_1, /* 92 */ _nts_1, /* 93 */ _nts_1, /* 94 */ _nts_1, /* 95 */ _nts_13, /* 96 */ _nts_13, /* 97 */ _nts_14, /* 98 */ _nts_13, /* 99 */ _nts_15, /* 100 */ _nts_15, /* 101 */ _nts_15, /* 102 */ _nts_15, /* 103 */ _nts_15, /* 104 */ _nts_15, /* 105 */ _nts_16, /* 106 */ _nts_15, /* 107 */ _nts_17, /* 108 */ _nts_17, /* 109 */ _nts_18, /* 110 */ _nts_17, /* 111 */ _nts_19, /* 112 */ _nts_19, /* 113 */ _nts_19, /* 114 */ _nts_19, /* 115 */ _nts_10, /* 116 */ _nts_10, /* 117 */ _nts_10, /* 118 */ _nts_10, /* 119 */ _nts_10, /* 120 */ _nts_10, /* 121 */ _nts_10, /* 122 */ _nts_11, /* 123 */ _nts_11, /* 124 */ _nts_10, /* 125 */ _nts_10, /* 126 */ _nts_10, /* 127 */ _nts_10, /* 128 */ _nts_10, /* 129 */ _nts_10, /* 130 */ _nts_10, /* 131 */ _nts_10, /* 132 */ _nts_10, /* 133 */ _nts_10, /* 134 */ _nts_10, /* 135 */ _nts_10, /* 136 */ _nts_10, /* 137 */ _nts_10, /* 138 */ _nts_10, /* 139 */ _nts_10, /* 140 */ _nts_10, /* 141 */ _nts_10, /* 142 */ _nts_10, /* 143 */ _nts_10, /* 144 */ _nts_10, /* 145 */ _nts_10, /* 146 */ _nts_10, /* 147 */ _nts_10, /* 148 */ _nts_10, /* 149 */ _nts_10, /* 150 */ _nts_10, /* 151 */ _nts_20, /* 152 */ _nts_21, /* 153 */ _nts_22, /* 154 */ _nts_23, /* 155 */ _nts_20, /* 156 */ _nts_21, /* 157 */ _nts_22, /* 158 */ _nts_23, /* 159 */ _nts_11, /* 160 */ _nts_11, /* 161 */ _nts_11, /* 162 */ _nts_11, /* 163 */ _nts_11, /* 164 */ _nts_11, /* 165 */ _nts_11, /* 166 */ _nts_11, /* 167 */ _nts_24, /* 168 */ _nts_15, /* 169 */ _nts_25, /* 170 */ _nts_25, /* 171 */ _nts_25, /* 172 */ _nts_25, /* 173 */ _nts_25, /* 174 */ _nts_25, /* 175 */ _nts_26, /* 176 */ _nts_27, /* 177 */ _nts_26, /* 178 */ _nts_27, /* 179 */ _nts_28, /* 180 */ _nts_28, /* 181 */ _nts_29, /* 182 */ _nts_29, /* 183 */ _nts_29, /* 184 */ _nts_29, /* 185 */ _nts_25, /* 186 */ _nts_25, /* 187 */ _nts_30, /* 188 */ _nts_31, /* 189 */ _nts_32, /* 190 */ _nts_32, /* 191 */ _nts_33, /* 192 */ _nts_33, /* 193 */ _nts_34, /* 194 */ _nts_34, /* 195 */ _nts_35, /* 196 */ _nts_24, /* 197 */ _nts_15, /* 198 */ _nts_36, /* 199 */ _nts_37, /* 200 */ _nts_38, /* 201 */ _nts_11, /* 202 */ _nts_32, /* 203 */ _nts_24, /* 204 */ _nts_15, /* 205 */ _nts_36, /* 206 */ _nts_37, /* 207 */ _nts_38, /* 208 */ _nts_11, /* 209 */ _nts_25, /* 210 */ _nts_25, /* 211 */ _nts_25, /* 212 */ _nts_25, /* 213 */ _nts_25, /* 214 */ _nts_25, /* 215 */ _nts_25, /* 216 */ _nts_25, /* 217 */ _nts_39, /* 218 */ _nts_39, /* 219 */ _nts_40, /* 220 */ _nts_40, /* 221 */ _nts_41, /* 222 */ _nts_41, /* 223 */ _nts_29, /* 224 */ _nts_29, /* 225 */ _nts_29, /* 226 */ _nts_29, /* 227 */ _nts_39, /* 228 */ _nts_39, /* 229 */ _nts_39, /* 230 */ _nts_39, /* 231 */ _nts_25, /* 232 */ _nts_25, /* 233 */ _nts_25, /* 234 */ _nts_25, /* 235 */ _nts_10, /* 236 */ _nts_10, /* 237 */ _nts_10, /* 238 */ _nts_25, /* 239 */ _nts_25, /* 240 */ _nts_25, /* 241 */ _nts_25, /* 242 */ _nts_10, /* 243 */ _nts_10, /* 244 */ _nts_10, /* 245 */ _nts_10, /* 246 */ _nts_10, /* 247 */ _nts_10, /* 248 */ _nts_10, /* 249 */ _nts_10, /* 250 */ _nts_10, /* 251 */ _nts_10, /* 252 */ _nts_10, /* 253 */ _nts_10, /* 254 */ _nts_12, /* 255 */ _nts_11, /* 256 */ _nts_10, /* 257 */ _nts_11, /* 258 */ _nts_10, /* 259 */ _nts_1, /* 260 */ _nts_42, /* 261 */ _nts_11, /* 262 */ _nts_25, /* 263 */ _nts_25, /* 264 */ _nts_25, /* 265 */ _nts_25, /* 266 */ _nts_16, /* 267 */ _nts_16, /* 268 */ _nts_16, /* 269 */ _nts_16, /* 270 */ _nts_35, /* 271 */ _nts_35, /* 272 */ _nts_25, /* 273 */ _nts_25, /* 274 */ _nts_25, /* 275 */ _nts_25, /* 276 */ _nts_43, /* 277 */ _nts_43, /* 278 */ _nts_43, /* 279 */ _nts_43, /* 280 */ _nts_43, /* 281 */ _nts_43, /* 282 */ _nts_25, /* 283 */ _nts_25, /* 284 */ _nts_25, /* 285 */ _nts_25, /* 286 */ _nts_32, /* 287 */ _nts_32, /* 288 */ _nts_32, /* 289 */ _nts_32, /* 290 */ _nts_25, /* 291 */ _nts_25, /* 292 */ _nts_25, /* 293 */ _nts_25, /* 294 */ _nts_25, /* 295 */ _nts_25, /* 296 */ _nts_42, /* 297 */ _nts_42, /* 298 */ _nts_42, /* 299 */ _nts_42, /* 300 */ _nts_42, /* 301 */ _nts_42, /* 302 */ _nts_11, /* 303 */ _nts_11, /* 304 */ _nts_11, /* 305 */ _nts_11, /* 306 */ _nts_11, /* 307 */ _nts_11, /* 308 */ _nts_10, /* 309 */ _nts_10, /* 310 */ _nts_10, /* 311 */ _nts_11, /* 312 */ _nts_1, /* 313 */ _nts_10, /* 314 */ _nts_10, /* 315 */ _nts_11, /* 316 */ _nts_10, /* 317 */ _nts_16, /* 318 */ }; static char *_templates[] = { /* 0 */ 0, /* 1 */ "@tmp %0\n", /* stk: INDIRI1(tmp) */ /* 2 */ "@tmp %0\n", /* stk: INDIRU1(tmp) */ /* 3 */ "@tmp %0\n", /* stk: INDIRI2(tmp) */ /* 4 */ "@tmp %0\n", /* stk: INDIRU2(tmp) */ /* 5 */ "@tmp %0\n", /* stk: INDIRF4(tmp) */ /* 6 */ "@tmp %0\n", /* stk: INDIRI4(tmp) */ /* 7 */ "@tmp %0\n", /* addr: INDIRP4(tmp) */ /* 8 */ "@tmp %0\n", /* stk: INDIRU4(tmp) */ /* 9 */ "\n", /* vread: STACKP */ /* 10 */ "swap\n", /* vread: STACKP */ /* 11 */ "rsd%b\n", /* vread: STACKP */ /* 12 */ "copy%b\n", /* vread: COPYP */ /* 13 */ "\n", /* stk: INDIRI1(vread) */ /* 14 */ "\n", /* stk: INDIRU1(vread) */ /* 15 */ "\n", /* stk: INDIRI2(vread) */ /* 16 */ "\n", /* stk: INDIRU2(vread) */ /* 17 */ "\n", /* stk: INDIRF4(vread) */ /* 18 */ "\n", /* stk: INDIRI4(vread) */ /* 19 */ "\n", /* addr: INDIRP4(vread) */ /* 20 */ "\n", /* stk: INDIRU4(vread) */ /* 21 */ "!tmp %1\n", /* stmt: ASGNI1(stk,tmp) */ /* 22 */ "!tmp %1\n", /* stmt: ASGNU1(stk,tmp) */ /* 23 */ "!tmp %1\n", /* stmt: ASGNI2(stk,tmp) */ /* 24 */ "!tmp %1\n", /* stmt: ASGNU2(stk,tmp) */ /* 25 */ "!tmp %1\n", /* stmt: ASGNF4(stk,tmp) */ /* 26 */ "!tmp %1\n", /* stmt: ASGNI4(stk,tmp) */ /* 27 */ "!tmp %1\n", /* stmt: ASGNP4(addr,tmp) */ /* 28 */ "!tmp %1\n", /* stmt: ASGNU4(stk,tmp) */ /* 29 */ "\n", /* stmt: ASGNI1(stk,var) */ /* 30 */ "\n", /* stmt: ASGNU1(stk,var) */ /* 31 */ "\n", /* stmt: ASGNI2(stk,var) */ /* 32 */ "\n", /* stmt: ASGNU2(stk,var) */ /* 33 */ "\n", /* stmt: ASGNF4(stk,var) */ /* 34 */ "\n", /* stmt: ASGNI4(stk,var) */ /* 35 */ "\n", /* stmt: ASGNP4(addr,var) */ /* 36 */ "\n", /* stmt: ASGNU4(stk,var) */ /* 37 */ "\n", /* var: STACKP */ /* 38 */ "swap\n", /* var: STACKP */ /* 39 */ "rsu%b\n", /* var: STACKP */ /* 40 */ "%a", /* tmp: VREGP */ /* 41 */ "", /* cnst1: CNSTI1 */ /* 42 */ "", /* cnst1: CNSTU1 */ /* 43 */ "", /* cnst1: CNSTI2 */ /* 44 */ "", /* cnst1: CNSTU2 */ /* 45 */ "", /* cnst1: CNSTI4 */ /* 46 */ "", /* cnst1: CNSTU4 */ /* 47 */ "", /* cnst2: CNSTI1 */ /* 48 */ "", /* cnst2: CNSTU1 */ /* 49 */ "", /* cnst2: CNSTI2 */ /* 50 */ "", /* cnst2: CNSTU2 */ /* 51 */ "", /* cnst2: CNSTI4 */ /* 52 */ "", /* cnst2: CNSTU4 */ /* 53 */ "", /* cnst4: CNSTI1 */ /* 54 */ "", /* cnst4: CNSTU1 */ /* 55 */ "", /* cnst4: CNSTI2 */ /* 56 */ "", /* cnst4: CNSTU2 */ /* 57 */ "", /* cnst4: CNSTI4 */ /* 58 */ "", /* cnst4: CNSTU4 */ /* 59 */ "lit %a\n", /* addr4: CNSTP4 */ /* 60 */ "lit %a\n", /* addr4: CNSTI4 */ /* 61 */ "lit %a\n", /* addr4: CNSTU4 */ /* 62 */ "", /* cnst3: CNSTI4 */ /* 63 */ "%a", /* con8: CNSTI1 */ /* 64 */ "%a", /* con8: CNSTU1 */ /* 65 */ "%a", /* con8: CNSTI2 */ /* 66 */ "%a", /* con8: CNSTU2 */ /* 67 */ "%a", /* con8: CNSTI4 */ /* 68 */ "%a", /* con8: CNSTU4 */ /* 69 */ "%a", /* con17: CNSTI2 */ /* 70 */ "%a", /* con17: CNSTU2 */ /* 71 */ "%a", /* con17: CNSTI4 */ /* 72 */ "%a", /* con17: CNSTU4 */ /* 73 */ "%a", /* con24: CNSTI4 */ /* 74 */ "%a", /* con24: CNSTU4 */ /* 75 */ "#\n", /* stk: con8 */ /* 76 */ "#\n", /* stk: con17 */ /* 77 */ "#\n", /* stk: con24 */ /* 78 */ "#\n", /* stk: CNSTI4 */ /* 79 */ "#\n", /* stk: CNSTU4 */ /* 80 */ "#\n", /* addr: CNSTP4 */ /* 81 */ "drop\n", /* stmt: stk */ /* 82 */ "drop\n", /* stmt: addr */ /* 83 */ "%a", /* glob: ADDRGP4 */ /* 84 */ "%a", /* local: ADDRFP4 */ /* 85 */ "%a", /* local: ADDRLP4 */ /* 86 */ "lit %a\n", /* addr: ADDRGP4 */ /* 87 */ "#\n", /* addr: ADDRLP4 */ /* 88 */ "\n", /* addr: addr4 */ /* 89 */ "", /* zero: CNSTI1 */ /* 90 */ "", /* zero: CNSTI2 */ /* 91 */ "", /* zero: CNSTI4 */ /* 92 */ "", /* zero: CNSTU1 */ /* 93 */ "", /* zero: CNSTU2 */ /* 94 */ "", /* zero: CNSTU4 */ /* 95 */ "", /* zero: CNSTP4 */ /* 96 */ "#\n", /* stmt: ASGNI4(stk,local) */ /* 97 */ "#\n", /* stmt: ASGNU4(stk,local) */ /* 98 */ "#\n", /* stmt: ASGNP4(addr,local) */ /* 99 */ "#\n", /* stmt: ASGNF4(stk,local) */ /* 100 */ "cl __storeb__\n", /* stmt: ASGNI1(stk,addr) */ /* 101 */ "cl __storeb__\n", /* stmt: ASGNU1(stk,addr) */ /* 102 */ "cl __storew__\n", /* stmt: ASGNI2(stk,addr) */ /* 103 */ "cl __storew__\n", /* stmt: ASGNU2(stk,addr) */ /* 104 */ "!\n", /* stmt: ASGNI4(stk,addr) */ /* 105 */ "!\n", /* stmt: ASGNU4(stk,addr) */ /* 106 */ "!\n", /* stmt: ASGNP4(addr,addr) */ /* 107 */ "!\n", /* stmt: ASGNF4(stk,addr) */ /* 108 */ "stl %1\n", /* stmt: ASGNI4(stk,glob) */ /* 109 */ "stl %1\n", /* stmt: ASGNU4(stk,glob) */ /* 110 */ "stl %1\n", /* stmt: ASGNP4(addr,glob) */ /* 111 */ "stl %1\n", /* stmt: ASGNF4(stk,glob) */ /* 112 */ "#\n", /* stk: INDIRI4(local) */ /* 113 */ "#\n", /* stk: INDIRU4(local) */ /* 114 */ "#\n", /* addr: INDIRP4(local) */ /* 115 */ "#\n", /* stk: INDIRF4(local) */ /* 116 */ "\n", /* tuck1: TUCKI1(stk) */ /* 117 */ "\n", /* tuck1: TUCKU1(stk) */ /* 118 */ "\n", /* tuck1: TUCKI2(stk) */ /* 119 */ "\n", /* tuck1: TUCKU2(stk) */ /* 120 */ "\n", /* tuck1: TUCKI4(stk) */ /* 121 */ "\n", /* tuck1: TUCKU4(stk) */ /* 122 */ "\n", /* tuck1: TUCKF4(stk) */ /* 123 */ "copy1\n", /* addr: TUCKP4(addr) */ /* 124 */ "\n", /* stmt: TUCKP4(addr) */ /* 125 */ "\n", /* tuck2: TUCKI1(stk) */ /* 126 */ "\n", /* tuck2: TUCKU1(stk) */ /* 127 */ "\n", /* tuck2: TUCKI2(stk) */ /* 128 */ "\n", /* tuck2: TUCKU2(stk) */ /* 129 */ "\n", /* tuck2: TUCKI4(stk) */ /* 130 */ "\n", /* tuck2: TUCKU4(stk) */ /* 131 */ "\n", /* tuck2: TUCKF4(stk) */ /* 132 */ "tuck2\n", /* addr: TUCKP4(stk) */ /* 133 */ "swap\n", /* stmt: TUCKP4(stk) */ /* 134 */ "\n", /* tuck3: TUCKI1(stk) */ /* 135 */ "\n", /* tuck3: TUCKU1(stk) */ /* 136 */ "\n", /* tuck3: TUCKI2(stk) */ /* 137 */ "\n", /* tuck3: TUCKU2(stk) */ /* 138 */ "\n", /* tuck3: TUCKI4(stk) */ /* 139 */ "\n", /* tuck3: TUCKU4(stk) */ /* 140 */ "\n", /* tuck3: TUCKF4(stk) */ /* 141 */ "tuck3\n", /* addr: TUCKP4(stk) */ /* 142 */ "rsd3\n", /* stmt: TUCKP4(stk) */ /* 143 */ "\n", /* tuck4: TUCKI1(stk) */ /* 144 */ "\n", /* tuck4: TUCKU1(stk) */ /* 145 */ "\n", /* tuck4: TUCKI2(stk) */ /* 146 */ "\n", /* tuck4: TUCKU2(stk) */ /* 147 */ "\n", /* tuck4: TUCKI4(stk) */ /* 148 */ "\n", /* tuck4: TUCKU4(stk) */ /* 149 */ "\n", /* tuck4: TUCKF4(stk) */ /* 150 */ "tuck4\n", /* addr: TUCKP4(stk) */ /* 151 */ "rsd4\n", /* stmt: TUCKP4(stk) */ /* 152 */ "copy1\n", /* stk: tuck1 */ /* 153 */ "tuck2\n", /* stk: tuck2 */ /* 154 */ "tuck3\n", /* stk: tuck3 */ /* 155 */ "tuck4\n", /* stk: tuck4 */ /* 156 */ "\n", /* stmt: tuck1 */ /* 157 */ "swap\n", /* stmt: tuck2 */ /* 158 */ "rsd3\n", /* stmt: tuck3 */ /* 159 */ "rsd4\n", /* stmt: tuck4 */ /* 160 */ "cl __readb__\n", /* stk: INDIRI1(addr) */ /* 161 */ "cl __readb__\n", /* stk: INDIRU1(addr) */ /* 162 */ "cl __readw__\n", /* stk: INDIRI2(addr) */ /* 163 */ "cl __readw__\n", /* stk: INDIRU2(addr) */ /* 164 */ "@\n", /* stk: INDIRI4(addr) */ /* 165 */ "@\n", /* stk: INDIRU4(addr) */ /* 166 */ "@\n", /* addr: INDIRP4(addr) */ /* 167 */ "@\n", /* stk: INDIRF4(addr) */ /* 168 */ "swap\nrol\nrol\nadd\nror\nror\n", /* addr: ADDP4(addr,stk) */ /* 169 */ "rol\nrol\nadd\nror\nror\n", /* addr: ADDP4(stk,addr) */ /* 170 */ "div\n", /* stk: DIVI4(stk,stk) */ /* 171 */ "cl __divu__\n", /* stk: DIVU4(stk,stk) */ /* 172 */ "cl __rem__\n", /* stk: MODI4(stk,stk) */ /* 173 */ "cl __remu__\n", /* stk: MODU4(stk,stk) */ /* 174 */ "mul\n", /* stk: MULI4(stk,stk) */ /* 175 */ "mul\n", /* stk: MULU4(stk,stk) */ /* 176 */ "mul\n", /* addr4: MULU4(addr4,stk) */ /* 177 */ "mul\n", /* addr4: MULU4(stk,addr4) */ /* 178 */ "mul\n", /* addr4: MULI4(addr4,stk) */ /* 179 */ "mul\n", /* addr4: MULI4(stk,addr4) */ /* 180 */ "tos++\n", /* stk: ADDI4(cnst1,stk) */ /* 181 */ "tos++\n", /* stk: ADDU4(cnst1,stk) */ /* 182 */ "tos++\n", /* stk: ADDI4(stk,cnst1) */ /* 183 */ "tos++\n", /* stk: ADDU4(stk,cnst1) */ /* 184 */ "tos--\n", /* stk: SUBI4(stk,cnst1) */ /* 185 */ "tos--\n", /* stk: SUBU4(stk,cnst1) */ /* 186 */ "add\n", /* stk: ADDI4(stk,stk) */ /* 187 */ "add\n", /* stk: ADDU4(stk,stk) */ /* 188 */ "\n", /* addr4: ADDP4(addr4,zero) */ /* 189 */ "tos++\n", /* addr4: ADDP4(addr4,cnst4) */ /* 190 */ "add\n", /* addr4: ADDP4(addr4,addr4) */ /* 191 */ "add\n", /* addr4: ADDU4(addr4,addr4) */ /* 192 */ "add\n", /* addr: ADDP4(addr,addr4) */ /* 193 */ "add\n", /* addr: ADDU4(addr,addr4) */ /* 194 */ "add\n", /* addr: ADDP4(addr4,addr) */ /* 195 */ "add\n", /* addr: ADDU4(addr4,addr) */ /* 196 */ "\n", /* addr: ADDP4(addr,zero) */ /* 197 */ "swap\nrol\nrol\nadd\nror\nror\n", /* addr: ADDP4(addr,stk) */ /* 198 */ "rol\nrol\nadd\nror\nror\n", /* addr: ADDP4(stk,addr) */ /* 199 */ "rol\nrol\ntos++\nror\nror\n", /* addr: ADDP4(addr,cnst1) */ /* 200 */ "rol\ntos++\nror\n", /* addr: ADDP4(addr,cnst2) */ /* 201 */ "tos++\n", /* addr: ADDP4(addr,cnst4) */ /* 202 */ "rol\nrol\nlil %b\nadd\nror\nror\n", /* addr: ADDP4(addr,CNSTI4) */ /* 203 */ "sub\n", /* addr4: SUBP4(addr4,addr4) */ /* 204 */ "swap\nrol\nrol\nswap\nsub\nror\nror\n", /* addr: SUBP4(addr,stk) */ /* 205 */ "rol\nrol\nsub\nror\nror\n", /* addr: SUBP4(stk,addr) */ /* 206 */ "rol\nrol\ntos--\nror\nror\n", /* addr: SUBP4(addr,cnst1) */ /* 207 */ "rol\ntos--\nror\n", /* addr: SUBP4(addr,cnst2) */ /* 208 */ "tos--\n", /* addr: SUBP4(addr,cnst4) */ /* 209 */ "rol\nrol\nlil %b\nsub\nror\nror\n", /* addr: SUBP4(addr,CNSTI4) */ /* 210 */ "and\n", /* stk: BANDI4(stk,stk) */ /* 211 */ "or\n", /* stk: BORI4(stk,stk) */ /* 212 */ "xor\n", /* stk: BXORI4(stk,stk) */ /* 213 */ "and\n", /* stk: BANDU4(stk,stk) */ /* 214 */ "or\n", /* stk: BORU4(stk,stk) */ /* 215 */ "xor\n", /* stk: BXORU4(stk,stk) */ /* 216 */ "sub\n", /* stk: SUBI4(stk,stk) */ /* 217 */ "sub\n", /* stk: SUBU4(stk,stk) */ /* 218 */ "\n", /* addr4: LSHI4(stk,cnst2) */ /* 219 */ "\n", /* addr4: LSHU4(stk,cnst2) */ /* 220 */ "asl\n", /* addr4: LSHI4(stk,cnst3) */ /* 221 */ "asl\n", /* addr4: LSHU4(stk,cnst3) */ /* 222 */ "asl\nasl\n", /* addr4: LSHI4(stk,cnst4) */ /* 223 */ "asl\nasl\n", /* addr4: LSHU4(stk,cnst4) */ /* 224 */ "asl\n", /* stk: LSHI4(stk,cnst1) */ /* 225 */ "asl\n", /* stk: LSHU4(stk,cnst1) */ /* 226 */ "asr\n", /* stk: RSHI4(stk,cnst1) */ /* 227 */ "lit -2\nand\nror\n", /* stk: RSHU4(stk,cnst1) */ /* 228 */ "asl\nasl\n", /* stk: LSHI4(stk,cnst2) */ /* 229 */ "asl\nasl\n", /* stk: LSHU4(stk,cnst2) */ /* 230 */ "asr\nasr\n", /* stk: RSHI4(stk,cnst2) */ /* 231 */ "lit -4\nand\nror\nror\n", /* stk: RSHU4(stk,cnst2) */ /* 232 */ "cl __lsl__\n", /* stk: LSHI4(stk,stk) */ /* 233 */ "cl __lsl__\n", /* stk: LSHU4(stk,stk) */ /* 234 */ "cl __asr__\n", /* stk: RSHI4(stk,stk) */ /* 235 */ "cl __lsr__\n", /* stk: RSHU4(stk,stk) */ /* 236 */ "not\n", /* stk: BCOMI4(stk) */ /* 237 */ "not\n", /* stk: BCOMU4(stk) */ /* 238 */ "not\ntos++\n", /* stk: NEGI4(stk) */ /* 239 */ "cl _float32_add\n", /* stk: ADDF4(stk,stk) */ /* 240 */ "cl _float32_div\n", /* stk: DIVF4(stk,stk) */ /* 241 */ "cl _float32_mul\n", /* stk: MULF4(stk,stk) */ /* 242 */ "cl _float32_sub\n", /* stk: SUBF4(stk,stk) */ /* 243 */ "lit 1\nror\nxor\n", /* stk: NEGF4(stk) */ /* 244 */ "cl __int_to_byte__\n", /* stk: CVII1(stk) */ /* 245 */ "cl __int_to_short__n", /* stk: CVII2(stk) */ /* 246 */ "\n", /* stk: CVII4(stk) */ /* 247 */ "\n", /* stk: CVUI4(stk) */ /* 248 */ "lsi 255\nand\n", /* stk: CVUU1(stk) */ /* 249 */ "lsi 65535\nand\n", /* stk: CVUU2(stk) */ /* 250 */ "\n", /* stk: CVUU4(stk) */ /* 251 */ "\n", /* stk: CVIU4(stk) */ /* 252 */ "\n", /* stk: CVFF4(stk) */ /* 253 */ "cl _int32_to_float32\n", /* stk: CVIF4(stk) */ /* 254 */ "cl _float32_to_int32\n", /* stk: CVFI4(stk) */ /* 255 */ "\n", /* addr4: CVPU4(addr4) */ /* 256 */ "\n", /* addr: CVPU4(addr) */ /* 257 */ "\n", /* stk: CVUP4(stk) */ /* 258 */ "rol\nrol\n", /* stk: addr */ /* 259 */ "ror\nror\n", /* addr: stk */ /* 260 */ "%a:\n", /* stmt: LABELV */ /* 261 */ "bl %0\n", /* stmt: JUMPV(glob) */ /* 262 */ ">r\nexit\n", /* stmt: JUMPV(addr) */ /* 263 */ "teq\nbcp %a\n", /* stmt: EQI4(stk,stk) */ /* 264 */ "teq\nbcp %a\n", /* stmt: EQU4(stk,stk) */ /* 265 */ "tne\nbcp %a\n", /* stmt: NEI4(stk,stk) */ /* 266 */ "tne\nbcp %a\n", /* stmt: NEU4(stk,stk) */ /* 267 */ "teq\nbcp %a\n", /* stmt: EQI4(addr,addr) */ /* 268 */ "teq\nbcp %a\n", /* stmt: EQU4(addr,addr) */ /* 269 */ "tne\nbcp %a\n", /* stmt: NEI4(addr,addr) */ /* 270 */ "tne\nbcp %a\n", /* stmt: NEU4(addr,addr) */ /* 271 */ "bcp %a\n", /* stmt: NEI4(addr,zero) */ /* 272 */ "bcp %a\n", /* stmt: NEU4(addr,zero) */ /* 273 */ "tlt\nbzp %a\n", /* stmt: GEI4(stk,stk) */ /* 274 */ "tgt\nbcp %a\n", /* stmt: GTI4(stk,stk) */ /* 275 */ "tgt\nbzp %a\n", /* stmt: LEI4(stk,stk) */ /* 276 */ "tlt\nbcp %a\n", /* stmt: LTI4(stk,stk) */ /* 277 */ "bzp %a\n", /* stmt: EQI4(stk,zero) */ /* 278 */ "bcp %a\n", /* stmt: NEI4(stk,zero) */ /* 279 */ "bzp %a\n", /* stmt: EQU4(stk,zero) */ /* 280 */ "bcp %a\n", /* stmt: NEU4(stk,zero) */ /* 281 */ "tnv\nbzp %a\n", /* stmt: GEI4(stk,zero) */ /* 282 */ "tnv\nbcp %a\n", /* stmt: LTI4(stk,zero) */ /* 283 */ "cl __u2s_swap_ \ntgt\nbzp %a\n", /* stmt: GEU4(stk,stk) */ /* 284 */ "cl __u2s_swap_ \ntlt\nbcp %a\n", /* stmt: GTU4(stk,stk) */ /* 285 */ "cl __u2s_swap_ \ntlt\nbzp %a\n", /* stmt: LEU4(stk,stk) */ /* 286 */ "cl __u2s_swap_ \ntgt\nbcp %a\n", /* stmt: LTU4(stk,stk) */ /* 287 */ "tlt\nbzp %a\n", /* stmt: GEU4(addr4,addr4) */ /* 288 */ "tgt\nbcp %a\n", /* stmt: GTU4(addr4,addr4) */ /* 289 */ "tgt\nbzp %a\n", /* stmt: LEU4(addr4,addr4) */ /* 290 */ "tlt\nbcp %a\n", /* stmt: LTU4(addr4,addr4) */ /* 291 */ "cl _float32_eq\nbcp %a\n", /* stmt: EQF4(stk,stk) */ /* 292 */ "cl _float32_le\nbcp %a\n", /* stmt: LEF4(stk,stk) */ /* 293 */ "cl _float32_lt\nbcp %a\n", /* stmt: LTF4(stk,stk) */ /* 294 */ "cl _float32_lt\nbzp %a\n", /* stmt: GEF4(stk,stk) */ /* 295 */ "cl _float32_le\nbzp %a\n", /* stmt: GTF4(stk,stk) */ /* 296 */ "cl _float32_eq\nbzp %a\n", /* stmt: NEF4(stk,stk) */ /* 297 */ "#\n", /* stk: CALLF4(glob) */ /* 298 */ "#\n", /* stk: CALLI4(glob) */ /* 299 */ "#\n", /* stk: CALLP4(glob) */ /* 300 */ "#\n", /* addr: CALLP4(glob) */ /* 301 */ "#\n", /* stk: CALLU4(glob) */ /* 302 */ "#\n", /* stmt: CALLV(glob) */ /* 303 */ "#\n", /* stk: CALLF4(addr) */ /* 304 */ "#\n", /* stk: CALLI4(addr) */ /* 305 */ "#\n", /* stk: CALLP4(addr) */ /* 306 */ "#\n", /* addr: CALLP4(addr) */ /* 307 */ "#\n", /* stk: CALLU4(addr) */ /* 308 */ "#\n", /* stmt: CALLV(addr) */ /* 309 */ "\n", /* stmt: RETF4(stk) */ /* 310 */ "\n", /* stmt: RETI4(stk) */ /* 311 */ "\n", /* stmt: RETU4(stk) */ /* 312 */ "\n", /* stmt: RETP4(addr) */ /* 313 */ "", /* stmt: RETV */ /* 314 */ "#\n", /* stmt: ARGF4(stk) */ /* 315 */ "#\n", /* stmt: ARGI4(stk) */ /* 316 */ "#\n", /* stmt: ARGP4(addr) */ /* 317 */ "#\n", /* stmt: ARGU4(stk) */ /* 318 */ "#\n", /* stmt: ASGNB(INDIRB(addr),addr) */ }; static char _isinstruction[] = { /* 0 */ 0, /* 1 */ 1, /* @tmp %0\n */ /* 2 */ 1, /* @tmp %0\n */ /* 3 */ 1, /* @tmp %0\n */ /* 4 */ 1, /* @tmp %0\n */ /* 5 */ 1, /* @tmp %0\n */ /* 6 */ 1, /* @tmp %0\n */ /* 7 */ 1, /* @tmp %0\n */ /* 8 */ 1, /* @tmp %0\n */ /* 9 */ 1, /* \n */ /* 10 */ 1, /* swap\n */ /* 11 */ 1, /* rsd%b\n */ /* 12 */ 1, /* copy%b\n */ /* 13 */ 1, /* \n */ /* 14 */ 1, /* \n */ /* 15 */ 1, /* \n */ /* 16 */ 1, /* \n */ /* 17 */ 1, /* \n */ /* 18 */ 1, /* \n */ /* 19 */ 1, /* \n */ /* 20 */ 1, /* \n */ /* 21 */ 1, /* !tmp %1\n */ /* 22 */ 1, /* !tmp %1\n */ /* 23 */ 1, /* !tmp %1\n */ /* 24 */ 1, /* !tmp %1\n */ /* 25 */ 1, /* !tmp %1\n */ /* 26 */ 1, /* !tmp %1\n */ /* 27 */ 1, /* !tmp %1\n */ /* 28 */ 1, /* !tmp %1\n */ /* 29 */ 1, /* \n */ /* 30 */ 1, /* \n */ /* 31 */ 1, /* \n */ /* 32 */ 1, /* \n */ /* 33 */ 1, /* \n */ /* 34 */ 1, /* \n */ /* 35 */ 1, /* \n */ /* 36 */ 1, /* \n */ /* 37 */ 1, /* \n */ /* 38 */ 1, /* swap\n */ /* 39 */ 1, /* rsu%b\n */ /* 40 */ 0, /* %a */ /* 41 */ 0, /* */ /* 42 */ 0, /* */ /* 43 */ 0, /* */ /* 44 */ 0, /* */ /* 45 */ 0, /* */ /* 46 */ 0, /* */ /* 47 */ 0, /* */ /* 48 */ 0, /* */ /* 49 */ 0, /* */ /* 50 */ 0, /* */ /* 51 */ 0, /* */ /* 52 */ 0, /* */ /* 53 */ 0, /* */ /* 54 */ 0, /* */ /* 55 */ 0, /* */ /* 56 */ 0, /* */ /* 57 */ 0, /* */ /* 58 */ 0, /* */ /* 59 */ 1, /* lit %a\n */ /* 60 */ 1, /* lit %a\n */ /* 61 */ 1, /* lit %a\n */ /* 62 */ 0, /* */ /* 63 */ 0, /* %a */ /* 64 */ 0, /* %a */ /* 65 */ 0, /* %a */ /* 66 */ 0, /* %a */ /* 67 */ 0, /* %a */ /* 68 */ 0, /* %a */ /* 69 */ 0, /* %a */ /* 70 */ 0, /* %a */ /* 71 */ 0, /* %a */ /* 72 */ 0, /* %a */ /* 73 */ 0, /* %a */ /* 74 */ 0, /* %a */ /* 75 */ 1, /* #\n */ /* 76 */ 1, /* #\n */ /* 77 */ 1, /* #\n */ /* 78 */ 1, /* #\n */ /* 79 */ 1, /* #\n */ /* 80 */ 1, /* #\n */ /* 81 */ 1, /* drop\n */ /* 82 */ 1, /* drop\n */ /* 83 */ 0, /* %a */ /* 84 */ 0, /* %a */ /* 85 */ 0, /* %a */ /* 86 */ 1, /* lit %a\n */ /* 87 */ 1, /* #\n */ /* 88 */ 1, /* \n */ /* 89 */ 0, /* */ /* 90 */ 0, /* */ /* 91 */ 0, /* */ /* 92 */ 0, /* */ /* 93 */ 0, /* */ /* 94 */ 0, /* */ /* 95 */ 0, /* */ /* 96 */ 1, /* #\n */ /* 97 */ 1, /* #\n */ /* 98 */ 1, /* #\n */ /* 99 */ 1, /* #\n */ /* 100 */ 1, /* cl __storeb__\n */ /* 101 */ 1, /* cl __storeb__\n */ /* 102 */ 1, /* cl __storew__\n */ /* 103 */ 1, /* cl __storew__\n */ /* 104 */ 1, /* !\n */ /* 105 */ 1, /* !\n */ /* 106 */ 1, /* !\n */ /* 107 */ 1, /* !\n */ /* 108 */ 1, /* stl %1\n */ /* 109 */ 1, /* stl %1\n */ /* 110 */ 1, /* stl %1\n */ /* 111 */ 1, /* stl %1\n */ /* 112 */ 1, /* #\n */ /* 113 */ 1, /* #\n */ /* 114 */ 1, /* #\n */ /* 115 */ 1, /* #\n */ /* 116 */ 1, /* \n */ /* 117 */ 1, /* \n */ /* 118 */ 1, /* \n */ /* 119 */ 1, /* \n */ /* 120 */ 1, /* \n */ /* 121 */ 1, /* \n */ /* 122 */ 1, /* \n */ /* 123 */ 1, /* copy1\n */ /* 124 */ 1, /* \n */ /* 125 */ 1, /* \n */ /* 126 */ 1, /* \n */ /* 127 */ 1, /* \n */ /* 128 */ 1, /* \n */ /* 129 */ 1, /* \n */ /* 130 */ 1, /* \n */ /* 131 */ 1, /* \n */ /* 132 */ 1, /* tuck2\n */ /* 133 */ 1, /* swap\n */ /* 134 */ 1, /* \n */ /* 135 */ 1, /* \n */ /* 136 */ 1, /* \n */ /* 137 */ 1, /* \n */ /* 138 */ 1, /* \n */ /* 139 */ 1, /* \n */ /* 140 */ 1, /* \n */ /* 141 */ 1, /* tuck3\n */ /* 142 */ 1, /* rsd3\n */ /* 143 */ 1, /* \n */ /* 144 */ 1, /* \n */ /* 145 */ 1, /* \n */ /* 146 */ 1, /* \n */ /* 147 */ 1, /* \n */ /* 148 */ 1, /* \n */ /* 149 */ 1, /* \n */ /* 150 */ 1, /* tuck4\n */ /* 151 */ 1, /* rsd4\n */ /* 152 */ 1, /* copy1\n */ /* 153 */ 1, /* tuck2\n */ /* 154 */ 1, /* tuck3\n */ /* 155 */ 1, /* tuck4\n */ /* 156 */ 1, /* \n */ /* 157 */ 1, /* swap\n */ /* 158 */ 1, /* rsd3\n */ /* 159 */ 1, /* rsd4\n */ /* 160 */ 1, /* cl __readb__\n */ /* 161 */ 1, /* cl __readb__\n */ /* 162 */ 1, /* cl __readw__\n */ /* 163 */ 1, /* cl __readw__\n */ /* 164 */ 1, /* @\n */ /* 165 */ 1, /* @\n */ /* 166 */ 1, /* @\n */ /* 167 */ 1, /* @\n */ /* 168 */ 1, /* swap\nrol\nrol\nadd\nror\nror\n */ /* 169 */ 1, /* rol\nrol\nadd\nror\nror\n */ /* 170 */ 1, /* div\n */ /* 171 */ 1, /* cl __divu__\n */ /* 172 */ 1, /* cl __rem__\n */ /* 173 */ 1, /* cl __remu__\n */ /* 174 */ 1, /* mul\n */ /* 175 */ 1, /* mul\n */ /* 176 */ 1, /* mul\n */ /* 177 */ 1, /* mul\n */ /* 178 */ 1, /* mul\n */ /* 179 */ 1, /* mul\n */ /* 180 */ 1, /* tos++\n */ /* 181 */ 1, /* tos++\n */ /* 182 */ 1, /* tos++\n */ /* 183 */ 1, /* tos++\n */ /* 184 */ 1, /* tos--\n */ /* 185 */ 1, /* tos--\n */ /* 186 */ 1, /* add\n */ /* 187 */ 1, /* add\n */ /* 188 */ 1, /* \n */ /* 189 */ 1, /* tos++\n */ /* 190 */ 1, /* add\n */ /* 191 */ 1, /* add\n */ /* 192 */ 1, /* add\n */ /* 193 */ 1, /* add\n */ /* 194 */ 1, /* add\n */ /* 195 */ 1, /* add\n */ /* 196 */ 1, /* \n */ /* 197 */ 1, /* swap\nrol\nrol\nadd\nror\nror\n */ /* 198 */ 1, /* rol\nrol\nadd\nror\nror\n */ /* 199 */ 1, /* rol\nrol\ntos++\nror\nror\n */ /* 200 */ 1, /* rol\ntos++\nror\n */ /* 201 */ 1, /* tos++\n */ /* 202 */ 1, /* rol\nrol\nlil %b\nadd\nror\nror\n */ /* 203 */ 1, /* sub\n */ /* 204 */ 1, /* swap\nrol\nrol\nswap\nsub\nror\nror\n */ /* 205 */ 1, /* rol\nrol\nsub\nror\nror\n */ /* 206 */ 1, /* rol\nrol\ntos--\nror\nror\n */ /* 207 */ 1, /* rol\ntos--\nror\n */ /* 208 */ 1, /* tos--\n */ /* 209 */ 1, /* rol\nrol\nlil %b\nsub\nror\nror\n */ /* 210 */ 1, /* and\n */ /* 211 */ 1, /* or\n */ /* 212 */ 1, /* xor\n */ /* 213 */ 1, /* and\n */ /* 214 */ 1, /* or\n */ /* 215 */ 1, /* xor\n */ /* 216 */ 1, /* sub\n */ /* 217 */ 1, /* sub\n */ /* 218 */ 1, /* \n */ /* 219 */ 1, /* \n */ /* 220 */ 1, /* asl\n */ /* 221 */ 1, /* asl\n */ /* 222 */ 1, /* asl\nasl\n */ /* 223 */ 1, /* asl\nasl\n */ /* 224 */ 1, /* asl\n */ /* 225 */ 1, /* asl\n */ /* 226 */ 1, /* asr\n */ /* 227 */ 1, /* lit -2\nand\nror\n */ /* 228 */ 1, /* asl\nasl\n */ /* 229 */ 1, /* asl\nasl\n */ /* 230 */ 1, /* asr\nasr\n */ /* 231 */ 1, /* lit -4\nand\nror\nror\n */ /* 232 */ 1, /* cl __lsl__\n */ /* 233 */ 1, /* cl __lsl__\n */ /* 234 */ 1, /* cl __asr__\n */ /* 235 */ 1, /* cl __lsr__\n */ /* 236 */ 1, /* not\n */ /* 237 */ 1, /* not\n */ /* 238 */ 1, /* not\ntos++\n */ /* 239 */ 1, /* cl _float32_add\n */ /* 240 */ 1, /* cl _float32_div\n */ /* 241 */ 1, /* cl _float32_mul\n */ /* 242 */ 1, /* cl _float32_sub\n */ /* 243 */ 1, /* lit 1\nror\nxor\n */ /* 244 */ 1, /* cl __int_to_byte__\n */ /* 245 */ 0, /* cl __int_to_short__n */ /* 246 */ 1, /* \n */ /* 247 */ 1, /* \n */ /* 248 */ 1, /* lsi 255\nand\n */ /* 249 */ 1, /* lsi 65535\nand\n */ /* 250 */ 1, /* \n */ /* 251 */ 1, /* \n */ /* 252 */ 1, /* \n */ /* 253 */ 1, /* cl _int32_to_float32\n */ /* 254 */ 1, /* cl _float32_to_int32\n */ /* 255 */ 1, /* \n */ /* 256 */ 1, /* \n */ /* 257 */ 1, /* \n */ /* 258 */ 1, /* rol\nrol\n */ /* 259 */ 1, /* ror\nror\n */ /* 260 */ 1, /* %a:\n */ /* 261 */ 1, /* bl %0\n */ /* 262 */ 1, /* >r\nexit\n */ /* 263 */ 1, /* teq\nbcp %a\n */ /* 264 */ 1, /* teq\nbcp %a\n */ /* 265 */ 1, /* tne\nbcp %a\n */ /* 266 */ 1, /* tne\nbcp %a\n */ /* 267 */ 1, /* teq\nbcp %a\n */ /* 268 */ 1, /* teq\nbcp %a\n */ /* 269 */ 1, /* tne\nbcp %a\n */ /* 270 */ 1, /* tne\nbcp %a\n */ /* 271 */ 1, /* bcp %a\n */ /* 272 */ 1, /* bcp %a\n */ /* 273 */ 1, /* tlt\nbzp %a\n */ /* 274 */ 1, /* tgt\nbcp %a\n */ /* 275 */ 1, /* tgt\nbzp %a\n */ /* 276 */ 1, /* tlt\nbcp %a\n */ /* 277 */ 1, /* bzp %a\n */ /* 278 */ 1, /* bcp %a\n */ /* 279 */ 1, /* bzp %a\n */ /* 280 */ 1, /* bcp %a\n */ /* 281 */ 1, /* tnv\nbzp %a\n */ /* 282 */ 1, /* tnv\nbcp %a\n */ /* 283 */ 1, /* cl __u2s_swap_ \ntgt\nbzp %a\n */ /* 284 */ 1, /* cl __u2s_swap_ \ntlt\nbcp %a\n */ /* 285 */ 1, /* cl __u2s_swap_ \ntlt\nbzp %a\n */ /* 286 */ 1, /* cl __u2s_swap_ \ntgt\nbcp %a\n */ /* 287 */ 1, /* tlt\nbzp %a\n */ /* 288 */ 1, /* tgt\nbcp %a\n */ /* 289 */ 1, /* tgt\nbzp %a\n */ /* 290 */ 1, /* tlt\nbcp %a\n */ /* 291 */ 1, /* cl _float32_eq\nbcp %a\n */ /* 292 */ 1, /* cl _float32_le\nbcp %a\n */ /* 293 */ 1, /* cl _float32_lt\nbcp %a\n */ /* 294 */ 1, /* cl _float32_lt\nbzp %a\n */ /* 295 */ 1, /* cl _float32_le\nbzp %a\n */ /* 296 */ 1, /* cl _float32_eq\nbzp %a\n */ /* 297 */ 1, /* #\n */ /* 298 */ 1, /* #\n */ /* 299 */ 1, /* #\n */ /* 300 */ 1, /* #\n */ /* 301 */ 1, /* #\n */ /* 302 */ 1, /* #\n */ /* 303 */ 1, /* #\n */ /* 304 */ 1, /* #\n */ /* 305 */ 1, /* #\n */ /* 306 */ 1, /* #\n */ /* 307 */ 1, /* #\n */ /* 308 */ 1, /* #\n */ /* 309 */ 1, /* \n */ /* 310 */ 1, /* \n */ /* 311 */ 1, /* \n */ /* 312 */ 1, /* \n */ /* 313 */ 0, /* */ /* 314 */ 1, /* #\n */ /* 315 */ 1, /* #\n */ /* 316 */ 1, /* #\n */ /* 317 */ 1, /* #\n */ /* 318 */ 1, /* #\n */ }; static char *_string[] = { /* 0 */ 0, /* 1 */ "stk: INDIRI1(tmp)", /* 2 */ "stk: INDIRU1(tmp)", /* 3 */ "stk: INDIRI2(tmp)", /* 4 */ "stk: INDIRU2(tmp)", /* 5 */ "stk: INDIRF4(tmp)", /* 6 */ "stk: INDIRI4(tmp)", /* 7 */ "addr: INDIRP4(tmp)", /* 8 */ "stk: INDIRU4(tmp)", /* 9 */ "vread: STACKP", /* 10 */ "vread: STACKP", /* 11 */ "vread: STACKP", /* 12 */ "vread: COPYP", /* 13 */ "stk: INDIRI1(vread)", /* 14 */ "stk: INDIRU1(vread)", /* 15 */ "stk: INDIRI2(vread)", /* 16 */ "stk: INDIRU2(vread)", /* 17 */ "stk: INDIRF4(vread)", /* 18 */ "stk: INDIRI4(vread)", /* 19 */ "addr: INDIRP4(vread)", /* 20 */ "stk: INDIRU4(vread)", /* 21 */ "stmt: ASGNI1(stk,tmp)", /* 22 */ "stmt: ASGNU1(stk,tmp)", /* 23 */ "stmt: ASGNI2(stk,tmp)", /* 24 */ "stmt: ASGNU2(stk,tmp)", /* 25 */ "stmt: ASGNF4(stk,tmp)", /* 26 */ "stmt: ASGNI4(stk,tmp)", /* 27 */ "stmt: ASGNP4(addr,tmp)", /* 28 */ "stmt: ASGNU4(stk,tmp)", /* 29 */ "stmt: ASGNI1(stk,var)", /* 30 */ "stmt: ASGNU1(stk,var)", /* 31 */ "stmt: ASGNI2(stk,var)", /* 32 */ "stmt: ASGNU2(stk,var)", /* 33 */ "stmt: ASGNF4(stk,var)", /* 34 */ "stmt: ASGNI4(stk,var)", /* 35 */ "stmt: ASGNP4(addr,var)", /* 36 */ "stmt: ASGNU4(stk,var)", /* 37 */ "var: STACKP", /* 38 */ "var: STACKP", /* 39 */ "var: STACKP", /* 40 */ "tmp: VREGP", /* 41 */ "cnst1: CNSTI1", /* 42 */ "cnst1: CNSTU1", /* 43 */ "cnst1: CNSTI2", /* 44 */ "cnst1: CNSTU2", /* 45 */ "cnst1: CNSTI4", /* 46 */ "cnst1: CNSTU4", /* 47 */ "cnst2: CNSTI1", /* 48 */ "cnst2: CNSTU1", /* 49 */ "cnst2: CNSTI2", /* 50 */ "cnst2: CNSTU2", /* 51 */ "cnst2: CNSTI4", /* 52 */ "cnst2: CNSTU4", /* 53 */ "cnst4: CNSTI1", /* 54 */ "cnst4: CNSTU1", /* 55 */ "cnst4: CNSTI2", /* 56 */ "cnst4: CNSTU2", /* 57 */ "cnst4: CNSTI4", /* 58 */ "cnst4: CNSTU4", /* 59 */ "addr4: CNSTP4", /* 60 */ "addr4: CNSTI4", /* 61 */ "addr4: CNSTU4", /* 62 */ "cnst3: CNSTI4", /* 63 */ "con8: CNSTI1", /* 64 */ "con8: CNSTU1", /* 65 */ "con8: CNSTI2", /* 66 */ "con8: CNSTU2", /* 67 */ "con8: CNSTI4", /* 68 */ "con8: CNSTU4", /* 69 */ "con17: CNSTI2", /* 70 */ "con17: CNSTU2", /* 71 */ "con17: CNSTI4", /* 72 */ "con17: CNSTU4", /* 73 */ "con24: CNSTI4", /* 74 */ "con24: CNSTU4", /* 75 */ "stk: con8", /* 76 */ "stk: con17", /* 77 */ "stk: con24", /* 78 */ "stk: CNSTI4", /* 79 */ "stk: CNSTU4", /* 80 */ "addr: CNSTP4", /* 81 */ "stmt: stk", /* 82 */ "stmt: addr", /* 83 */ "glob: ADDRGP4", /* 84 */ "local: ADDRFP4", /* 85 */ "local: ADDRLP4", /* 86 */ "addr: ADDRGP4", /* 87 */ "addr: ADDRLP4", /* 88 */ "addr: addr4", /* 89 */ "zero: CNSTI1", /* 90 */ "zero: CNSTI2", /* 91 */ "zero: CNSTI4", /* 92 */ "zero: CNSTU1", /* 93 */ "zero: CNSTU2", /* 94 */ "zero: CNSTU4", /* 95 */ "zero: CNSTP4", /* 96 */ "stmt: ASGNI4(stk,local)", /* 97 */ "stmt: ASGNU4(stk,local)", /* 98 */ "stmt: ASGNP4(addr,local)", /* 99 */ "stmt: ASGNF4(stk,local)", /* 100 */ "stmt: ASGNI1(stk,addr)", /* 101 */ "stmt: ASGNU1(stk,addr)", /* 102 */ "stmt: ASGNI2(stk,addr)", /* 103 */ "stmt: ASGNU2(stk,addr)", /* 104 */ "stmt: ASGNI4(stk,addr)", /* 105 */ "stmt: ASGNU4(stk,addr)", /* 106 */ "stmt: ASGNP4(addr,addr)", /* 107 */ "stmt: ASGNF4(stk,addr)", /* 108 */ "stmt: ASGNI4(stk,glob)", /* 109 */ "stmt: ASGNU4(stk,glob)", /* 110 */ "stmt: ASGNP4(addr,glob)", /* 111 */ "stmt: ASGNF4(stk,glob)", /* 112 */ "stk: INDIRI4(local)", /* 113 */ "stk: INDIRU4(local)", /* 114 */ "addr: INDIRP4(local)", /* 115 */ "stk: INDIRF4(local)", /* 116 */ "tuck1: TUCKI1(stk)", /* 117 */ "tuck1: TUCKU1(stk)", /* 118 */ "tuck1: TUCKI2(stk)", /* 119 */ "tuck1: TUCKU2(stk)", /* 120 */ "tuck1: TUCKI4(stk)", /* 121 */ "tuck1: TUCKU4(stk)", /* 122 */ "tuck1: TUCKF4(stk)", /* 123 */ "addr: TUCKP4(addr)", /* 124 */ "stmt: TUCKP4(addr)", /* 125 */ "tuck2: TUCKI1(stk)", /* 126 */ "tuck2: TUCKU1(stk)", /* 127 */ "tuck2: TUCKI2(stk)", /* 128 */ "tuck2: TUCKU2(stk)", /* 129 */ "tuck2: TUCKI4(stk)", /* 130 */ "tuck2: TUCKU4(stk)", /* 131 */ "tuck2: TUCKF4(stk)", /* 132 */ "addr: TUCKP4(stk)", /* 133 */ "stmt: TUCKP4(stk)", /* 134 */ "tuck3: TUCKI1(stk)", /* 135 */ "tuck3: TUCKU1(stk)", /* 136 */ "tuck3: TUCKI2(stk)", /* 137 */ "tuck3: TUCKU2(stk)", /* 138 */ "tuck3: TUCKI4(stk)", /* 139 */ "tuck3: TUCKU4(stk)", /* 140 */ "tuck3: TUCKF4(stk)", /* 141 */ "addr: TUCKP4(stk)", /* 142 */ "stmt: TUCKP4(stk)", /* 143 */ "tuck4: TUCKI1(stk)", /* 144 */ "tuck4: TUCKU1(stk)", /* 145 */ "tuck4: TUCKI2(stk)", /* 146 */ "tuck4: TUCKU2(stk)", /* 147 */ "tuck4: TUCKI4(stk)", /* 148 */ "tuck4: TUCKU4(stk)", /* 149 */ "tuck4: TUCKF4(stk)", /* 150 */ "addr: TUCKP4(stk)", /* 151 */ "stmt: TUCKP4(stk)", /* 152 */ "stk: tuck1", /* 153 */ "stk: tuck2", /* 154 */ "stk: tuck3", /* 155 */ "stk: tuck4", /* 156 */ "stmt: tuck1", /* 157 */ "stmt: tuck2", /* 158 */ "stmt: tuck3", /* 159 */ "stmt: tuck4", /* 160 */ "stk: INDIRI1(addr)", /* 161 */ "stk: INDIRU1(addr)", /* 162 */ "stk: INDIRI2(addr)", /* 163 */ "stk: INDIRU2(addr)", /* 164 */ "stk: INDIRI4(addr)", /* 165 */ "stk: INDIRU4(addr)", /* 166 */ "addr: INDIRP4(addr)", /* 167 */ "stk: INDIRF4(addr)", /* 168 */ "addr: ADDP4(addr,stk)", /* 169 */ "addr: ADDP4(stk,addr)", /* 170 */ "stk: DIVI4(stk,stk)", /* 171 */ "stk: DIVU4(stk,stk)", /* 172 */ "stk: MODI4(stk,stk)", /* 173 */ "stk: MODU4(stk,stk)", /* 174 */ "stk: MULI4(stk,stk)", /* 175 */ "stk: MULU4(stk,stk)", /* 176 */ "addr4: MULU4(addr4,stk)", /* 177 */ "addr4: MULU4(stk,addr4)", /* 178 */ "addr4: MULI4(addr4,stk)", /* 179 */ "addr4: MULI4(stk,addr4)", /* 180 */ "stk: ADDI4(cnst1,stk)", /* 181 */ "stk: ADDU4(cnst1,stk)", /* 182 */ "stk: ADDI4(stk,cnst1)", /* 183 */ "stk: ADDU4(stk,cnst1)", /* 184 */ "stk: SUBI4(stk,cnst1)", /* 185 */ "stk: SUBU4(stk,cnst1)", /* 186 */ "stk: ADDI4(stk,stk)", /* 187 */ "stk: ADDU4(stk,stk)", /* 188 */ "addr4: ADDP4(addr4,zero)", /* 189 */ "addr4: ADDP4(addr4,cnst4)", /* 190 */ "addr4: ADDP4(addr4,addr4)", /* 191 */ "addr4: ADDU4(addr4,addr4)", /* 192 */ "addr: ADDP4(addr,addr4)", /* 193 */ "addr: ADDU4(addr,addr4)", /* 194 */ "addr: ADDP4(addr4,addr)", /* 195 */ "addr: ADDU4(addr4,addr)", /* 196 */ "addr: ADDP4(addr,zero)", /* 197 */ "addr: ADDP4(addr,stk)", /* 198 */ "addr: ADDP4(stk,addr)", /* 199 */ "addr: ADDP4(addr,cnst1)", /* 200 */ "addr: ADDP4(addr,cnst2)", /* 201 */ "addr: ADDP4(addr,cnst4)", /* 202 */ "addr: ADDP4(addr,CNSTI4)", /* 203 */ "addr4: SUBP4(addr4,addr4)", /* 204 */ "addr: SUBP4(addr,stk)", /* 205 */ "addr: SUBP4(stk,addr)", /* 206 */ "addr: SUBP4(addr,cnst1)", /* 207 */ "addr: SUBP4(addr,cnst2)", /* 208 */ "addr: SUBP4(addr,cnst4)", /* 209 */ "addr: SUBP4(addr,CNSTI4)", /* 210 */ "stk: BANDI4(stk,stk)", /* 211 */ "stk: BORI4(stk,stk)", /* 212 */ "stk: BXORI4(stk,stk)", /* 213 */ "stk: BANDU4(stk,stk)", /* 214 */ "stk: BORU4(stk,stk)", /* 215 */ "stk: BXORU4(stk,stk)", /* 216 */ "stk: SUBI4(stk,stk)", /* 217 */ "stk: SUBU4(stk,stk)", /* 218 */ "addr4: LSHI4(stk,cnst2)", /* 219 */ "addr4: LSHU4(stk,cnst2)", /* 220 */ "addr4: LSHI4(stk,cnst3)", /* 221 */ "addr4: LSHU4(stk,cnst3)", /* 222 */ "addr4: LSHI4(stk,cnst4)", /* 223 */ "addr4: LSHU4(stk,cnst4)", /* 224 */ "stk: LSHI4(stk,cnst1)", /* 225 */ "stk: LSHU4(stk,cnst1)", /* 226 */ "stk: RSHI4(stk,cnst1)", /* 227 */ "stk: RSHU4(stk,cnst1)", /* 228 */ "stk: LSHI4(stk,cnst2)", /* 229 */ "stk: LSHU4(stk,cnst2)", /* 230 */ "stk: RSHI4(stk,cnst2)", /* 231 */ "stk: RSHU4(stk,cnst2)", /* 232 */ "stk: LSHI4(stk,stk)", /* 233 */ "stk: LSHU4(stk,stk)", /* 234 */ "stk: RSHI4(stk,stk)", /* 235 */ "stk: RSHU4(stk,stk)", /* 236 */ "stk: BCOMI4(stk)", /* 237 */ "stk: BCOMU4(stk)", /* 238 */ "stk: NEGI4(stk)", /* 239 */ "stk: ADDF4(stk,stk)", /* 240 */ "stk: DIVF4(stk,stk)", /* 241 */ "stk: MULF4(stk,stk)", /* 242 */ "stk: SUBF4(stk,stk)", /* 243 */ "stk: NEGF4(stk)", /* 244 */ "stk: CVII1(stk)", /* 245 */ "stk: CVII2(stk)", /* 246 */ "stk: CVII4(stk)", /* 247 */ "stk: CVUI4(stk)", /* 248 */ "stk: CVUU1(stk)", /* 249 */ "stk: CVUU2(stk)", /* 250 */ "stk: CVUU4(stk)", /* 251 */ "stk: CVIU4(stk)", /* 252 */ "stk: CVFF4(stk)", /* 253 */ "stk: CVIF4(stk)", /* 254 */ "stk: CVFI4(stk)", /* 255 */ "addr4: CVPU4(addr4)", /* 256 */ "addr: CVPU4(addr)", /* 257 */ "stk: CVUP4(stk)", /* 258 */ "stk: addr", /* 259 */ "addr: stk", /* 260 */ "stmt: LABELV", /* 261 */ "stmt: JUMPV(glob)", /* 262 */ "stmt: JUMPV(addr)", /* 263 */ "stmt: EQI4(stk,stk)", /* 264 */ "stmt: EQU4(stk,stk)", /* 265 */ "stmt: NEI4(stk,stk)", /* 266 */ "stmt: NEU4(stk,stk)", /* 267 */ "stmt: EQI4(addr,addr)", /* 268 */ "stmt: EQU4(addr,addr)", /* 269 */ "stmt: NEI4(addr,addr)", /* 270 */ "stmt: NEU4(addr,addr)", /* 271 */ "stmt: NEI4(addr,zero)", /* 272 */ "stmt: NEU4(addr,zero)", /* 273 */ "stmt: GEI4(stk,stk)", /* 274 */ "stmt: GTI4(stk,stk)", /* 275 */ "stmt: LEI4(stk,stk)", /* 276 */ "stmt: LTI4(stk,stk)", /* 277 */ "stmt: EQI4(stk,zero)", /* 278 */ "stmt: NEI4(stk,zero)", /* 279 */ "stmt: EQU4(stk,zero)", /* 280 */ "stmt: NEU4(stk,zero)", /* 281 */ "stmt: GEI4(stk,zero)", /* 282 */ "stmt: LTI4(stk,zero)", /* 283 */ "stmt: GEU4(stk,stk)", /* 284 */ "stmt: GTU4(stk,stk)", /* 285 */ "stmt: LEU4(stk,stk)", /* 286 */ "stmt: LTU4(stk,stk)", /* 287 */ "stmt: GEU4(addr4,addr4)", /* 288 */ "stmt: GTU4(addr4,addr4)", /* 289 */ "stmt: LEU4(addr4,addr4)", /* 290 */ "stmt: LTU4(addr4,addr4)", /* 291 */ "stmt: EQF4(stk,stk)", /* 292 */ "stmt: LEF4(stk,stk)", /* 293 */ "stmt: LTF4(stk,stk)", /* 294 */ "stmt: GEF4(stk,stk)", /* 295 */ "stmt: GTF4(stk,stk)", /* 296 */ "stmt: NEF4(stk,stk)", /* 297 */ "stk: CALLF4(glob)", /* 298 */ "stk: CALLI4(glob)", /* 299 */ "stk: CALLP4(glob)", /* 300 */ "addr: CALLP4(glob)", /* 301 */ "stk: CALLU4(glob)", /* 302 */ "stmt: CALLV(glob)", /* 303 */ "stk: CALLF4(addr)", /* 304 */ "stk: CALLI4(addr)", /* 305 */ "stk: CALLP4(addr)", /* 306 */ "addr: CALLP4(addr)", /* 307 */ "stk: CALLU4(addr)", /* 308 */ "stmt: CALLV(addr)", /* 309 */ "stmt: RETF4(stk)", /* 310 */ "stmt: RETI4(stk)", /* 311 */ "stmt: RETU4(stk)", /* 312 */ "stmt: RETP4(addr)", /* 313 */ "stmt: RETV", /* 314 */ "stmt: ARGF4(stk)", /* 315 */ "stmt: ARGI4(stk)", /* 316 */ "stmt: ARGP4(addr)", /* 317 */ "stmt: ARGU4(stk)", /* 318 */ "stmt: ASGNB(INDIRB(addr),addr)", }; static short _decode_stmt[] = { 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 81, 82, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 124, 133, 142, 151, 156, 157, 158, 159, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 302, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, }; static short _decode_stk[] = { 0, 1, 2, 3, 4, 5, 6, 8, 13, 14, 15, 16, 17, 18, 20, 75, 76, 77, 78, 79, 112, 113, 115, 152, 153, 154, 155, 160, 161, 162, 163, 164, 165, 167, 170, 171, 172, 173, 174, 175, 180, 181, 182, 183, 184, 185, 186, 187, 210, 211, 212, 213, 214, 215, 216, 217, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 258, 297, 298, 299, 301, 303, 304, 305, 307, }; static short _decode_tmp[] = { 0, 40, }; static short _decode_addr[] = { 0, 7, 19, 80, 86, 87, 88, 114, 123, 132, 141, 150, 166, 168, 169, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 256, 259, 300, 306, }; static short _decode_vread[] = { 0, 9, 10, 11, 12, }; static short _decode_var[] = { 0, 37, 38, 39, }; static short _decode_cnst1[] = { 0, 41, 42, 43, 44, 45, 46, }; static short _decode_cnst2[] = { 0, 47, 48, 49, 50, 51, 52, }; static short _decode_cnst4[] = { 0, 53, 54, 55, 56, 57, 58, }; static short _decode_addr4[] = { 0, 59, 60, 61, 176, 177, 178, 179, 188, 189, 190, 191, 203, 218, 219, 220, 221, 222, 223, 255, }; static short _decode_cnst3[] = { 0, 62, }; static short _decode_con8[] = { 0, 63, 64, 65, 66, 67, 68, }; static short _decode_con17[] = { 0, 69, 70, 71, 72, }; static short _decode_con24[] = { 0, 73, 74, }; static short _decode_glob[] = { 0, 83, }; static short _decode_local[] = { 0, 84, 85, }; static short _decode_zero[] = { 0, 89, 90, 91, 92, 93, 94, 95, }; static short _decode_tuck1[] = { 0, 116, 117, 118, 119, 120, 121, 122, }; static short _decode_tuck2[] = { 0, 125, 126, 127, 128, 129, 130, 131, }; static short _decode_tuck3[] = { 0, 134, 135, 136, 137, 138, 139, 140, }; static short _decode_tuck4[] = { 0, 143, 144, 145, 146, 147, 148, 149, }; static int _rule(void *state, int goalnt) { if (goalnt < 1 || goalnt > 21) fatal("_rule", "Bad goal nonterminal %d\n", goalnt); if (!state) return 0; switch (goalnt) { case _stmt_NT: return _decode_stmt[((struct _state *)state)->rule._stmt]; case _stk_NT: return _decode_stk[((struct _state *)state)->rule._stk]; case _tmp_NT: return _decode_tmp[((struct _state *)state)->rule._tmp]; case _addr_NT: return _decode_addr[((struct _state *)state)->rule._addr]; case _vread_NT: return _decode_vread[((struct _state *)state)->rule._vread]; case _var_NT: return _decode_var[((struct _state *)state)->rule._var]; case _cnst1_NT: return _decode_cnst1[((struct _state *)state)->rule._cnst1]; case _cnst2_NT: return _decode_cnst2[((struct _state *)state)->rule._cnst2]; case _cnst4_NT: return _decode_cnst4[((struct _state *)state)->rule._cnst4]; case _addr4_NT: return _decode_addr4[((struct _state *)state)->rule._addr4]; case _cnst3_NT: return _decode_cnst3[((struct _state *)state)->rule._cnst3]; case _con8_NT: return _decode_con8[((struct _state *)state)->rule._con8]; case _con17_NT: return _decode_con17[((struct _state *)state)->rule._con17]; case _con24_NT: return _decode_con24[((struct _state *)state)->rule._con24]; case _glob_NT: return _decode_glob[((struct _state *)state)->rule._glob]; case _local_NT: return _decode_local[((struct _state *)state)->rule._local]; case _zero_NT: return _decode_zero[((struct _state *)state)->rule._zero]; case _tuck1_NT: return _decode_tuck1[((struct _state *)state)->rule._tuck1]; case _tuck2_NT: return _decode_tuck2[((struct _state *)state)->rule._tuck2]; case _tuck3_NT: return _decode_tuck3[((struct _state *)state)->rule._tuck3]; case _tuck4_NT: return _decode_tuck4[((struct _state *)state)->rule._tuck4]; default: fatal("_rule", "Bad goal nonterminal %d\n", goalnt); return 0; } } static void _closure_stk(NODEPTR_TYPE, int); static void _closure_addr(NODEPTR_TYPE, int); static void _closure_addr4(NODEPTR_TYPE, int); static void _closure_con8(NODEPTR_TYPE, int); static void _closure_con17(NODEPTR_TYPE, int); static void _closure_con24(NODEPTR_TYPE, int); static void _closure_tuck1(NODEPTR_TYPE, int); static void _closure_tuck2(NODEPTR_TYPE, int); static void _closure_tuck3(NODEPTR_TYPE, int); static void _closure_tuck4(NODEPTR_TYPE, int); static void _closure_stk(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 4 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 4; p->rule._addr = 33; _closure_addr(a, c + 4); } if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 17; } } static void _closure_addr(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 4 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 4; p->rule._stk = 88; _closure_stk(a, c + 4); } if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 18; } } static void _closure_addr4(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 6; _closure_addr(a, c + 0); } } static void _closure_con8(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 1; p->rule._stk = 15; _closure_stk(a, c + 1); } } static void _closure_con17(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 1; p->rule._stk = 16; _closure_stk(a, c + 1); } } static void _closure_con24(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 1 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 1; p->rule._stk = 17; _closure_stk(a, c + 1); } } static void _closure_tuck1(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 39; } if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 23; _closure_stk(a, c + 0); } } static void _closure_tuck2(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 40; } if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 24; _closure_stk(a, c + 0); } } static void _closure_tuck3(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 41; } if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 25; _closure_stk(a, c + 0); } } static void _closure_tuck4(NODEPTR_TYPE a, int c) { struct _state *p = STATE_LABEL(a); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 42; } if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 26; _closure_stk(a, c + 0); } } static void _label(NODEPTR_TYPE a) { int c; struct _state *p; if (!a) fatal("_label", "Null tree\n", 0); STATE_LABEL(a) = p = allocate(sizeof *p, FUNC); p->rule._stmt = 0; p->cost[1] = p->cost[2] = p->cost[3] = p->cost[4] = p->cost[5] = p->cost[6] = p->cost[7] = p->cost[8] = p->cost[9] = p->cost[10] = p->cost[11] = p->cost[12] = p->cost[13] = p->cost[14] = p->cost[15] = p->cost[16] = p->cost[17] = p->cost[18] = p->cost[19] = p->cost[20] = p->cost[21] = 0x7fff; switch (OP_LABEL(a)) { case 41: /* ARGB */ break; case 57: /* ASGNB */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); if ( /* stmt: ASGNB(INDIRB(addr),addr) */ LEFT_CHILD(a)->op == 73 /* INDIRB */ ) { c = ((struct _state *)(LEFT_CHILD(LEFT_CHILD(a))->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 10; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 91; } } break; case 73: /* INDIRB */ _label(LEFT_CHILD(a)); break; case 216: /* CALLV */ _label(LEFT_CHILD(a)); /* stmt: CALLV(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 80; } /* stmt: CALLV(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 81; } break; case 217: /* CALLB */ break; case 233: /* LOADB */ break; case 248: /* RETV */ /* stmt: RETV */ if (3 + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = 3 + 0; p->rule._stmt = 86; } break; case 584: /* JUMPV */ _label(LEFT_CHILD(a)); /* stmt: JUMPV(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 44; } /* stmt: JUMPV(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 45; } break; case 600: /* LABELV */ /* stmt: LABELV */ if (0 + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = 0 + 0; p->rule._stmt = 43; } break; case 711: /* VREGP */ /* tmp: VREGP */ if (0 + 0 < p->cost[_tmp_NT]) { p->cost[_tmp_NT] = 0 + 0; p->rule._tmp = 1; } break; case 727: /* STACKP */ /* vread: STACKP */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_vread_NT]) { p->cost[_vread_NT] = c + 0; p->rule._vread = 1; } /* vread: STACKP */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_vread_NT]) { p->cost[_vread_NT] = c + 0; p->rule._vread = 2; } /* vread: STACKP */ c = (range(a, 3, 100)); if (c + 0 < p->cost[_vread_NT]) { p->cost[_vread_NT] = c + 0; p->rule._vread = 3; } /* var: STACKP */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_var_NT]) { p->cost[_var_NT] = c + 0; p->rule._var = 1; } /* var: STACKP */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_var_NT]) { p->cost[_var_NT] = c + 0; p->rule._var = 2; } /* var: STACKP */ c = (range(a, 3, 100)); if (c + 0 < p->cost[_var_NT]) { p->cost[_var_NT] = c + 0; p->rule._var = 3; } break; case 759: /* COPYP */ /* vread: COPYP */ if (0 + 0 < p->cost[_vread_NT]) { p->cost[_vread_NT] = 0 + 0; p->rule._vread = 4; } break; case 1045: /* CNSTI1 */ /* cnst1: CNSTI1 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 1; } /* cnst2: CNSTI1 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 1; } /* cnst4: CNSTI1 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 1; } /* con8: CNSTI1 */ if (0 + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = 0 + 0; p->rule._con8 = 1; _closure_con8(a, 0 + 0); } /* zero: CNSTI1 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 1; } break; case 1046: /* CNSTU1 */ /* cnst1: CNSTU1 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 2; } /* cnst2: CNSTU1 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 2; } /* cnst4: CNSTU1 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 2; } /* con8: CNSTU1 */ if (0 + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = 0 + 0; p->rule._con8 = 2; _closure_con8(a, 0 + 0); } /* zero: CNSTU1 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 4; } break; case 1077: /* ASGNI1 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNI1(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 1; } /* stmt: ASGNI1(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 9; } /* stmt: ASGNI1(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 16; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 23; } break; case 1078: /* ASGNU1 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNU1(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 2; } /* stmt: ASGNU1(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 10; } /* stmt: ASGNU1(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 16; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 24; } break; case 1093: /* INDIRI1 */ _label(LEFT_CHILD(a)); /* stk: INDIRI1(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 1; _closure_stk(a, c + 0); } /* stk: INDIRI1(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 8; _closure_stk(a, c + 0); } /* stk: INDIRI1(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 12; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 27; _closure_stk(a, c + 0); } break; case 1094: /* INDIRU1 */ _label(LEFT_CHILD(a)); /* stk: INDIRU1(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 2; _closure_stk(a, c + 0); } /* stk: INDIRU1(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 9; _closure_stk(a, c + 0); } /* stk: INDIRU1(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 12; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 28; _closure_stk(a, c + 0); } break; case 1157: /* CVII1 */ _label(LEFT_CHILD(a)); /* stk: CVII1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 76; _closure_stk(a, c + 0); } break; case 1158: /* CVIU1 */ break; case 1205: /* CVUI1 */ break; case 1206: /* CVUU1 */ _label(LEFT_CHILD(a)); /* stk: CVUU1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 80; _closure_stk(a, c + 0); } break; case 1253: /* LOADI1 */ break; case 1254: /* LOADU1 */ break; case 1765: /* TUCKI1 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKI1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 1; _closure_tuck1(a, c + 0); } /* tuck2: TUCKI1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 1; _closure_tuck2(a, c + 0); } /* tuck3: TUCKI1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 1; _closure_tuck3(a, c + 0); } /* tuck4: TUCKI1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 1; _closure_tuck4(a, c + 0); } break; case 1766: /* TUCKU1 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKU1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 2; _closure_tuck1(a, c + 0); } /* tuck2: TUCKU1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 2; _closure_tuck2(a, c + 0); } /* tuck3: TUCKU1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 2; _closure_tuck3(a, c + 0); } /* tuck4: TUCKU1(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 2; _closure_tuck4(a, c + 0); } break; case 2069: /* CNSTI2 */ /* cnst1: CNSTI2 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 3; } /* cnst2: CNSTI2 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 3; } /* cnst4: CNSTI2 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 3; } /* con8: CNSTI2 */ c = (range(a, -128, 127)); if (c + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = c + 0; p->rule._con8 = 3; _closure_con8(a, c + 0); } /* con17: CNSTI2 */ if (1 + 0 < p->cost[_con17_NT]) { p->cost[_con17_NT] = 1 + 0; p->rule._con17 = 1; _closure_con17(a, 1 + 0); } /* zero: CNSTI2 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 2; } break; case 2070: /* CNSTU2 */ /* cnst1: CNSTU2 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 4; } /* cnst2: CNSTU2 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 4; } /* cnst4: CNSTU2 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 4; } /* con8: CNSTU2 */ c = (range(a, 0, 127)); if (c + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = c + 0; p->rule._con8 = 4; _closure_con8(a, c + 0); } /* con17: CNSTU2 */ if (1 + 0 < p->cost[_con17_NT]) { p->cost[_con17_NT] = 1 + 0; p->rule._con17 = 2; _closure_con17(a, 1 + 0); } /* zero: CNSTU2 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 5; } break; case 2101: /* ASGNI2 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNI2(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 3; } /* stmt: ASGNI2(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 11; } /* stmt: ASGNI2(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 12; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 25; } break; case 2102: /* ASGNU2 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNU2(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 4; } /* stmt: ASGNU2(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 12; } /* stmt: ASGNU2(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 12; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 26; } break; case 2117: /* INDIRI2 */ _label(LEFT_CHILD(a)); /* stk: INDIRI2(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 3; _closure_stk(a, c + 0); } /* stk: INDIRI2(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 10; _closure_stk(a, c + 0); } /* stk: INDIRI2(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 9; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 29; _closure_stk(a, c + 0); } break; case 2118: /* INDIRU2 */ _label(LEFT_CHILD(a)); /* stk: INDIRU2(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 4; _closure_stk(a, c + 0); } /* stk: INDIRU2(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 11; _closure_stk(a, c + 0); } /* stk: INDIRU2(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 9; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 30; _closure_stk(a, c + 0); } break; case 2181: /* CVII2 */ _label(LEFT_CHILD(a)); /* stk: CVII2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 77; _closure_stk(a, c + 0); } break; case 2182: /* CVIU2 */ break; case 2229: /* CVUI2 */ break; case 2230: /* CVUU2 */ _label(LEFT_CHILD(a)); /* stk: CVUU2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 81; _closure_stk(a, c + 0); } break; case 2277: /* LOADI2 */ break; case 2278: /* LOADU2 */ break; case 2789: /* TUCKI2 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKI2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 3; _closure_tuck1(a, c + 0); } /* tuck2: TUCKI2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 3; _closure_tuck2(a, c + 0); } /* tuck3: TUCKI2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 3; _closure_tuck3(a, c + 0); } /* tuck4: TUCKI2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 3; _closure_tuck4(a, c + 0); } break; case 2790: /* TUCKU2 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKU2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 4; _closure_tuck1(a, c + 0); } /* tuck2: TUCKU2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 4; _closure_tuck2(a, c + 0); } /* tuck3: TUCKU2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 4; _closure_tuck3(a, c + 0); } /* tuck4: TUCKU2(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 4; _closure_tuck4(a, c + 0); } break; case 4113: /* CNSTF4 */ break; case 4117: /* CNSTI4 */ /* cnst1: CNSTI4 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 5; } /* cnst2: CNSTI4 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 5; } /* cnst4: CNSTI4 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 5; } /* addr4: CNSTI4 */ c = (((a->syms[0]->u.c.v.i & 3) ? LBURG_MAX : 0)); if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 2; _closure_addr4(a, c + 0); } /* cnst3: CNSTI4 */ c = (range(a, 3, 3)); if (c + 0 < p->cost[_cnst3_NT]) { p->cost[_cnst3_NT] = c + 0; p->rule._cnst3 = 1; } /* con8: CNSTI4 */ c = (range(a, -128, 127)); if (c + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = c + 0; p->rule._con8 = 5; _closure_con8(a, c + 0); } /* con17: CNSTI4 */ c = (range(a, -(1 << 16), (1 << 16)-1)+1); if (c + 0 < p->cost[_con17_NT]) { p->cost[_con17_NT] = c + 0; p->rule._con17 = 3; _closure_con17(a, c + 0); } /* con24: CNSTI4 */ c = (range(a, -(1 << 23), (1 << 23) - 1)+2); if (c + 0 < p->cost[_con24_NT]) { p->cost[_con24_NT] = c + 0; p->rule._con24 = 1; _closure_con24(a, c + 0); } /* stk: CNSTI4 */ if (3 + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = 3 + 0; p->rule._stk = 18; _closure_stk(a, 3 + 0); } /* zero: CNSTI4 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 3; } break; case 4118: /* CNSTU4 */ /* cnst1: CNSTU4 */ c = (range(a, 1, 1)); if (c + 0 < p->cost[_cnst1_NT]) { p->cost[_cnst1_NT] = c + 0; p->rule._cnst1 = 6; } /* cnst2: CNSTU4 */ c = (range(a, 2, 2)); if (c + 0 < p->cost[_cnst2_NT]) { p->cost[_cnst2_NT] = c + 0; p->rule._cnst2 = 6; } /* cnst4: CNSTU4 */ c = (range(a, 4, 4)); if (c + 0 < p->cost[_cnst4_NT]) { p->cost[_cnst4_NT] = c + 0; p->rule._cnst4 = 6; } /* addr4: CNSTU4 */ c = (((a->syms[0]->u.c.v.u & 3) ? LBURG_MAX : 0)); if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 3; _closure_addr4(a, c + 0); } /* con8: CNSTU4 */ c = (range(a, 0, 127)); if (c + 0 < p->cost[_con8_NT]) { p->cost[_con8_NT] = c + 0; p->rule._con8 = 6; _closure_con8(a, c + 0); } /* con17: CNSTU4 */ c = (range(a, 0, (1 << 16)-1)+1); if (c + 0 < p->cost[_con17_NT]) { p->cost[_con17_NT] = c + 0; p->rule._con17 = 4; _closure_con17(a, c + 0); } /* con24: CNSTU4 */ c = (range(a, 0, (1 << 23) -1)+2); if (c + 0 < p->cost[_con24_NT]) { p->cost[_con24_NT] = c + 0; p->rule._con24 = 2; _closure_con24(a, c + 0); } /* stk: CNSTU4 */ if (3 + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = 3 + 0; p->rule._stk = 19; _closure_stk(a, 3 + 0); } /* zero: CNSTU4 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 6; } break; case 4119: /* CNSTP4 */ /* addr4: CNSTP4 */ c = (((a->syms[0]->u.c.v.u & 3) ? LBURG_MAX : 0)); if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 1; _closure_addr4(a, c + 0); } /* addr: CNSTP4 */ if (3 + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = 3 + 0; p->rule._addr = 3; _closure_addr(a, 3 + 0); } /* zero: CNSTP4 */ c = (range(a, 0, 0)); if (c + 0 < p->cost[_zero_NT]) { p->cost[_zero_NT] = c + 0; p->rule._zero = 7; } break; case 4129: /* ARGF4 */ _label(LEFT_CHILD(a)); /* stmt: ARGF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 87; } break; case 4133: /* ARGI4 */ _label(LEFT_CHILD(a)); /* stmt: ARGI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 88; } break; case 4134: /* ARGU4 */ _label(LEFT_CHILD(a)); /* stmt: ARGU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 90; } break; case 4135: /* ARGP4 */ _label(LEFT_CHILD(a)); /* stmt: ARGP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 89; } break; case 4145: /* ASGNF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNF4(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 5; } /* stmt: ASGNF4(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 13; } /* stmt: ASGNF4(stk,local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_local_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 22; } /* stmt: ASGNF4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 30; } /* stmt: ASGNF4(stk,glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_glob_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 34; } break; case 4149: /* ASGNI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNI4(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 6; } /* stmt: ASGNI4(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 14; } /* stmt: ASGNI4(stk,local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_local_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 19; } /* stmt: ASGNI4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 27; } /* stmt: ASGNI4(stk,glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_glob_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 31; } break; case 4150: /* ASGNU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNU4(stk,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 8; } /* stmt: ASGNU4(stk,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 16; } /* stmt: ASGNU4(stk,local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_local_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 20; } /* stmt: ASGNU4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 28; } /* stmt: ASGNU4(stk,glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_glob_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 32; } break; case 4151: /* ASGNP4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: ASGNP4(addr,tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 7; } /* stmt: ASGNP4(addr,var) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_var_NT] + 0; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 15; } /* stmt: ASGNP4(addr,local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_local_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 21; } /* stmt: ASGNP4(addr,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 29; } /* stmt: ASGNP4(addr,glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_glob_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 33; } break; case 4161: /* INDIRF4 */ _label(LEFT_CHILD(a)); /* stk: INDIRF4(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 5; _closure_stk(a, c + 0); } /* stk: INDIRF4(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 12; _closure_stk(a, c + 0); } /* stk: INDIRF4(local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_local_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 22; _closure_stk(a, c + 0); } /* stk: INDIRF4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 33; _closure_stk(a, c + 0); } break; case 4165: /* INDIRI4 */ _label(LEFT_CHILD(a)); /* stk: INDIRI4(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 6; _closure_stk(a, c + 0); } /* stk: INDIRI4(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 13; _closure_stk(a, c + 0); } /* stk: INDIRI4(local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_local_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 20; _closure_stk(a, c + 0); } /* stk: INDIRI4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 31; _closure_stk(a, c + 0); } break; case 4166: /* INDIRU4 */ _label(LEFT_CHILD(a)); /* stk: INDIRU4(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 7; _closure_stk(a, c + 0); } /* stk: INDIRU4(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 14; _closure_stk(a, c + 0); } /* stk: INDIRU4(local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_local_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 21; _closure_stk(a, c + 0); } /* stk: INDIRU4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 32; _closure_stk(a, c + 0); } break; case 4167: /* INDIRP4 */ _label(LEFT_CHILD(a)); /* addr: INDIRP4(tmp) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_tmp_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 1; _closure_addr(a, c + 0); } /* addr: INDIRP4(vread) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_vread_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 2; _closure_addr(a, c + 0); } /* addr: INDIRP4(local) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_local_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 7; _closure_addr(a, c + 0); } /* addr: INDIRP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 12; _closure_addr(a, c + 0); } break; case 4209: /* CVFF4 */ _label(LEFT_CHILD(a)); /* stk: CVFF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 84; _closure_stk(a, c + 0); } break; case 4213: /* CVFI4 */ _label(LEFT_CHILD(a)); /* stk: CVFI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 50; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 86; _closure_stk(a, c + 0); } break; case 4225: /* CVIF4 */ _label(LEFT_CHILD(a)); /* stk: CVIF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 50; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 85; _closure_stk(a, c + 0); } break; case 4229: /* CVII4 */ _label(LEFT_CHILD(a)); /* stk: CVII4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 78; _closure_stk(a, c + 0); } break; case 4230: /* CVIU4 */ _label(LEFT_CHILD(a)); /* stk: CVIU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 83; _closure_stk(a, c + 0); } break; case 4246: /* CVPU4 */ _label(LEFT_CHILD(a)); /* addr4: CVPU4(addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + 0; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 19; _closure_addr4(a, c + 0); } /* addr: CVPU4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 32; _closure_addr(a, c + 0); } break; case 4247: /* CVPP4 */ break; case 4277: /* CVUI4 */ _label(LEFT_CHILD(a)); /* stk: CVUI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 79; _closure_stk(a, c + 0); } break; case 4278: /* CVUU4 */ _label(LEFT_CHILD(a)); /* stk: CVUU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 82; _closure_stk(a, c + 0); } break; case 4279: /* CVUP4 */ _label(LEFT_CHILD(a)); /* stk: CVUP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 0; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 87; _closure_stk(a, c + 0); } break; case 4289: /* NEGF4 */ _label(LEFT_CHILD(a)); /* stk: NEGF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 75; _closure_stk(a, c + 0); } break; case 4293: /* NEGI4 */ _label(LEFT_CHILD(a)); /* stk: NEGI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 2; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 70; _closure_stk(a, c + 0); } break; case 4305: /* CALLF4 */ _label(LEFT_CHILD(a)); /* stk: CALLF4(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 89; _closure_stk(a, c + 0); } /* stk: CALLF4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 93; _closure_stk(a, c + 0); } break; case 4309: /* CALLI4 */ _label(LEFT_CHILD(a)); /* stk: CALLI4(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 90; _closure_stk(a, c + 0); } /* stk: CALLI4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 94; _closure_stk(a, c + 0); } break; case 4310: /* CALLU4 */ _label(LEFT_CHILD(a)); /* stk: CALLU4(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 92; _closure_stk(a, c + 0); } /* stk: CALLU4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 96; _closure_stk(a, c + 0); } break; case 4311: /* CALLP4 */ _label(LEFT_CHILD(a)); /* stk: CALLP4(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 91; _closure_stk(a, c + 0); } /* addr: CALLP4(glob) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_glob_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 34; _closure_addr(a, c + 0); } /* stk: CALLP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 95; _closure_stk(a, c + 0); } /* addr: CALLP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 35; _closure_addr(a, c + 0); } break; case 4321: /* LOADF4 */ break; case 4325: /* LOADI4 */ break; case 4326: /* LOADU4 */ break; case 4327: /* LOADP4 */ break; case 4337: /* RETF4 */ _label(LEFT_CHILD(a)); /* stmt: RETF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 82; } break; case 4341: /* RETI4 */ _label(LEFT_CHILD(a)); /* stmt: RETI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 83; } break; case 4342: /* RETU4 */ _label(LEFT_CHILD(a)); /* stmt: RETU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 84; } break; case 4343: /* RETP4 */ _label(LEFT_CHILD(a)); /* stmt: RETP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 85; } break; case 4359: /* ADDRGP4 */ /* glob: ADDRGP4 */ if (0 + 0 < p->cost[_glob_NT]) { p->cost[_glob_NT] = 0 + 0; p->rule._glob = 1; } /* addr: ADDRGP4 */ if (2 + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = 2 + 0; p->rule._addr = 4; _closure_addr(a, 2 + 0); } break; case 4375: /* ADDRFP4 */ /* local: ADDRFP4 */ if (0 + 0 < p->cost[_local_NT]) { p->cost[_local_NT] = 0 + 0; p->rule._local = 1; } break; case 4391: /* ADDRLP4 */ /* local: ADDRLP4 */ if (0 + 0 < p->cost[_local_NT]) { p->cost[_local_NT] = 0 + 0; p->rule._local = 2; } /* addr: ADDRLP4 */ if (3 + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = 3 + 0; p->rule._addr = 5; _closure_addr(a, 3 + 0); } break; case 4401: /* ADDF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: ADDF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 71; _closure_stk(a, c + 0); } break; case 4405: /* ADDI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: ADDI4(cnst1,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_cnst1_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 40; _closure_stk(a, c + 0); } /* stk: ADDI4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 42; _closure_stk(a, c + 0); } /* stk: ADDI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 46; _closure_stk(a, c + 0); } break; case 4406: /* ADDU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: ADDU4(cnst1,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_cnst1_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 41; _closure_stk(a, c + 0); } /* stk: ADDU4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 43; _closure_stk(a, c + 0); } /* stk: ADDU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 47; _closure_stk(a, c + 0); } /* addr4: ADDU4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 11; _closure_addr4(a, c + 0); } /* addr: ADDU4(addr,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 16; _closure_addr(a, c + 0); } /* addr: ADDU4(addr4,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 18; _closure_addr(a, c + 0); } break; case 4407: /* ADDP4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr: ADDP4(addr,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 6; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 13; _closure_addr(a, c + 0); } /* addr: ADDP4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 14; _closure_addr(a, c + 0); } /* addr4: ADDP4(addr4,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 0; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 8; _closure_addr4(a, c + 0); } /* addr4: ADDP4(addr4,cnst4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst4_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 9; _closure_addr4(a, c + 0); } /* addr4: ADDP4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 10; _closure_addr4(a, c + 0); } /* addr: ADDP4(addr,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 15; _closure_addr(a, c + 0); } /* addr: ADDP4(addr4,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 17; _closure_addr(a, c + 0); } /* addr: ADDP4(addr,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 0; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 19; _closure_addr(a, c + 0); } /* addr: ADDP4(addr,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 6; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 20; _closure_addr(a, c + 0); } /* addr: ADDP4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 5; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 21; _closure_addr(a, c + 0); } /* addr: ADDP4(addr,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 5; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 22; _closure_addr(a, c + 0); } /* addr: ADDP4(addr,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 3; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 23; _closure_addr(a, c + 0); } /* addr: ADDP4(addr,cnst4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst4_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 24; _closure_addr(a, c + 0); } if ( /* addr: ADDP4(addr,CNSTI4) */ RIGHT_CHILD(a)->op == 4117 /* CNSTI4 */ ) { c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 8; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 25; _closure_addr(a, c + 0); } } break; case 4417: /* SUBF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: SUBF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 74; _closure_stk(a, c + 0); } break; case 4421: /* SUBI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: SUBI4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 44; _closure_stk(a, c + 0); } /* stk: SUBI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 54; _closure_stk(a, c + 0); } break; case 4422: /* SUBU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: SUBU4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 45; _closure_stk(a, c + 0); } /* stk: SUBU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 55; _closure_stk(a, c + 0); } break; case 4423: /* SUBP4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr4: SUBP4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 12; _closure_addr4(a, c + 0); } /* addr: SUBP4(addr,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 7; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 26; _closure_addr(a, c + 0); } /* addr: SUBP4(stk,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 6; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 27; _closure_addr(a, c + 0); } /* addr: SUBP4(addr,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 5; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 28; _closure_addr(a, c + 0); } /* addr: SUBP4(addr,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 3; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 29; _closure_addr(a, c + 0); } /* addr: SUBP4(addr,cnst4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst4_NT] + 1; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 30; _closure_addr(a, c + 0); } if ( /* addr: SUBP4(addr,CNSTI4) */ RIGHT_CHILD(a)->op == 4117 /* CNSTI4 */ ) { c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + 8; if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 31; _closure_addr(a, c + 0); } } break; case 4437: /* LSHI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr4: LSHI4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 0; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 13; _closure_addr4(a, c + 0); } /* addr4: LSHI4(stk,cnst3) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst3_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 15; _closure_addr4(a, c + 0); } /* addr4: LSHI4(stk,cnst4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst4_NT] + 2; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 17; _closure_addr4(a, c + 0); } /* stk: LSHI4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 56; _closure_stk(a, c + 0); } /* stk: LSHI4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 2; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 60; _closure_stk(a, c + 0); } /* stk: LSHI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 30; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 64; _closure_stk(a, c + 0); } break; case 4438: /* LSHU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* addr4: LSHU4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 0; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 14; _closure_addr4(a, c + 0); } /* addr4: LSHU4(stk,cnst3) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst3_NT] + 1; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 16; _closure_addr4(a, c + 0); } /* addr4: LSHU4(stk,cnst4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst4_NT] + 2; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 18; _closure_addr4(a, c + 0); } /* stk: LSHU4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 57; _closure_stk(a, c + 0); } /* stk: LSHU4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 2; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 61; _closure_stk(a, c + 0); } /* stk: LSHU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 30; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 65; _closure_stk(a, c + 0); } break; case 4453: /* MODI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: MODI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 8; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 36; _closure_stk(a, c + 0); } break; case 4454: /* MODU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: MODU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 37; _closure_stk(a, c + 0); } break; case 4469: /* RSHI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: RSHI4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 58; _closure_stk(a, c + 0); } /* stk: RSHI4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 2; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 62; _closure_stk(a, c + 0); } /* stk: RSHI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 30; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 66; _closure_stk(a, c + 0); } break; case 4470: /* RSHU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: RSHU4(stk,cnst1) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst1_NT] + 3; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 59; _closure_stk(a, c + 0); } /* stk: RSHU4(stk,cnst2) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_cnst2_NT] + 4; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 63; _closure_stk(a, c + 0); } /* stk: RSHU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 30; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 67; _closure_stk(a, c + 0); } break; case 4485: /* BANDI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BANDI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 48; _closure_stk(a, c + 0); } break; case 4486: /* BANDU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BANDU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 51; _closure_stk(a, c + 0); } break; case 4501: /* BCOMI4 */ _label(LEFT_CHILD(a)); /* stk: BCOMI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 68; _closure_stk(a, c + 0); } break; case 4502: /* BCOMU4 */ _label(LEFT_CHILD(a)); /* stk: BCOMU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 69; _closure_stk(a, c + 0); } break; case 4517: /* BORI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BORI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 49; _closure_stk(a, c + 0); } break; case 4518: /* BORU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BORU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 52; _closure_stk(a, c + 0); } break; case 4533: /* BXORI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BXORI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 50; _closure_stk(a, c + 0); } break; case 4534: /* BXORU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: BXORU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 1; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 53; _closure_stk(a, c + 0); } break; case 4545: /* DIVF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: DIVF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 200; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 72; _closure_stk(a, c + 0); } break; case 4549: /* DIVI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: DIVI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 8; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 34; _closure_stk(a, c + 0); } break; case 4550: /* DIVU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: DIVU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 35; _closure_stk(a, c + 0); } break; case 4561: /* MULF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: MULF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 73; _closure_stk(a, c + 0); } break; case 4565: /* MULI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: MULI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 8; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 38; _closure_stk(a, c + 0); } /* addr4: MULI4(addr4,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 6; _closure_addr4(a, c + 0); } /* addr4: MULI4(stk,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 10; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 7; _closure_addr4(a, c + 0); } break; case 4566: /* MULU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stk: MULU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stk_NT]) { p->cost[_stk_NT] = c + 0; p->rule._stk = 39; _closure_stk(a, c + 0); } /* addr4: MULU4(addr4,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 4; _closure_addr4(a, c + 0); } /* addr4: MULU4(stk,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 10; if (c + 0 < p->cost[_addr4_NT]) { p->cost[_addr4_NT] = c + 0; p->rule._addr4 = 5; _closure_addr4(a, c + 0); } break; case 4577: /* EQF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: EQF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 74; } break; case 4581: /* EQI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: EQI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 46; } /* stmt: EQI4(addr,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 50; } /* stmt: EQI4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 60; } break; case 4582: /* EQU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: EQU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 47; } /* stmt: EQU4(addr,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 51; } /* stmt: EQU4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 62; } break; case 4593: /* GEF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GEF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 77; } break; case 4597: /* GEI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GEI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 56; } /* stmt: GEI4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 64; } break; case 4598: /* GEU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GEU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 66; } /* stmt: GEU4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 70; } break; case 4609: /* GTF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GTF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 78; } break; case 4613: /* GTI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GTI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 57; } break; case 4614: /* GTU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: GTU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 67; } /* stmt: GTU4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 71; } break; case 4625: /* LEF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LEF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 75; } break; case 4629: /* LEI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LEI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 58; } break; case 4630: /* LEU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LEU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 68; } /* stmt: LEU4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 72; } break; case 4641: /* LTF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LTF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 76; } break; case 4645: /* LTI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LTI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 59; } /* stmt: LTI4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 65; } break; case 4646: /* LTU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: LTU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 10; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 69; } /* stmt: LTU4(addr4,addr4) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr4_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr4_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 73; } break; case 4657: /* NEF4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: NEF4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 100; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 79; } break; case 4661: /* NEI4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: NEI4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 48; } /* stmt: NEI4(addr,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 52; } /* stmt: NEI4(addr,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 54; } /* stmt: NEI4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 61; } break; case 4662: /* NEU4 */ _label(LEFT_CHILD(a)); _label(RIGHT_CHILD(a)); /* stmt: NEU4(stk,stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_stk_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 49; } /* stmt: NEU4(addr,addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_addr_NT] + 3; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 53; } /* stmt: NEU4(addr,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 55; } /* stmt: NEU4(stk,zero) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + ((struct _state *)(RIGHT_CHILD(a)->x.state))->cost[_zero_NT] + 2; if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 63; } break; case 4833: /* TUCKF4 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 7; _closure_tuck1(a, c + 0); } /* tuck2: TUCKF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 7; _closure_tuck2(a, c + 0); } /* tuck3: TUCKF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 7; _closure_tuck3(a, c + 0); } /* tuck4: TUCKF4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 7; _closure_tuck4(a, c + 0); } break; case 4837: /* TUCKI4 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 5; _closure_tuck1(a, c + 0); } /* tuck2: TUCKI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 5; _closure_tuck2(a, c + 0); } /* tuck3: TUCKI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 5; _closure_tuck3(a, c + 0); } /* tuck4: TUCKI4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 5; _closure_tuck4(a, c + 0); } break; case 4838: /* TUCKU4 */ _label(LEFT_CHILD(a)); /* tuck1: TUCKU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_tuck1_NT]) { p->cost[_tuck1_NT] = c + 0; p->rule._tuck1 = 6; _closure_tuck1(a, c + 0); } /* tuck2: TUCKU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_tuck2_NT]) { p->cost[_tuck2_NT] = c + 0; p->rule._tuck2 = 6; _closure_tuck2(a, c + 0); } /* tuck3: TUCKU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_tuck3_NT]) { p->cost[_tuck3_NT] = c + 0; p->rule._tuck3 = 6; _closure_tuck3(a, c + 0); } /* tuck4: TUCKU4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_tuck4_NT]) { p->cost[_tuck4_NT] = c + 0; p->rule._tuck4 = 6; _closure_tuck4(a, c + 0); } break; case 4839: /* TUCKP4 */ _label(LEFT_CHILD(a)); /* addr: TUCKP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 8; _closure_addr(a, c + 0); } /* stmt: TUCKP4(addr) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_addr_NT] + (range(a, 1, 1)); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 35; } /* addr: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 9; _closure_addr(a, c + 0); } /* stmt: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 2, 2)); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 36; } /* addr: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a,3, 3)); if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 10; _closure_addr(a, c + 0); } /* stmt: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 3, 3)); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 37; } /* addr: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_addr_NT]) { p->cost[_addr_NT] = c + 0; p->rule._addr = 11; _closure_addr(a, c + 0); } /* stmt: TUCKP4(stk) */ c = ((struct _state *)(LEFT_CHILD(a)->x.state))->cost[_stk_NT] + (range(a, 4, 4)); if (c + 0 < p->cost[_stmt_NT]) { p->cost[_stmt_NT] = c + 0; p->rule._stmt = 38; } break; default: fatal("_label", "Bad terminal %d\n", OP_LABEL(a)); } } static void _kids(NODEPTR_TYPE p, int eruleno, NODEPTR_TYPE kids[]) { if (!p) fatal("_kids", "Null tree\n", 0); if (!kids) fatal("_kids", "Null kids\n", 0); switch (eruleno) { case 317: /* stmt: ARGU4(stk) */ case 316: /* stmt: ARGP4(addr) */ case 315: /* stmt: ARGI4(stk) */ case 314: /* stmt: ARGF4(stk) */ case 312: /* stmt: RETP4(addr) */ case 311: /* stmt: RETU4(stk) */ case 310: /* stmt: RETI4(stk) */ case 309: /* stmt: RETF4(stk) */ case 308: /* stmt: CALLV(addr) */ case 307: /* stk: CALLU4(addr) */ case 306: /* addr: CALLP4(addr) */ case 305: /* stk: CALLP4(addr) */ case 304: /* stk: CALLI4(addr) */ case 303: /* stk: CALLF4(addr) */ case 302: /* stmt: CALLV(glob) */ case 301: /* stk: CALLU4(glob) */ case 300: /* addr: CALLP4(glob) */ case 299: /* stk: CALLP4(glob) */ case 298: /* stk: CALLI4(glob) */ case 297: /* stk: CALLF4(glob) */ case 262: /* stmt: JUMPV(addr) */ case 261: /* stmt: JUMPV(glob) */ case 257: /* stk: CVUP4(stk) */ case 256: /* addr: CVPU4(addr) */ case 255: /* addr4: CVPU4(addr4) */ case 254: /* stk: CVFI4(stk) */ case 253: /* stk: CVIF4(stk) */ case 252: /* stk: CVFF4(stk) */ case 251: /* stk: CVIU4(stk) */ case 250: /* stk: CVUU4(stk) */ case 249: /* stk: CVUU2(stk) */ case 248: /* stk: CVUU1(stk) */ case 247: /* stk: CVUI4(stk) */ case 246: /* stk: CVII4(stk) */ case 245: /* stk: CVII2(stk) */ case 244: /* stk: CVII1(stk) */ case 243: /* stk: NEGF4(stk) */ case 238: /* stk: NEGI4(stk) */ case 237: /* stk: BCOMU4(stk) */ case 236: /* stk: BCOMI4(stk) */ case 209: /* addr: SUBP4(addr,CNSTI4) */ case 202: /* addr: ADDP4(addr,CNSTI4) */ case 167: /* stk: INDIRF4(addr) */ case 166: /* addr: INDIRP4(addr) */ case 165: /* stk: INDIRU4(addr) */ case 164: /* stk: INDIRI4(addr) */ case 163: /* stk: INDIRU2(addr) */ case 162: /* stk: INDIRI2(addr) */ case 161: /* stk: INDIRU1(addr) */ case 160: /* stk: INDIRI1(addr) */ case 151: /* stmt: TUCKP4(stk) */ case 150: /* addr: TUCKP4(stk) */ case 149: /* tuck4: TUCKF4(stk) */ case 148: /* tuck4: TUCKU4(stk) */ case 147: /* tuck4: TUCKI4(stk) */ case 146: /* tuck4: TUCKU2(stk) */ case 145: /* tuck4: TUCKI2(stk) */ case 144: /* tuck4: TUCKU1(stk) */ case 143: /* tuck4: TUCKI1(stk) */ case 142: /* stmt: TUCKP4(stk) */ case 141: /* addr: TUCKP4(stk) */ case 140: /* tuck3: TUCKF4(stk) */ case 139: /* tuck3: TUCKU4(stk) */ case 138: /* tuck3: TUCKI4(stk) */ case 137: /* tuck3: TUCKU2(stk) */ case 136: /* tuck3: TUCKI2(stk) */ case 135: /* tuck3: TUCKU1(stk) */ case 134: /* tuck3: TUCKI1(stk) */ case 133: /* stmt: TUCKP4(stk) */ case 132: /* addr: TUCKP4(stk) */ case 131: /* tuck2: TUCKF4(stk) */ case 130: /* tuck2: TUCKU4(stk) */ case 129: /* tuck2: TUCKI4(stk) */ case 128: /* tuck2: TUCKU2(stk) */ case 127: /* tuck2: TUCKI2(stk) */ case 126: /* tuck2: TUCKU1(stk) */ case 125: /* tuck2: TUCKI1(stk) */ case 124: /* stmt: TUCKP4(addr) */ case 123: /* addr: TUCKP4(addr) */ case 122: /* tuck1: TUCKF4(stk) */ case 121: /* tuck1: TUCKU4(stk) */ case 120: /* tuck1: TUCKI4(stk) */ case 119: /* tuck1: TUCKU2(stk) */ case 118: /* tuck1: TUCKI2(stk) */ case 117: /* tuck1: TUCKU1(stk) */ case 116: /* tuck1: TUCKI1(stk) */ case 115: /* stk: INDIRF4(local) */ case 114: /* addr: INDIRP4(local) */ case 113: /* stk: INDIRU4(local) */ case 112: /* stk: INDIRI4(local) */ case 20: /* stk: INDIRU4(vread) */ case 19: /* addr: INDIRP4(vread) */ case 18: /* stk: INDIRI4(vread) */ case 17: /* stk: INDIRF4(vread) */ case 16: /* stk: INDIRU2(vread) */ case 15: /* stk: INDIRI2(vread) */ case 14: /* stk: INDIRU1(vread) */ case 13: /* stk: INDIRI1(vread) */ case 8: /* stk: INDIRU4(tmp) */ case 7: /* addr: INDIRP4(tmp) */ case 6: /* stk: INDIRI4(tmp) */ case 5: /* stk: INDIRF4(tmp) */ case 4: /* stk: INDIRU2(tmp) */ case 3: /* stk: INDIRI2(tmp) */ case 2: /* stk: INDIRU1(tmp) */ case 1: /* stk: INDIRI1(tmp) */ kids[0] = LEFT_CHILD(p); break; case 313: /* stmt: RETV */ case 260: /* stmt: LABELV */ case 95: /* zero: CNSTP4 */ case 94: /* zero: CNSTU4 */ case 93: /* zero: CNSTU2 */ case 92: /* zero: CNSTU1 */ case 91: /* zero: CNSTI4 */ case 90: /* zero: CNSTI2 */ case 89: /* zero: CNSTI1 */ case 87: /* addr: ADDRLP4 */ case 86: /* addr: ADDRGP4 */ case 85: /* local: ADDRLP4 */ case 84: /* local: ADDRFP4 */ case 83: /* glob: ADDRGP4 */ case 80: /* addr: CNSTP4 */ case 79: /* stk: CNSTU4 */ case 78: /* stk: CNSTI4 */ case 74: /* con24: CNSTU4 */ case 73: /* con24: CNSTI4 */ case 72: /* con17: CNSTU4 */ case 71: /* con17: CNSTI4 */ case 70: /* con17: CNSTU2 */ case 69: /* con17: CNSTI2 */ case 68: /* con8: CNSTU4 */ case 67: /* con8: CNSTI4 */ case 66: /* con8: CNSTU2 */ case 65: /* con8: CNSTI2 */ case 64: /* con8: CNSTU1 */ case 63: /* con8: CNSTI1 */ case 62: /* cnst3: CNSTI4 */ case 61: /* addr4: CNSTU4 */ case 60: /* addr4: CNSTI4 */ case 59: /* addr4: CNSTP4 */ case 58: /* cnst4: CNSTU4 */ case 57: /* cnst4: CNSTI4 */ case 56: /* cnst4: CNSTU2 */ case 55: /* cnst4: CNSTI2 */ case 54: /* cnst4: CNSTU1 */ case 53: /* cnst4: CNSTI1 */ case 52: /* cnst2: CNSTU4 */ case 51: /* cnst2: CNSTI4 */ case 50: /* cnst2: CNSTU2 */ case 49: /* cnst2: CNSTI2 */ case 48: /* cnst2: CNSTU1 */ case 47: /* cnst2: CNSTI1 */ case 46: /* cnst1: CNSTU4 */ case 45: /* cnst1: CNSTI4 */ case 44: /* cnst1: CNSTU2 */ case 43: /* cnst1: CNSTI2 */ case 42: /* cnst1: CNSTU1 */ case 41: /* cnst1: CNSTI1 */ case 40: /* tmp: VREGP */ case 39: /* var: STACKP */ case 38: /* var: STACKP */ case 37: /* var: STACKP */ case 12: /* vread: COPYP */ case 11: /* vread: STACKP */ case 10: /* vread: STACKP */ case 9: /* vread: STACKP */ break; case 296: /* stmt: NEF4(stk,stk) */ case 295: /* stmt: GTF4(stk,stk) */ case 294: /* stmt: GEF4(stk,stk) */ case 293: /* stmt: LTF4(stk,stk) */ case 292: /* stmt: LEF4(stk,stk) */ case 291: /* stmt: EQF4(stk,stk) */ case 290: /* stmt: LTU4(addr4,addr4) */ case 289: /* stmt: LEU4(addr4,addr4) */ case 288: /* stmt: GTU4(addr4,addr4) */ case 287: /* stmt: GEU4(addr4,addr4) */ case 286: /* stmt: LTU4(stk,stk) */ case 285: /* stmt: LEU4(stk,stk) */ case 284: /* stmt: GTU4(stk,stk) */ case 283: /* stmt: GEU4(stk,stk) */ case 282: /* stmt: LTI4(stk,zero) */ case 281: /* stmt: GEI4(stk,zero) */ case 280: /* stmt: NEU4(stk,zero) */ case 279: /* stmt: EQU4(stk,zero) */ case 278: /* stmt: NEI4(stk,zero) */ case 277: /* stmt: EQI4(stk,zero) */ case 276: /* stmt: LTI4(stk,stk) */ case 275: /* stmt: LEI4(stk,stk) */ case 274: /* stmt: GTI4(stk,stk) */ case 273: /* stmt: GEI4(stk,stk) */ case 272: /* stmt: NEU4(addr,zero) */ case 271: /* stmt: NEI4(addr,zero) */ case 270: /* stmt: NEU4(addr,addr) */ case 269: /* stmt: NEI4(addr,addr) */ case 268: /* stmt: EQU4(addr,addr) */ case 267: /* stmt: EQI4(addr,addr) */ case 266: /* stmt: NEU4(stk,stk) */ case 265: /* stmt: NEI4(stk,stk) */ case 264: /* stmt: EQU4(stk,stk) */ case 263: /* stmt: EQI4(stk,stk) */ case 242: /* stk: SUBF4(stk,stk) */ case 241: /* stk: MULF4(stk,stk) */ case 240: /* stk: DIVF4(stk,stk) */ case 239: /* stk: ADDF4(stk,stk) */ case 235: /* stk: RSHU4(stk,stk) */ case 234: /* stk: RSHI4(stk,stk) */ case 233: /* stk: LSHU4(stk,stk) */ case 232: /* stk: LSHI4(stk,stk) */ case 231: /* stk: RSHU4(stk,cnst2) */ case 230: /* stk: RSHI4(stk,cnst2) */ case 229: /* stk: LSHU4(stk,cnst2) */ case 228: /* stk: LSHI4(stk,cnst2) */ case 227: /* stk: RSHU4(stk,cnst1) */ case 226: /* stk: RSHI4(stk,cnst1) */ case 225: /* stk: LSHU4(stk,cnst1) */ case 224: /* stk: LSHI4(stk,cnst1) */ case 223: /* addr4: LSHU4(stk,cnst4) */ case 222: /* addr4: LSHI4(stk,cnst4) */ case 221: /* addr4: LSHU4(stk,cnst3) */ case 220: /* addr4: LSHI4(stk,cnst3) */ case 219: /* addr4: LSHU4(stk,cnst2) */ case 218: /* addr4: LSHI4(stk,cnst2) */ case 217: /* stk: SUBU4(stk,stk) */ case 216: /* stk: SUBI4(stk,stk) */ case 215: /* stk: BXORU4(stk,stk) */ case 214: /* stk: BORU4(stk,stk) */ case 213: /* stk: BANDU4(stk,stk) */ case 212: /* stk: BXORI4(stk,stk) */ case 211: /* stk: BORI4(stk,stk) */ case 210: /* stk: BANDI4(stk,stk) */ case 208: /* addr: SUBP4(addr,cnst4) */ case 207: /* addr: SUBP4(addr,cnst2) */ case 206: /* addr: SUBP4(addr,cnst1) */ case 205: /* addr: SUBP4(stk,addr) */ case 204: /* addr: SUBP4(addr,stk) */ case 203: /* addr4: SUBP4(addr4,addr4) */ case 201: /* addr: ADDP4(addr,cnst4) */ case 200: /* addr: ADDP4(addr,cnst2) */ case 199: /* addr: ADDP4(addr,cnst1) */ case 198: /* addr: ADDP4(stk,addr) */ case 197: /* addr: ADDP4(addr,stk) */ case 196: /* addr: ADDP4(addr,zero) */ case 195: /* addr: ADDU4(addr4,addr) */ case 194: /* addr: ADDP4(addr4,addr) */ case 193: /* addr: ADDU4(addr,addr4) */ case 192: /* addr: ADDP4(addr,addr4) */ case 191: /* addr4: ADDU4(addr4,addr4) */ case 190: /* addr4: ADDP4(addr4,addr4) */ case 189: /* addr4: ADDP4(addr4,cnst4) */ case 188: /* addr4: ADDP4(addr4,zero) */ case 187: /* stk: ADDU4(stk,stk) */ case 186: /* stk: ADDI4(stk,stk) */ case 185: /* stk: SUBU4(stk,cnst1) */ case 184: /* stk: SUBI4(stk,cnst1) */ case 183: /* stk: ADDU4(stk,cnst1) */ case 182: /* stk: ADDI4(stk,cnst1) */ case 181: /* stk: ADDU4(cnst1,stk) */ case 180: /* stk: ADDI4(cnst1,stk) */ case 179: /* addr4: MULI4(stk,addr4) */ case 178: /* addr4: MULI4(addr4,stk) */ case 177: /* addr4: MULU4(stk,addr4) */ case 176: /* addr4: MULU4(addr4,stk) */ case 175: /* stk: MULU4(stk,stk) */ case 174: /* stk: MULI4(stk,stk) */ case 173: /* stk: MODU4(stk,stk) */ case 172: /* stk: MODI4(stk,stk) */ case 171: /* stk: DIVU4(stk,stk) */ case 170: /* stk: DIVI4(stk,stk) */ case 169: /* addr: ADDP4(stk,addr) */ case 168: /* addr: ADDP4(addr,stk) */ case 111: /* stmt: ASGNF4(stk,glob) */ case 110: /* stmt: ASGNP4(addr,glob) */ case 109: /* stmt: ASGNU4(stk,glob) */ case 108: /* stmt: ASGNI4(stk,glob) */ case 107: /* stmt: ASGNF4(stk,addr) */ case 106: /* stmt: ASGNP4(addr,addr) */ case 105: /* stmt: ASGNU4(stk,addr) */ case 104: /* stmt: ASGNI4(stk,addr) */ case 103: /* stmt: ASGNU2(stk,addr) */ case 102: /* stmt: ASGNI2(stk,addr) */ case 101: /* stmt: ASGNU1(stk,addr) */ case 100: /* stmt: ASGNI1(stk,addr) */ case 99: /* stmt: ASGNF4(stk,local) */ case 98: /* stmt: ASGNP4(addr,local) */ case 97: /* stmt: ASGNU4(stk,local) */ case 96: /* stmt: ASGNI4(stk,local) */ case 36: /* stmt: ASGNU4(stk,var) */ case 35: /* stmt: ASGNP4(addr,var) */ case 34: /* stmt: ASGNI4(stk,var) */ case 33: /* stmt: ASGNF4(stk,var) */ case 32: /* stmt: ASGNU2(stk,var) */ case 31: /* stmt: ASGNI2(stk,var) */ case 30: /* stmt: ASGNU1(stk,var) */ case 29: /* stmt: ASGNI1(stk,var) */ case 28: /* stmt: ASGNU4(stk,tmp) */ case 27: /* stmt: ASGNP4(addr,tmp) */ case 26: /* stmt: ASGNI4(stk,tmp) */ case 25: /* stmt: ASGNF4(stk,tmp) */ case 24: /* stmt: ASGNU2(stk,tmp) */ case 23: /* stmt: ASGNI2(stk,tmp) */ case 22: /* stmt: ASGNU1(stk,tmp) */ case 21: /* stmt: ASGNI1(stk,tmp) */ kids[0] = LEFT_CHILD(p); kids[1] = RIGHT_CHILD(p); break; case 259: /* addr: stk */ case 258: /* stk: addr */ case 159: /* stmt: tuck4 */ case 158: /* stmt: tuck3 */ case 157: /* stmt: tuck2 */ case 156: /* stmt: tuck1 */ case 155: /* stk: tuck4 */ case 154: /* stk: tuck3 */ case 153: /* stk: tuck2 */ case 152: /* stk: tuck1 */ case 88: /* addr: addr4 */ case 82: /* stmt: addr */ case 81: /* stmt: stk */ case 77: /* stk: con24 */ case 76: /* stk: con17 */ case 75: /* stk: con8 */ kids[0] = p; break; case 318: /* stmt: ASGNB(INDIRB(addr),addr) */ kids[0] = LEFT_CHILD(LEFT_CHILD(p)); kids[1] = RIGHT_CHILD(p); break; default: fatal("_kids", "Bad rule number %d\n", eruleno); } } static void preamble(Symbol f, Symbol caller[], Symbol callee[], int ncalls); static void postamble(Symbol f, Symbol caller[], Symbol callee[], int ncalls); static int makeTemp(Symbol p) { if (!isscalar(p->type) || p->type->size == 8) { p->sclass = AUTO; return 0; } else if (p->sclass == AUTO) { if (p->addressed) { return 0; } else { makeTemporary(p); return 1; } } else if (p->sclass == REGISTER) { makeTemporary(p); return 1; } else { return 0; } } static void local(Symbol p) { if (!makeTemp(p)) { mkauto(p); } } static void function(Symbol f, Symbol caller[], Symbol callee[], int ncalls) { int i, size, varargs; Node params; offset = local_variable_count = 0; varargs = variadic(f->type); params = stackParameters(caller, callee); gencode(caller, callee); optimise(); framesize = roundup(offset, 4); preamble(f, caller, callee, ncalls); stackemit(params); emitcode(); postamble(f, caller, callee, ncalls); } static Node recalcNode(Node temp, Node calc) { int op = specific(calc->op); if (op == ADDRG + P) { return calc; } else if (generic(calc->op) == CNST) { int lit = calc->syms[0]->u.c.v.i; if ((lit >= -(1<<16)) && (lit < (1<<16))) { return calc; } else { return temp; } } else if (op == LSH + I) { if (specific(calc->kids[1]->op) == CNST + I && calc->kids[1]->syms[0]->u.c.v.i == 2) { int lhs_op = generic(calc->kids[0]->op); if (lhs_op == INDIR) { int addr_op = specific(calc->kids[0]->kids[0]->op); if (addr_op == ADDRL + P || addr_op == ADDRG + P || addr_op == VREG + P) { return calc; } // This is an addr4, but too complex to resuse... // Create new temp for sub-expression, and break up. // So. t1 = (expr) << 2. becomes t2 = (expr). t1 = t2 << 2. /* Node expr = calc->kids[0]; Symbol t2 = newTemp(type); Node var = newnode(VREG + P, NULL, NULL, t2); Node new = newnode(ASGN + ttob(type), var, expr, intconst(type->size)); new->syms[1] = intconst(type->align); new->link = calc->link; calc->link = new; calc->kids[0] = new. return calc; */ } } } return temp; } static void preamble(Symbol f, Symbol caller[], Symbol callee[], int ncalls) { Type retType = freturn(f->type); int params = 0; print("%s:\n", f->x.name); while(caller[params]) params++; // print("; %d parameters\n", params); if (variadic(f->type)) { print("cl __utsa_variadic_\n"); } if (framesize) { int slots = framesize/4; assert(framesize > 0); if (slots == 1) { print("fp--\n"); } else if (slots < 128) { print("lit %d\nfp-\n", slots); } else if (slots < 65536) { print("lsi %d\nfp-\n", slots); } else { print("lei %d\nfp-\n", slots); } } } static void postamble(Symbol f, Symbol caller[], Symbol callee[], int ncalls) { if (variadic(f->type)) { print("r>\n!fp\n"); } else { if (framesize) { int slots = framesize/4; assert(framesize > 0); if (slots == 1) { print("fp++\n"); } else if (slots < 128) { print("lit %d\nfp+\n", slots); } else if (slots < 65536) { print("lsi %d\nfp+\n", slots); } else { print("lei %d\nfp+\n", slots); } } } print("exit\n\n"); } static void structcopy(int size) { // tos = destination // nos = source assert ((size & 3) == 0); switch (size/4) { case 0: break; case 1: print("swap\n@\nswap\n!\n"); break; default: print("lit %d\ncl __copy__\n", size >> 2); } } static int call_label = 0; static int arguments = 0; static int fixedParameters(Type ty) { int i; for (i = 2; ty->u.f.proto[i]; i++); return i - 1; } static int getLocal(Symbol s) { int offset = s->x.offset + framesize; return (offset >> 2) | ((offset & 3) << 30); } static void printLocal(char op, Symbol local) { int index = getLocal(local); if (index < 64) { print("%cloc %d\n", op, index, local->name); } else { print("lsi %d\n@fp\nadd\n%c\n", index, op); } } static void printint(int i) { // UTSA bug causes errors with hex. if (-128 <= i && i < 128) print("lit %d\n", i); else if (- (1 << 16) <= i && i < (1 <<16)) print("lsi %d\n", i); else if (- (1 << 23) <= i && i < (1 <<23)) print("lei %d\n", i); else print("lsi %d\nrhw\nlsi %d\nor\n", i >> 16, i & 0xffff); } static void emit2(Node p) { int op = specific(p->op); int size = opsize(p->op); if (op == INDIR + I || op == INDIR + U || op == INDIR + P || op == INDIR + F) { printLocal('@', p->kids[0]->syms[0]); } else if (op == ASGN + I || op == ASGN + U || op == ASGN + P || op == ASGN + F) { printLocal('!', p->kids[1]->syms[0]); } else if (op == ASGN + B) { structcopy(p->syms[0]->u.c.v.i); } else if (op == CALL + I || op == CALL + U || op == CALL + P || op == CALL + F || op == CALL + V) { if (variadic(p->syms[0]->type)) { print("lit %d\n!yp\n", arguments - fixedParameters(p->syms[0]->type)); } arguments = 0; if (generic(p->kids[0]->op) == ADDRG) { print("cl %s\n", p->kids[0]->syms[0]->x.name); } else { call_label++; print("; icall sequence\nlit ic_%d\n", call_label); print(">r\n>r\nexit\nic_%d:\n", call_label); } } else if (op == ADDRL + P) { int index = getLocal(p->syms[0]); if (index) print("@fp\nlit %d\nadd\n", index); else print("@fp\n"); } else if (op == CNST + I || op == CNST + U) { printint(p->syms[0]->u.c.v.i); } else if (op == CNST + P) { unsigned int bytes = p->syms[0]->u.c.v.i; int addr = bytes >> 2; int offset = bytes & 3; print("lei %d\n", addr); if (offset) { print("lsi %d\nibyte_0\n", offset << 6); } } else if (op == ARG + P || ARG + I || ARG + F || ARG + U) { arguments++; } } static void defconst(int suffix, int size, Value v) { if (suffix == F && size == 4) { print(".word %d\n", (unsigned)v.i); } else if (suffix == P) print(".word %d\n", (unsigned)v.p); else if (size == 1) print(".byte %d\n", (unsigned)((unsigned char)(suffix == I ? v.i : v.u))); else if (size == 2) print(".short %d\n", (unsigned)((unsigned short)(suffix == I ? v.i : v.u))); else if (size == 4) print(".word %d\n", (unsigned)(suffix == I ? v.i : v.u)); } static void defaddress(Symbol p) { print(".addr %s\n", p->x.name); } static void defstring(int n, char *str) { int i; for (i = 0; i < n; i++) { print(".byte %d\n", str[i]); } } static void export(Symbol p) { print(".export %s\n", p->x.name); } static void import(Symbol p) { } static void defsymbol(Symbol p) { if (p->scope >= LOCAL && p->sclass == STATIC) p->x.name = stringf("a%d", genlabel(1)); else if (p->scope == LABELS) p->x.name = stringf("l%s", p->name); else if (p->generated) p->x.name = stringf("x%s", p->name); else if (p->temporary) p->x.name = stringf("t%s", p->name); else if (p->scope == GLOBAL) p->x.name = stringf("_%s", p->name); else { assert(p->scope != CONSTANTS || isint(p->type) || isptr(p->type)); p->x.name = p->name; } } static void address(Symbol q, Symbol p, long n) { if (p->scope == GLOBAL || p->sclass == STATIC || p->sclass == EXTERN) { // Assembler cannot handle arbitary arithmetic, so have to check for offset. int i; char c; for (i = 0; c = p->x.name[i]; i++) { if (c == '+' || c == '-') { int offset = atoi(p->x.name + i + 1); if (c == '-') offset = -offset; p->x.name[i] = '\0'; n += offset; q->x.name = stringf("%s%s%D", p->x.name, n >= 0 ? "+" : "", n); return; } } q->x.name = stringf("%s%s%D", p->x.name, n >= 0 ? "+" : "", n); } else { q->x.offset = p->x.offset + n; // q->x.name = stringd(q->x.offset); } } static void global(Symbol p) { if (p->type->align != 1) { print(".align %d\n", p->type->align); } print("%s:\n", p->x.name); } static void segment(int n) { switch (n) { case CODE: print(".text\n"); break; case DATA: print(".data\n"); break; case BSS: print(".data\n"); break; case LIT: print(".data\n"); break; } } static void space(int n) { print(".skip %d\n", n); } static void stabinit(char *, int, char *[]); static void stabline(Coordinate *); static void stabsym(Symbol); static char *currentfile; /* stabinit - initialize stab output */ static void stabinit(char *file, int argc, char *argv[]) { if (file) { print(".file \"%s\"\n", file); currentfile = file; } } /* stabline - emit stab entry for source coordinate *cp */ static void stabline(Coordinate *cp) { if (cp->file && cp->file != currentfile) { print(".file \"%s\"\n", cp->file); currentfile = cp->file; } print(".line %d\n", cp->y); } /* stabsym - output a stab entry for symbol p */ static void stabsym(Symbol p) { if (p == cfunc && IR->stabline) (*IR->stabline)(&p->src); } static void blockbeg(Env* env) { } static void blockend(Env* env) { } static void progbeg(int argc, char *argv[]) { { union { char c; int i; } u; u.i = 0; u.c = 1; // swap = ((int)(u.i == 1)) != IR->little_endian; } backendflags(argc, argv); } static void progend(void){} Interface utsaIR = { { 1, 1, 0 }, /* char_metrics */ { 2, 2, 0 }, /* short_metrics */ { 4, 4, 0 }, /* int_metrics */ { 4, 4, 0 }, /* long_metrics */ { 4, 4, 0 }, /* long_long_metrics */ { 4, 4, 1 }, /* float_metrics */ { 4, 4, 1 }, /* double_metrics */ { 4, 4, 1 }, /* long_double_metrics */ { 4, 4, 0 }, /* word_metrics */ { 0, 4, 0 }, /* struct_metrics */ 1, /* little_endian */ 0, /* mulops_calls */ 0, /* wants_callb */ 0, /* wants_argb */ 1, /* left_to_right */ 0, /* wants_dag */ 0, /* unsigned_char */ address, blockbeg, blockend, defaddress, defconst, defstring, defsymbol, stackemit, export, function, stackgen, global, import, local, progbeg, progend, segment, space, 0, 0, 0, stabinit, stabline, stabsym, 0, swtch, { 1, /* max_unaligned_load */ 4, recalcNode, makeTemp, NULL, _label, _rule, _nts, _kids, _string, _templates, _isinstruction, _ntname, emit2, { 0, // sub 0, // lsh 0, // rsh 0, // mod 0, // div 0, // lt 0, // le 0, // gt 0 // ge } } };