00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "errors.h"
00039 #include "opcode.h"
00040 #include "config.h"
00041
00042 struct OPERATOR_info_struct OPERATOR_info[OPERATOR_LAST+1] = {
00043
00044 OPERATOR_info_struct(OPERATOR_UNKNOWN,
00045 "UNKNOWN_OPERATOR",
00046 0 ,
00047 OPERATOR_MAPCAT_HDR ,
00048 0),
00049
00050 OPERATOR_info_struct(OPR_ABS,
00051 "OPR_ABS",
00052 1 ,
00053 OPERATOR_MAPCAT_OEXP ,
00054 OPERATOR_PROPERTY_expression),
00055
00056 OPERATOR_info_struct(OPR_ADD,
00057 "OPR_ADD",
00058 2 ,
00059 OPERATOR_MAPCAT_OEXP ,
00060 OPERATOR_PROPERTY_expression),
00061
00062 OPERATOR_info_struct(OPR_AGOTO,
00063 "OPR_AGOTO",
00064 1 ,
00065 OPERATOR_MAPCAT_OSTMT ,
00066 OPERATOR_PROPERTY_stmt |
00067 OPERATOR_PROPERTY_non_scf |
00068 OPERATOR_PROPERTY_endsbb |
00069 OPERATOR_PROPERTY_next_prev),
00070
00071 OPERATOR_info_struct(OPR_ALTENTRY,
00072 "OPR_ALTENTRY",
00073 -1 ,
00074 OPERATOR_MAPCAT_OSTMT ,
00075 OPERATOR_PROPERTY_stmt |
00076 OPERATOR_PROPERTY_non_scf |
00077 OPERATOR_PROPERTY_next_prev |
00078 OPERATOR_PROPERTY_sym),
00079
00080 OPERATOR_info_struct(OPR_ARRAY,
00081 "OPR_ARRAY",
00082 -1 ,
00083 OPERATOR_MAPCAT_ARRAY ,
00084 OPERATOR_PROPERTY_expression |
00085 OPERATOR_PROPERTY_ndim |
00086 OPERATOR_PROPERTY_esize),
00087
00088 OPERATOR_info_struct(OPR_ARRAYEXP,
00089 "OPR_ARRAYEXP",
00090 -1 ,
00091 OPERATOR_MAPCAT_OEXP ,
00092 OPERATOR_PROPERTY_expression),
00093
00094 OPERATOR_info_struct(OPR_ARRSECTION,
00095 "OPR_ARRSECTION",
00096 -1 ,
00097 OPERATOR_MAPCAT_ARRAY ,
00098 OPERATOR_PROPERTY_expression |
00099 OPERATOR_PROPERTY_ndim |
00100 OPERATOR_PROPERTY_esize),
00101
00102 OPERATOR_info_struct(OPR_ASHR,
00103 "OPR_ASHR",
00104 2 ,
00105 OPERATOR_MAPCAT_OEXP ,
00106 OPERATOR_PROPERTY_expression),
00107
00108 OPERATOR_info_struct(OPR_ASSERT,
00109 "OPR_ASSERT",
00110 1 ,
00111 OPERATOR_MAPCAT_OSTMT ,
00112 OPERATOR_PROPERTY_stmt |
00113 OPERATOR_PROPERTY_next_prev |
00114 OPERATOR_PROPERTY_offset),
00115
00116 OPERATOR_info_struct(OPR_BACKWARD_BARRIER,
00117 "OPR_BACKWARD_BARRIER",
00118 -1 ,
00119 OPERATOR_MAPCAT_OSTMT ,
00120 OPERATOR_PROPERTY_stmt |
00121 OPERATOR_PROPERTY_non_scf |
00122 OPERATOR_PROPERTY_next_prev |
00123 OPERATOR_PROPERTY_barrier),
00124
00125 OPERATOR_info_struct(OPR_BAND,
00126 "OPR_BAND",
00127 2 ,
00128 OPERATOR_MAPCAT_OEXP ,
00129 OPERATOR_PROPERTY_expression),
00130
00131 OPERATOR_info_struct(OPR_BIOR,
00132 "OPR_BIOR",
00133 2 ,
00134 OPERATOR_MAPCAT_OEXP ,
00135 OPERATOR_PROPERTY_expression),
00136
00137 OPERATOR_info_struct(OPR_BLOCK,
00138 "OPR_BLOCK",
00139 -1 ,
00140 OPERATOR_MAPCAT_SCF ,
00141 OPERATOR_PROPERTY_scf |
00142 OPERATOR_PROPERTY_next_prev),
00143
00144 OPERATOR_info_struct(OPR_BNOR,
00145 "OPR_BNOR",
00146 2 ,
00147 OPERATOR_MAPCAT_OEXP ,
00148 OPERATOR_PROPERTY_expression),
00149
00150 OPERATOR_info_struct(OPR_BNOT,
00151 "OPR_BNOT",
00152 1 ,
00153 OPERATOR_MAPCAT_OEXP ,
00154 OPERATOR_PROPERTY_expression),
00155
00156 OPERATOR_info_struct(OPR_BXOR,
00157 "OPR_BXOR",
00158 2 ,
00159 OPERATOR_MAPCAT_OEXP ,
00160 OPERATOR_PROPERTY_expression),
00161
00162 OPERATOR_info_struct(OPR_CALL,
00163 "OPR_CALL",
00164 -1 ,
00165 OPERATOR_MAPCAT_CALL ,
00166 OPERATOR_PROPERTY_stmt |
00167 OPERATOR_PROPERTY_call |
00168 OPERATOR_PROPERTY_endsbb |
00169 OPERATOR_PROPERTY_next_prev |
00170 OPERATOR_PROPERTY_sym |
00171 OPERATOR_PROPERTY_flags),
00172
00173 OPERATOR_info_struct(OPR_CAND,
00174 "OPR_CAND",
00175 2 ,
00176 OPERATOR_MAPCAT_OEXP ,
00177 OPERATOR_PROPERTY_expression |
00178 OPERATOR_PROPERTY_boolean),
00179
00180 OPERATOR_info_struct(OPR_CASEGOTO,
00181 "OPR_CASEGOTO",
00182 0 ,
00183 OPERATOR_MAPCAT_OSTMT ,
00184 OPERATOR_PROPERTY_stmt |
00185 OPERATOR_PROPERTY_leaf |
00186 OPERATOR_PROPERTY_non_scf |
00187 OPERATOR_PROPERTY_next_prev |
00188 OPERATOR_PROPERTY_label |
00189 OPERATOR_PROPERTY_value),
00190
00191 OPERATOR_info_struct(OPR_CEIL,
00192 "OPR_CEIL",
00193 1 ,
00194 OPERATOR_MAPCAT_OEXP ,
00195 OPERATOR_PROPERTY_expression),
00196
00197 OPERATOR_info_struct(OPR_CIOR,
00198 "OPR_CIOR",
00199 2 ,
00200 OPERATOR_MAPCAT_OEXP ,
00201 OPERATOR_PROPERTY_expression |
00202 OPERATOR_PROPERTY_boolean),
00203
00204 OPERATOR_info_struct(OPR_COMMA,
00205 "OPR_COMMA",
00206 2 ,
00207 OPERATOR_MAPCAT_OEXP ,
00208 OPERATOR_PROPERTY_expression),
00209
00210 OPERATOR_info_struct(OPR_COMMENT,
00211 "OPR_COMMENT",
00212 0 ,
00213 OPERATOR_MAPCAT_OSTMT ,
00214 OPERATOR_PROPERTY_stmt |
00215 OPERATOR_PROPERTY_leaf |
00216 OPERATOR_PROPERTY_not_executable |
00217 OPERATOR_PROPERTY_next_prev |
00218 OPERATOR_PROPERTY_sym),
00219
00220 OPERATOR_info_struct(OPR_COMPGOTO,
00221 "OPR_COMPGOTO",
00222 -1 ,
00223 OPERATOR_MAPCAT_SCF ,
00224 OPERATOR_PROPERTY_stmt |
00225 OPERATOR_PROPERTY_non_scf |
00226 OPERATOR_PROPERTY_endsbb |
00227 OPERATOR_PROPERTY_next_prev |
00228 OPERATOR_PROPERTY_num_entries |
00229 OPERATOR_PROPERTY_last_label),
00230
00231 OPERATOR_info_struct(OPR_PAIR,
00232 "OPR_PAIR",
00233 2 ,
00234 OPERATOR_MAPCAT_OEXP ,
00235 OPERATOR_PROPERTY_expression),
00236
00237 OPERATOR_info_struct(OPR_CONST,
00238 "OPR_CONST",
00239 0 ,
00240 OPERATOR_MAPCAT_OEXP ,
00241 OPERATOR_PROPERTY_expression |
00242 OPERATOR_PROPERTY_leaf |
00243 OPERATOR_PROPERTY_sym),
00244
00245 OPERATOR_info_struct(OPR_CSELECT,
00246 "OPR_CSELECT",
00247 3 ,
00248 OPERATOR_MAPCAT_OEXP ,
00249 OPERATOR_PROPERTY_expression),
00250
00251 OPERATOR_info_struct(OPR_CVT,
00252 "OPR_CVT",
00253 1 ,
00254 OPERATOR_MAPCAT_OEXP ,
00255 OPERATOR_PROPERTY_expression),
00256
00257 OPERATOR_info_struct(OPR_CVTL,
00258 "OPR_CVTL",
00259 1 ,
00260 OPERATOR_MAPCAT_OEXP ,
00261 OPERATOR_PROPERTY_expression |
00262 OPERATOR_PROPERTY_bits),
00263
00264 OPERATOR_info_struct(OPR_DIV,
00265 "OPR_DIV",
00266 2 ,
00267 OPERATOR_MAPCAT_OEXP ,
00268 OPERATOR_PROPERTY_expression),
00269
00270 OPERATOR_info_struct(OPR_DIVREM,
00271 "OPR_DIVREM",
00272 2 ,
00273 OPERATOR_MAPCAT_OEXP ,
00274 OPERATOR_PROPERTY_expression),
00275
00276 OPERATOR_info_struct(OPR_DO_LOOP,
00277 "OPR_DO_LOOP",
00278 -1 ,
00279 OPERATOR_MAPCAT_SCF ,
00280 OPERATOR_PROPERTY_scf |
00281 OPERATOR_PROPERTY_next_prev),
00282
00283 OPERATOR_info_struct(OPR_DO_WHILE,
00284 "OPR_DO_WHILE",
00285 2 ,
00286 OPERATOR_MAPCAT_SCF ,
00287 OPERATOR_PROPERTY_scf |
00288 OPERATOR_PROPERTY_next_prev),
00289
00290 OPERATOR_info_struct(OPR_EQ,
00291 "OPR_EQ",
00292 2 ,
00293 OPERATOR_MAPCAT_OEXP ,
00294 OPERATOR_PROPERTY_expression |
00295 OPERATOR_PROPERTY_compare |
00296 OPERATOR_PROPERTY_boolean),
00297
00298 OPERATOR_info_struct(OPR_EVAL,
00299 "OPR_EVAL",
00300 1 ,
00301 OPERATOR_MAPCAT_OSTMT ,
00302 OPERATOR_PROPERTY_stmt |
00303 OPERATOR_PROPERTY_next_prev),
00304
00305 OPERATOR_info_struct(OPR_EXC_SCOPE_BEGIN,
00306 "OPR_EXC_SCOPE_BEGIN",
00307 -1 ,
00308 OPERATOR_MAPCAT_OSTMT ,
00309 OPERATOR_PROPERTY_stmt |
00310 OPERATOR_PROPERTY_non_scf |
00311 OPERATOR_PROPERTY_next_prev |
00312 OPERATOR_PROPERTY_offset |
00313 OPERATOR_PROPERTY_ereg_supp),
00314
00315 OPERATOR_info_struct(OPR_EXC_SCOPE_END,
00316 "OPR_EXC_SCOPE_END",
00317 -1 ,
00318 OPERATOR_MAPCAT_OSTMT ,
00319 OPERATOR_PROPERTY_stmt |
00320 OPERATOR_PROPERTY_non_scf |
00321 OPERATOR_PROPERTY_next_prev |
00322 OPERATOR_PROPERTY_offset),
00323
00324 OPERATOR_info_struct(OPR_FALSEBR,
00325 "OPR_FALSEBR",
00326 1 ,
00327 OPERATOR_MAPCAT_OSTMT ,
00328 OPERATOR_PROPERTY_stmt |
00329 OPERATOR_PROPERTY_non_scf |
00330 OPERATOR_PROPERTY_endsbb |
00331 OPERATOR_PROPERTY_next_prev |
00332 OPERATOR_PROPERTY_label),
00333
00334 OPERATOR_info_struct(OPR_FLOOR,
00335 "OPR_FLOOR",
00336 1 ,
00337 OPERATOR_MAPCAT_OEXP ,
00338 OPERATOR_PROPERTY_expression),
00339
00340 OPERATOR_info_struct(OPR_FORWARD_BARRIER,
00341 "OPR_FORWARD_BARRIER",
00342 -1 ,
00343 OPERATOR_MAPCAT_OSTMT ,
00344 OPERATOR_PROPERTY_stmt |
00345 OPERATOR_PROPERTY_non_scf |
00346 OPERATOR_PROPERTY_next_prev |
00347 OPERATOR_PROPERTY_barrier),
00348
00349 OPERATOR_info_struct(OPR_FUNC_ENTRY,
00350 "OPR_FUNC_ENTRY",
00351 -1 ,
00352 OPERATOR_MAPCAT_HDR ,
00353 OPERATOR_PROPERTY_scf |
00354 OPERATOR_PROPERTY_next_prev |
00355 OPERATOR_PROPERTY_sym),
00356
00357 OPERATOR_info_struct(OPR_GE,
00358 "OPR_GE",
00359 2 ,
00360 OPERATOR_MAPCAT_OEXP ,
00361 OPERATOR_PROPERTY_expression |
00362 OPERATOR_PROPERTY_compare |
00363 OPERATOR_PROPERTY_boolean),
00364
00365 OPERATOR_info_struct(OPR_GOTO,
00366 "OPR_GOTO",
00367 0 ,
00368 OPERATOR_MAPCAT_OSTMT ,
00369 OPERATOR_PROPERTY_stmt |
00370 OPERATOR_PROPERTY_leaf |
00371 OPERATOR_PROPERTY_non_scf |
00372 OPERATOR_PROPERTY_endsbb |
00373 OPERATOR_PROPERTY_next_prev |
00374 OPERATOR_PROPERTY_label),
00375
00376 OPERATOR_info_struct(OPR_GT,
00377 "OPR_GT",
00378 2 ,
00379 OPERATOR_MAPCAT_OEXP ,
00380 OPERATOR_PROPERTY_expression |
00381 OPERATOR_PROPERTY_compare |
00382 OPERATOR_PROPERTY_boolean),
00383
00384 OPERATOR_info_struct(OPR_HIGHMPY,
00385 "OPR_HIGHMPY",
00386 2 ,
00387 OPERATOR_MAPCAT_OEXP ,
00388 OPERATOR_PROPERTY_expression),
00389
00390 OPERATOR_info_struct(OPR_HIGHPART,
00391 "OPR_HIGHPART",
00392 1 ,
00393 OPERATOR_MAPCAT_OEXP ,
00394 OPERATOR_PROPERTY_expression),
00395
00396 OPERATOR_info_struct(OPR_ICALL,
00397 "OPR_ICALL",
00398 -1 ,
00399 OPERATOR_MAPCAT_CALL ,
00400 OPERATOR_PROPERTY_stmt |
00401 OPERATOR_PROPERTY_call |
00402 OPERATOR_PROPERTY_endsbb |
00403 OPERATOR_PROPERTY_next_prev |
00404 OPERATOR_PROPERTY_flags |
00405 OPERATOR_PROPERTY_1ty),
00406
00407 OPERATOR_info_struct(OPR_IDNAME,
00408 "OPR_IDNAME",
00409 0 ,
00410 OPERATOR_MAPCAT_OEXP ,
00411 OPERATOR_PROPERTY_expression |
00412 OPERATOR_PROPERTY_leaf |
00413 OPERATOR_PROPERTY_sym |
00414 OPERATOR_PROPERTY_offset),
00415
00416 OPERATOR_info_struct(OPR_IF,
00417 "OPR_IF",
00418 3 ,
00419 OPERATOR_MAPCAT_SCF ,
00420 OPERATOR_PROPERTY_scf |
00421 OPERATOR_PROPERTY_next_prev),
00422
00423 OPERATOR_info_struct(OPR_ILDA,
00424 "OPR_ILDA",
00425 1 ,
00426 OPERATOR_MAPCAT_OEXP ,
00427 OPERATOR_PROPERTY_expression |
00428 OPERATOR_PROPERTY_offset |
00429 OPERATOR_PROPERTY_1ty |
00430 OPERATOR_PROPERTY_field_id),
00431
00432 OPERATOR_info_struct(OPR_ILDBITS,
00433 "OPR_ILDBITS",
00434 1 ,
00435 OPERATOR_MAPCAT_LDST ,
00436 OPERATOR_PROPERTY_expression |
00437 OPERATOR_PROPERTY_load |
00438 OPERATOR_PROPERTY_offset |
00439 OPERATOR_PROPERTY_2ty),
00440
00441 OPERATOR_info_struct(OPR_ILOAD,
00442 "OPR_ILOAD",
00443 1 ,
00444 OPERATOR_MAPCAT_LDST ,
00445 OPERATOR_PROPERTY_expression |
00446 OPERATOR_PROPERTY_load |
00447 OPERATOR_PROPERTY_offset |
00448 OPERATOR_PROPERTY_2ty |
00449 OPERATOR_PROPERTY_field_id),
00450
00451 OPERATOR_info_struct(OPR_ILOADX,
00452 "OPR_ILOADX",
00453 2 ,
00454 OPERATOR_MAPCAT_LDST ,
00455 OPERATOR_PROPERTY_expression |
00456 OPERATOR_PROPERTY_load |
00457 OPERATOR_PROPERTY_2ty),
00458
00459 OPERATOR_info_struct(OPR_SECONDPART,
00460 "OPR_SECONDPART",
00461 1 ,
00462 OPERATOR_MAPCAT_OEXP ,
00463 OPERATOR_PROPERTY_expression),
00464
00465 OPERATOR_info_struct(OPR_INTCONST,
00466 "OPR_INTCONST",
00467 0 ,
00468 OPERATOR_MAPCAT_OEXP ,
00469 OPERATOR_PROPERTY_expression |
00470 OPERATOR_PROPERTY_leaf |
00471 OPERATOR_PROPERTY_value),
00472
00473 OPERATOR_info_struct(OPR_INTRINSIC_CALL,
00474 "OPR_INTRINSIC_CALL",
00475 -1 ,
00476 OPERATOR_MAPCAT_CALL ,
00477 OPERATOR_PROPERTY_stmt |
00478 OPERATOR_PROPERTY_call |
00479 OPERATOR_PROPERTY_endsbb |
00480 OPERATOR_PROPERTY_next_prev |
00481 OPERATOR_PROPERTY_flags |
00482 OPERATOR_PROPERTY_inumber),
00483
00484 OPERATOR_info_struct(OPR_INTRINSIC_OP,
00485 "OPR_INTRINSIC_OP",
00486 -1 ,
00487 OPERATOR_MAPCAT_OEXP ,
00488 OPERATOR_PROPERTY_expression |
00489 OPERATOR_PROPERTY_flags |
00490 OPERATOR_PROPERTY_inumber),
00491
00492 OPERATOR_info_struct(OPR_IO,
00493 "OPR_IO",
00494 -1 ,
00495 OPERATOR_MAPCAT_OSTMT ,
00496 OPERATOR_PROPERTY_stmt |
00497 OPERATOR_PROPERTY_endsbb |
00498 OPERATOR_PROPERTY_next_prev |
00499 OPERATOR_PROPERTY_flags |
00500 OPERATOR_PROPERTY_inumber),
00501
00502 OPERATOR_info_struct(OPR_IO_ITEM,
00503 "OPR_IO_ITEM",
00504 -1 ,
00505 OPERATOR_MAPCAT_OEXP ,
00506 OPERATOR_PROPERTY_expression |
00507 OPERATOR_PROPERTY_inumber |
00508 OPERATOR_PROPERTY_1ty),
00509
00510 OPERATOR_info_struct(OPR_ISTBITS,
00511 "OPR_ISTBITS",
00512 2 ,
00513 OPERATOR_MAPCAT_LDST ,
00514 OPERATOR_PROPERTY_stmt |
00515 OPERATOR_PROPERTY_store |
00516 OPERATOR_PROPERTY_next_prev |
00517 OPERATOR_PROPERTY_offset |
00518 OPERATOR_PROPERTY_1ty),
00519
00520 OPERATOR_info_struct(OPR_ISTORE,
00521 "OPR_ISTORE",
00522 2 ,
00523 OPERATOR_MAPCAT_LDST ,
00524 OPERATOR_PROPERTY_stmt |
00525 OPERATOR_PROPERTY_store |
00526 OPERATOR_PROPERTY_next_prev |
00527 OPERATOR_PROPERTY_offset |
00528 OPERATOR_PROPERTY_1ty |
00529 OPERATOR_PROPERTY_field_id),
00530
00531
00532 OPERATOR_info_struct(OPR_ISTOREX,
00533 "OPR_ISTOREX",
00534 3 ,
00535 OPERATOR_MAPCAT_LDST ,
00536 OPERATOR_PROPERTY_stmt |
00537 OPERATOR_PROPERTY_store |
00538 OPERATOR_PROPERTY_next_prev |
00539 OPERATOR_PROPERTY_1ty),
00540
00541 OPERATOR_info_struct(OPR_LABEL,
00542 "OPR_LABEL",
00543 -1 ,
00544 OPERATOR_MAPCAT_OSTMT ,
00545 OPERATOR_PROPERTY_stmt |
00546 OPERATOR_PROPERTY_non_scf |
00547 OPERATOR_PROPERTY_not_executable |
00548 OPERATOR_PROPERTY_next_prev |
00549 OPERATOR_PROPERTY_label |
00550 OPERATOR_PROPERTY_flags),
00551
00552 OPERATOR_info_struct(OPR_LAND,
00553 "OPR_LAND",
00554 2 ,
00555 OPERATOR_MAPCAT_OEXP ,
00556 OPERATOR_PROPERTY_expression |
00557 OPERATOR_PROPERTY_boolean),
00558
00559 OPERATOR_info_struct(OPR_LDA,
00560 "OPR_LDA",
00561 0 ,
00562 OPERATOR_MAPCAT_OEXP ,
00563 OPERATOR_PROPERTY_expression |
00564 OPERATOR_PROPERTY_leaf |
00565 OPERATOR_PROPERTY_sym |
00566 OPERATOR_PROPERTY_offset |
00567 OPERATOR_PROPERTY_1ty |
00568 OPERATOR_PROPERTY_field_id),
00569
00570 OPERATOR_info_struct(OPR_LDBITS,
00571 "OPR_LDBITS",
00572 0 ,
00573 OPERATOR_MAPCAT_LDST ,
00574 OPERATOR_PROPERTY_expression |
00575 OPERATOR_PROPERTY_leaf |
00576 OPERATOR_PROPERTY_load |
00577 OPERATOR_PROPERTY_sym |
00578 OPERATOR_PROPERTY_offset |
00579 OPERATOR_PROPERTY_1ty),
00580
00581 OPERATOR_info_struct(OPR_LDID,
00582 "OPR_LDID",
00583 0 ,
00584 OPERATOR_MAPCAT_LDST ,
00585 OPERATOR_PROPERTY_expression |
00586 OPERATOR_PROPERTY_leaf |
00587 OPERATOR_PROPERTY_load |
00588 OPERATOR_PROPERTY_sym |
00589 OPERATOR_PROPERTY_offset |
00590 OPERATOR_PROPERTY_1ty |
00591 OPERATOR_PROPERTY_field_id),
00592
00593 OPERATOR_info_struct(OPR_LE,
00594 "OPR_LE",
00595 2 ,
00596 OPERATOR_MAPCAT_OEXP ,
00597 OPERATOR_PROPERTY_expression |
00598 OPERATOR_PROPERTY_compare |
00599 OPERATOR_PROPERTY_boolean),
00600
00601 OPERATOR_info_struct(OPR_LIOR,
00602 "OPR_LIOR",
00603 2 ,
00604 OPERATOR_MAPCAT_OEXP ,
00605 OPERATOR_PROPERTY_expression |
00606 OPERATOR_PROPERTY_boolean),
00607
00608 OPERATOR_info_struct(OPR_LNOT,
00609 "OPR_LNOT",
00610 1 ,
00611 OPERATOR_MAPCAT_OEXP ,
00612 OPERATOR_PROPERTY_expression |
00613 OPERATOR_PROPERTY_boolean),
00614
00615 OPERATOR_info_struct(OPR_LOOP_INFO,
00616 "OPR_LOOP_INFO",
00617 -1 ,
00618 OPERATOR_MAPCAT_OEXP ,
00619 OPERATOR_PROPERTY_expression |
00620 OPERATOR_PROPERTY_2offsets |
00621 OPERATOR_PROPERTY_flags),
00622
00623 OPERATOR_info_struct(OPR_LOWPART,
00624 "OPR_LOWPART",
00625 1 ,
00626 OPERATOR_MAPCAT_OEXP ,
00627 OPERATOR_PROPERTY_expression),
00628
00629 OPERATOR_info_struct(OPR_LSHR,
00630 "OPR_LSHR",
00631 2 ,
00632 OPERATOR_MAPCAT_OEXP ,
00633 OPERATOR_PROPERTY_expression),
00634
00635 OPERATOR_info_struct(OPR_LT,
00636 "OPR_LT",
00637 2 ,
00638 OPERATOR_MAPCAT_OEXP ,
00639 OPERATOR_PROPERTY_expression |
00640 OPERATOR_PROPERTY_compare |
00641 OPERATOR_PROPERTY_boolean),
00642
00643 OPERATOR_info_struct(OPR_MADD,
00644 "OPR_MADD",
00645 3 ,
00646 OPERATOR_MAPCAT_OEXP ,
00647 OPERATOR_PROPERTY_expression),
00648
00649 OPERATOR_info_struct(OPR_MAX,
00650 "OPR_MAX",
00651 2 ,
00652 OPERATOR_MAPCAT_OEXP ,
00653 OPERATOR_PROPERTY_expression),
00654
00655 OPERATOR_info_struct(OPR_MAXPART,
00656 "OPR_MAXPART",
00657 1 ,
00658 OPERATOR_MAPCAT_OEXP ,
00659 OPERATOR_PROPERTY_expression),
00660
00661 OPERATOR_info_struct(OPR_MIN,
00662 "OPR_MIN",
00663 2 ,
00664 OPERATOR_MAPCAT_OEXP ,
00665 OPERATOR_PROPERTY_expression),
00666
00667 OPERATOR_info_struct(OPR_MINMAX,
00668 "OPR_MINMAX",
00669 2 ,
00670 OPERATOR_MAPCAT_OEXP ,
00671 OPERATOR_PROPERTY_expression),
00672
00673 OPERATOR_info_struct(OPR_MINPART,
00674 "OPR_MINPART",
00675 1 ,
00676 OPERATOR_MAPCAT_OEXP ,
00677 OPERATOR_PROPERTY_expression),
00678
00679 OPERATOR_info_struct(OPR_MLOAD,
00680 "OPR_MLOAD",
00681 2 ,
00682 OPERATOR_MAPCAT_LDST ,
00683 OPERATOR_PROPERTY_expression |
00684 OPERATOR_PROPERTY_load |
00685 OPERATOR_PROPERTY_offset |
00686 OPERATOR_PROPERTY_1ty |
00687 OPERATOR_PROPERTY_field_id),
00688
00689 OPERATOR_info_struct(OPR_MOD,
00690 "OPR_MOD",
00691 2 ,
00692 OPERATOR_MAPCAT_OEXP ,
00693 OPERATOR_PROPERTY_expression),
00694
00695 OPERATOR_info_struct(OPR_MPY,
00696 "OPR_MPY",
00697 2 ,
00698 OPERATOR_MAPCAT_OEXP ,
00699 OPERATOR_PROPERTY_expression),
00700
00701 OPERATOR_info_struct(OPR_MSTORE,
00702 "OPR_MSTORE",
00703 3 ,
00704 OPERATOR_MAPCAT_LDST ,
00705 OPERATOR_PROPERTY_stmt |
00706 OPERATOR_PROPERTY_store |
00707 OPERATOR_PROPERTY_next_prev |
00708 OPERATOR_PROPERTY_offset |
00709 OPERATOR_PROPERTY_1ty |
00710 OPERATOR_PROPERTY_field_id),
00711
00712 OPERATOR_info_struct(OPR_MSUB,
00713 "OPR_MSUB",
00714 3 ,
00715 OPERATOR_MAPCAT_OEXP ,
00716 OPERATOR_PROPERTY_expression),
00717
00718 OPERATOR_info_struct(OPR_NE,
00719 "OPR_NE",
00720 2 ,
00721 OPERATOR_MAPCAT_OEXP ,
00722 OPERATOR_PROPERTY_expression |
00723 OPERATOR_PROPERTY_compare |
00724 OPERATOR_PROPERTY_boolean),
00725
00726 OPERATOR_info_struct(OPR_NEG,
00727 "OPR_NEG",
00728 1 ,
00729 OPERATOR_MAPCAT_OEXP ,
00730 OPERATOR_PROPERTY_expression),
00731
00732 OPERATOR_info_struct(OPR_NMADD,
00733 "OPR_NMADD",
00734 3 ,
00735 OPERATOR_MAPCAT_OEXP ,
00736 OPERATOR_PROPERTY_expression),
00737
00738 OPERATOR_info_struct(OPR_NMSUB,
00739 "OPR_NMSUB",
00740 3 ,
00741 OPERATOR_MAPCAT_OEXP ,
00742 OPERATOR_PROPERTY_expression),
00743
00744 OPERATOR_info_struct(OPR_OPTPARM,
00745 "OPR_OPTPARM",
00746 1 ,
00747 OPERATOR_MAPCAT_OEXP ,
00748 OPERATOR_PROPERTY_expression |
00749 OPERATOR_PROPERTY_not_executable),
00750
00751 OPERATOR_info_struct(OPR_OPT_CHI,
00752 "OPR_OPT_CHI",
00753 -1 ,
00754 OPERATOR_MAPCAT_OSTMT ,
00755 OPERATOR_PROPERTY_stmt |
00756 OPERATOR_PROPERTY_next_prev),
00757
00758 OPERATOR_info_struct(OPR_OPT_RESERVE2,
00759 "OPR_OPT_RESERVE2",
00760 -1 ,
00761 OPERATOR_MAPCAT_OSTMT ,
00762 OPERATOR_PROPERTY_stmt |
00763 OPERATOR_PROPERTY_not_executable),
00764
00765 OPERATOR_info_struct(OPR_PAREN,
00766 "OPR_PAREN",
00767 1 ,
00768 OPERATOR_MAPCAT_OEXP ,
00769 OPERATOR_PROPERTY_expression),
00770
00771 OPERATOR_info_struct(OPR_PARM,
00772 "OPR_PARM",
00773 1 ,
00774 OPERATOR_MAPCAT_OEXP ,
00775 OPERATOR_PROPERTY_expression |
00776 OPERATOR_PROPERTY_not_executable |
00777 OPERATOR_PROPERTY_flags |
00778 OPERATOR_PROPERTY_1ty),
00779
00780 OPERATOR_info_struct(OPR_PICCALL,
00781 "OPR_PICCALL",
00782 -1 ,
00783 OPERATOR_MAPCAT_CALL ,
00784 OPERATOR_PROPERTY_stmt |
00785 OPERATOR_PROPERTY_call |
00786 OPERATOR_PROPERTY_endsbb |
00787 OPERATOR_PROPERTY_next_prev |
00788 OPERATOR_PROPERTY_sym |
00789 OPERATOR_PROPERTY_flags),
00790
00791 OPERATOR_info_struct(OPR_PRAGMA,
00792 "OPR_PRAGMA",
00793 0 ,
00794 OPERATOR_MAPCAT_PRAGMA ,
00795 OPERATOR_PROPERTY_stmt |
00796 OPERATOR_PROPERTY_leaf |
00797 OPERATOR_PROPERTY_not_executable |
00798 OPERATOR_PROPERTY_next_prev |
00799 OPERATOR_PROPERTY_sym |
00800 OPERATOR_PROPERTY_offset |
00801 OPERATOR_PROPERTY_value),
00802
00803 OPERATOR_info_struct(OPR_PREFETCH,
00804 "OPR_PREFETCH",
00805 1 ,
00806 OPERATOR_MAPCAT_OSTMT ,
00807 OPERATOR_PROPERTY_stmt |
00808 OPERATOR_PROPERTY_prefetch |
00809 OPERATOR_PROPERTY_next_prev |
00810 OPERATOR_PROPERTY_offset |
00811 OPERATOR_PROPERTY_flags),
00812
00813 OPERATOR_info_struct(OPR_PREFETCHX,
00814 "OPR_PREFETCHX",
00815 2 ,
00816 OPERATOR_MAPCAT_OSTMT ,
00817 OPERATOR_PROPERTY_stmt |
00818 OPERATOR_PROPERTY_prefetch |
00819 OPERATOR_PROPERTY_next_prev |
00820 OPERATOR_PROPERTY_offset |
00821 OPERATOR_PROPERTY_flags),
00822
00823 OPERATOR_info_struct(OPR_RCOMMA,
00824 "OPR_RCOMMA",
00825 2 ,
00826 OPERATOR_MAPCAT_OEXP ,
00827 OPERATOR_PROPERTY_expression),
00828
00829 OPERATOR_info_struct(OPR_FIRSTPART,
00830 "OPR_FIRSTPART",
00831 1 ,
00832 OPERATOR_MAPCAT_OEXP ,
00833 OPERATOR_PROPERTY_expression),
00834
00835 OPERATOR_info_struct(OPR_RECIP,
00836 "OPR_RECIP",
00837 1 ,
00838 OPERATOR_MAPCAT_OEXP ,
00839 OPERATOR_PROPERTY_expression),
00840
00841 OPERATOR_info_struct(OPR_REGION,
00842 "OPR_REGION",
00843 3 ,
00844 OPERATOR_MAPCAT_HDR ,
00845 OPERATOR_PROPERTY_scf |
00846 OPERATOR_PROPERTY_next_prev |
00847 OPERATOR_PROPERTY_ereg_supp),
00848
00849 OPERATOR_info_struct(OPR_REGION_EXIT,
00850 "OPR_REGION_EXIT",
00851 0 ,
00852 OPERATOR_MAPCAT_OSTMT ,
00853 OPERATOR_PROPERTY_stmt |
00854 OPERATOR_PROPERTY_leaf |
00855 OPERATOR_PROPERTY_non_scf |
00856 OPERATOR_PROPERTY_endsbb |
00857 OPERATOR_PROPERTY_next_prev |
00858 OPERATOR_PROPERTY_label),
00859
00860 OPERATOR_info_struct(OPR_REM,
00861 "OPR_REM",
00862 2 ,
00863 OPERATOR_MAPCAT_OEXP ,
00864 OPERATOR_PROPERTY_expression),
00865
00866 OPERATOR_info_struct(OPR_RETURN,
00867 "OPR_RETURN",
00868 0 ,
00869 OPERATOR_MAPCAT_OSTMT ,
00870 OPERATOR_PROPERTY_stmt |
00871 OPERATOR_PROPERTY_non_scf |
00872 OPERATOR_PROPERTY_endsbb |
00873 OPERATOR_PROPERTY_next_prev),
00874
00875 OPERATOR_info_struct(OPR_RETURN_VAL,
00876 "OPR_RETURN_VAL",
00877 1 ,
00878 OPERATOR_MAPCAT_OSTMT ,
00879 OPERATOR_PROPERTY_stmt |
00880 OPERATOR_PROPERTY_non_scf |
00881 OPERATOR_PROPERTY_endsbb |
00882 OPERATOR_PROPERTY_next_prev),
00883
00884 OPERATOR_info_struct(OPR_RND,
00885 "OPR_RND",
00886 1 ,
00887 OPERATOR_MAPCAT_OEXP ,
00888 OPERATOR_PROPERTY_expression),
00889
00890 OPERATOR_info_struct(OPR_RSQRT,
00891 "OPR_RSQRT",
00892 1 ,
00893 OPERATOR_MAPCAT_OEXP ,
00894 OPERATOR_PROPERTY_expression),
00895
00896 OPERATOR_info_struct(OPR_SELECT,
00897 "OPR_SELECT",
00898 3 ,
00899 OPERATOR_MAPCAT_OEXP ,
00900 OPERATOR_PROPERTY_expression),
00901
00902 OPERATOR_info_struct(OPR_SHL,
00903 "OPR_SHL",
00904 2 ,
00905 OPERATOR_MAPCAT_OEXP ,
00906 OPERATOR_PROPERTY_expression),
00907
00908 OPERATOR_info_struct(OPR_SQRT,
00909 "OPR_SQRT",
00910 1 ,
00911 OPERATOR_MAPCAT_OEXP ,
00912 OPERATOR_PROPERTY_expression),
00913
00914 OPERATOR_info_struct(OPR_STBITS,
00915 "OPR_STBITS",
00916 1 ,
00917 OPERATOR_MAPCAT_LDST ,
00918 OPERATOR_PROPERTY_stmt |
00919 OPERATOR_PROPERTY_store |
00920 OPERATOR_PROPERTY_next_prev |
00921 OPERATOR_PROPERTY_sym |
00922 OPERATOR_PROPERTY_offset |
00923 OPERATOR_PROPERTY_1ty),
00924
00925 OPERATOR_info_struct(OPR_STID,
00926 "OPR_STID",
00927 1 ,
00928 OPERATOR_MAPCAT_LDST ,
00929 OPERATOR_PROPERTY_stmt |
00930 OPERATOR_PROPERTY_store |
00931 OPERATOR_PROPERTY_next_prev |
00932 OPERATOR_PROPERTY_sym |
00933 OPERATOR_PROPERTY_offset |
00934 OPERATOR_PROPERTY_1ty |
00935 OPERATOR_PROPERTY_field_id),
00936
00937 OPERATOR_info_struct(OPR_SUB,
00938 "OPR_SUB",
00939 2 ,
00940 OPERATOR_MAPCAT_OEXP ,
00941 OPERATOR_PROPERTY_expression),
00942
00943 OPERATOR_info_struct(OPR_SWITCH,
00944 "OPR_SWITCH",
00945 -1 ,
00946 OPERATOR_MAPCAT_SCF ,
00947 OPERATOR_PROPERTY_stmt |
00948 OPERATOR_PROPERTY_non_scf |
00949 OPERATOR_PROPERTY_endsbb |
00950 OPERATOR_PROPERTY_next_prev |
00951 OPERATOR_PROPERTY_num_entries |
00952 OPERATOR_PROPERTY_last_label),
00953
00954 OPERATOR_info_struct(OPR_TAS,
00955 "OPR_TAS",
00956 1 ,
00957 OPERATOR_MAPCAT_OEXP ,
00958 OPERATOR_PROPERTY_expression |
00959 OPERATOR_PROPERTY_1ty),
00960
00961 OPERATOR_info_struct(OPR_TRAP,
00962 "OPR_TRAP",
00963 0 ,
00964 OPERATOR_MAPCAT_OSTMT ,
00965 OPERATOR_PROPERTY_stmt |
00966 OPERATOR_PROPERTY_next_prev |
00967 OPERATOR_PROPERTY_offset),
00968
00969 OPERATOR_info_struct(OPR_TRIPLET,
00970 "OPR_TRIPLET",
00971 3 ,
00972 OPERATOR_MAPCAT_OEXP ,
00973 OPERATOR_PROPERTY_expression),
00974
00975 OPERATOR_info_struct(OPR_TRUEBR,
00976 "OPR_TRUEBR",
00977 1 ,
00978 OPERATOR_MAPCAT_OSTMT ,
00979 OPERATOR_PROPERTY_stmt |
00980 OPERATOR_PROPERTY_non_scf |
00981 OPERATOR_PROPERTY_endsbb |
00982 OPERATOR_PROPERTY_next_prev |
00983 OPERATOR_PROPERTY_label),
00984
00985 OPERATOR_info_struct(OPR_TRUNC,
00986 "OPR_TRUNC",
00987 1 ,
00988 OPERATOR_MAPCAT_OEXP ,
00989 OPERATOR_PROPERTY_expression),
00990
00991 OPERATOR_info_struct(OPR_VFCALL,
00992 "OPR_VFCALL",
00993 -1 ,
00994 OPERATOR_MAPCAT_CALL ,
00995 OPERATOR_PROPERTY_stmt |
00996 OPERATOR_PROPERTY_call |
00997 OPERATOR_PROPERTY_endsbb |
00998 OPERATOR_PROPERTY_next_prev |
00999 OPERATOR_PROPERTY_flags |
01000 OPERATOR_PROPERTY_1ty),
01001
01002 OPERATOR_info_struct(OPR_WHERE,
01003 "OPR_WHERE",
01004 3 ,
01005 OPERATOR_MAPCAT_SCF ,
01006 OPERATOR_PROPERTY_scf |
01007 OPERATOR_PROPERTY_next_prev),
01008
01009 OPERATOR_info_struct(OPR_WHILE_DO,
01010 "OPR_WHILE_DO",
01011 2 ,
01012 OPERATOR_MAPCAT_SCF ,
01013 OPERATOR_PROPERTY_scf |
01014 OPERATOR_PROPERTY_next_prev),
01015
01016 OPERATOR_info_struct(OPR_XGOTO,
01017 "OPR_XGOTO",
01018 2 ,
01019 OPERATOR_MAPCAT_SCF ,
01020 OPERATOR_PROPERTY_stmt |
01021 OPERATOR_PROPERTY_non_scf |
01022 OPERATOR_PROPERTY_endsbb |
01023 OPERATOR_PROPERTY_next_prev |
01024 OPERATOR_PROPERTY_sym |
01025 OPERATOR_PROPERTY_num_entries),
01026
01027 OPERATOR_info_struct(OPR_XMPY,
01028 "OPR_XMPY",
01029 2 ,
01030 OPERATOR_MAPCAT_OEXP ,
01031 OPERATOR_PROPERTY_expression),
01032
01033 OPERATOR_info_struct(OPR_XPRAGMA,
01034 "OPR_XPRAGMA",
01035 1 ,
01036 OPERATOR_MAPCAT_PRAGMA ,
01037 OPERATOR_PROPERTY_stmt |
01038 OPERATOR_PROPERTY_not_executable |
01039 OPERATOR_PROPERTY_next_prev |
01040 OPERATOR_PROPERTY_sym |
01041 OPERATOR_PROPERTY_offset),
01042
01043 OPERATOR_info_struct(OPR_AFFIRM,
01044 "OPR_AFFIRM",
01045 1 ,
01046 OPERATOR_MAPCAT_OSTMT ,
01047 OPERATOR_PROPERTY_stmt |
01048 OPERATOR_PROPERTY_next_prev),
01049
01050 OPERATOR_info_struct(OPR_ALLOCA,
01051 "OPR_ALLOCA",
01052 1 ,
01053 OPERATOR_MAPCAT_OEXP ,
01054 OPERATOR_PROPERTY_expression),
01055
01056 OPERATOR_info_struct(OPR_DEALLOCA,
01057 "OPR_DEALLOCA",
01058 -1 ,
01059 OPERATOR_MAPCAT_OSTMT ,
01060 OPERATOR_PROPERTY_stmt |
01061 OPERATOR_PROPERTY_next_prev),
01062
01063 OPERATOR_info_struct(OPR_LDMA,
01064 "OPR_LDMA",
01065 0 ,
01066 OPERATOR_MAPCAT_OEXP ,
01067 OPERATOR_PROPERTY_expression |
01068 OPERATOR_PROPERTY_leaf |
01069 OPERATOR_PROPERTY_sym |
01070 OPERATOR_PROPERTY_offset |
01071 OPERATOR_PROPERTY_1ty |
01072 OPERATOR_PROPERTY_field_id),
01073
01074 OPERATOR_info_struct(OPR_ASM_STMT,
01075 "OPR_ASM_STMT",
01076 -1 ,
01077 OPERATOR_MAPCAT_OSTMT ,
01078 OPERATOR_PROPERTY_stmt |
01079 OPERATOR_PROPERTY_next_prev |
01080 OPERATOR_PROPERTY_sym |
01081 OPERATOR_PROPERTY_flags),
01082
01083 OPERATOR_info_struct(OPR_ASM_EXPR,
01084 "OPR_ASM_EXPR",
01085 -1 ,
01086 OPERATOR_MAPCAT_OEXP ,
01087 OPERATOR_PROPERTY_expression |
01088 OPERATOR_PROPERTY_sym |
01089 OPERATOR_PROPERTY_flags),
01090
01091 OPERATOR_info_struct(OPR_ASM_INPUT,
01092 "OPR_ASM_INPUT",
01093 1 ,
01094 OPERATOR_MAPCAT_OEXP ,
01095 OPERATOR_PROPERTY_expression |
01096 OPERATOR_PROPERTY_sym),
01097
01098 OPERATOR_info_struct(OPR_RROTATE,
01099 "OPR_RROTATE",
01100 2 ,
01101 OPERATOR_MAPCAT_OEXP ,
01102 OPERATOR_PROPERTY_expression),
01103
01104 OPERATOR_info_struct(OPR_LDA_LABEL,
01105 "OPR_LDA_LABEL",
01106 0 ,
01107 OPERATOR_MAPCAT_OEXP ,
01108 OPERATOR_PROPERTY_expression |
01109 OPERATOR_PROPERTY_leaf |
01110 OPERATOR_PROPERTY_1ty |
01111 OPERATOR_PROPERTY_label),
01112
01113 OPERATOR_info_struct(OPR_GOTO_OUTER_BLOCK,
01114 "OPR_GOTO_OUTER_BLOCK",
01115 0 ,
01116 OPERATOR_MAPCAT_OSTMT ,
01117 OPERATOR_PROPERTY_stmt |
01118 OPERATOR_PROPERTY_leaf |
01119 OPERATOR_PROPERTY_non_scf |
01120 OPERATOR_PROPERTY_endsbb |
01121 OPERATOR_PROPERTY_next_prev |
01122 OPERATOR_PROPERTY_label),
01123
01124 OPERATOR_info_struct(OPR_EXTRACT_BITS,
01125 "OPR_EXTRACT_BITS",
01126 1 ,
01127 OPERATOR_MAPCAT_OEXP ,
01128 OPERATOR_PROPERTY_expression),
01129
01130 OPERATOR_info_struct(OPR_COMPOSE_BITS,
01131 "OPR_COMPOSE_BITS",
01132 2 ,
01133 OPERATOR_MAPCAT_OEXP ,
01134 OPERATOR_PROPERTY_expression),
01135
01136 OPERATOR_info_struct(OPR_PSTORE,
01137 "OPR_PSTORE",
01138 2 ,
01139 OPERATOR_MAPCAT_LDST ,
01140 OPERATOR_PROPERTY_stmt |
01141 OPERATOR_PROPERTY_store |
01142 OPERATOR_PROPERTY_next_prev |
01143 OPERATOR_PROPERTY_offset |
01144 OPERATOR_PROPERTY_1ty |
01145 OPERATOR_PROPERTY_field_id),
01146
01147 OPERATOR_info_struct(OPR_PSTID,
01148 "OPR_PSTID",
01149 1 ,
01150 OPERATOR_MAPCAT_LDST ,
01151 OPERATOR_PROPERTY_stmt |
01152 OPERATOR_PROPERTY_store |
01153 OPERATOR_PROPERTY_next_prev |
01154 OPERATOR_PROPERTY_sym |
01155 OPERATOR_PROPERTY_offset |
01156 OPERATOR_PROPERTY_1ty |
01157 OPERATOR_PROPERTY_field_id),
01158
01159 OPERATOR_info_struct(OPR_USE,
01160 "OPR_USE",
01161 -1 ,
01162 OPERATOR_MAPCAT_HDR ,
01163 OPERATOR_PROPERTY_scf |
01164 OPERATOR_PROPERTY_next_prev |
01165 OPERATOR_PROPERTY_sym),
01166
01167 OPERATOR_info_struct(OPR_NAMELIST,
01168 "OPR_NAMELIST",
01169 -1 ,
01170 OPERATOR_MAPCAT_HDR ,
01171 OPERATOR_PROPERTY_scf |
01172 OPERATOR_PROPERTY_next_prev |
01173 OPERATOR_PROPERTY_sym),
01174
01175 OPERATOR_info_struct(OPR_IMPLICIT_BND,
01176 "OPR_IMPLICIT_BND",
01177 0 ,
01178 OPERATOR_MAPCAT_HDR ,
01179 OPERATOR_PROPERTY_scf |
01180 OPERATOR_PROPERTY_leaf |
01181 OPERATOR_PROPERTY_sym),
01182
01183 OPERATOR_info_struct(OPR_SRCTRIPLET,
01184 "OPR_SRCTRIPLET",
01185 3 ,
01186 OPERATOR_MAPCAT_OEXP ,
01187 OPERATOR_PROPERTY_expression),
01188
01189 OPERATOR_info_struct(OPR_NULLIFY,
01190 "OPR_NULLIFY",
01191 -1 ,
01192 OPERATOR_MAPCAT_HDR ,
01193 OPERATOR_PROPERTY_scf |
01194 OPERATOR_PROPERTY_next_prev |
01195 OPERATOR_PROPERTY_sym),
01196
01197
01198 OPERATOR_info_struct(OPR_INTERFACE,
01199 "OPR_INTERFACE",
01200 -1 ,
01201 OPERATOR_MAPCAT_HDR ,
01202 OPERATOR_PROPERTY_scf |
01203 OPERATOR_PROPERTY_next_prev |
01204 OPERATOR_PROPERTY_sym),
01205
01206 OPERATOR_info_struct(OPR_ARRAY_CONSTRUCT,
01207 "OPR_ARRAY_CONSTRUCT",
01208 -1 ,
01209 OPERATOR_MAPCAT_OEXP ,
01210 OPERATOR_PROPERTY_expression),
01211
01212 OPERATOR_info_struct(OPR_IMPLIED_DO,
01213 "OPR_IMPLIED_DO",
01214 5 ,
01215 OPERATOR_MAPCAT_OEXP ,
01216 OPERATOR_PROPERTY_expression),
01217
01218 OPERATOR_info_struct(OPR_STRCTFLD,
01219 "OPR_STRCTFLD",
01220 1 ,
01221 OPERATOR_MAPCAT_LDST ,
01222 OPERATOR_PROPERTY_expression |
01223 OPERATOR_PROPERTY_load |
01224 OPERATOR_PROPERTY_2ty |
01225 OPERATOR_PROPERTY_field_id),
01226
01227 };
01228
01229 static BOOL
01230 Is_MTYPE_b [MTYPE_LAST+1] = {
01231 0,
01232 1,
01233 0,
01234 0,
01235 1,
01236 1,
01237 0,
01238 0,
01239 1,
01240 1,
01241 0,
01242 0,
01243 0,
01244 0,
01245 0,
01246 0,
01247 0,
01248 0,
01249 0,
01250 0,
01251 0,
01252 0,
01253 0,
01254 0,
01255 0,
01256 0,
01257 0,
01258 0
01259 };
01260
01261 static BOOL
01262 Is_MTYPE_b_f_i_M_p_z [MTYPE_LAST+1] = {
01263 0,
01264 1,
01265 0,
01266 0,
01267 1,
01268 1,
01269 0,
01270 0,
01271 1,
01272 1,
01273 1,
01274 1,
01275 1,
01276 1,
01277 0,
01278 1,
01279 1,
01280 1,
01281 1,
01282 1,
01283 0,
01284 0,
01285 1,
01286 1,
01287 1,
01288 1,
01289 1,
01290 1
01291 };
01292
01293 static BOOL
01294 Is_MTYPE_b_f_i_M_p_V_z [MTYPE_LAST+1] = {
01295 0,
01296 1,
01297 0,
01298 0,
01299 1,
01300 1,
01301 0,
01302 0,
01303 1,
01304 1,
01305 1,
01306 1,
01307 1,
01308 1,
01309 0,
01310 1,
01311 1,
01312 1,
01313 1,
01314 1,
01315 1,
01316 0,
01317 1,
01318 1,
01319 1,
01320 1,
01321 1,
01322 1
01323 };
01324
01325 static BOOL
01326 Is_MTYPE_b_f_i_M_p_s_z [MTYPE_LAST+1] = {
01327 0,
01328 1,
01329 1,
01330 1,
01331 1,
01332 1,
01333 1,
01334 1,
01335 1,
01336 1,
01337 1,
01338 1,
01339 1,
01340 1,
01341 0,
01342 1,
01343 1,
01344 1,
01345 1,
01346 1,
01347 0,
01348 0,
01349 1,
01350 1,
01351 1,
01352 1,
01353 1,
01354 1
01355 };
01356
01357 static BOOL
01358 Is_MTYPE_b_f_i_p_z [MTYPE_LAST+1] = {
01359 0,
01360 1,
01361 0,
01362 0,
01363 1,
01364 1,
01365 0,
01366 0,
01367 1,
01368 1,
01369 1,
01370 1,
01371 1,
01372 1,
01373 0,
01374 1,
01375 0,
01376 1,
01377 1,
01378 1,
01379 0,
01380 0,
01381 1,
01382 1,
01383 1,
01384 1,
01385 1,
01386 1
01387 };
01388
01389 static BOOL
01390 Is_MTYPE_bs_I1_I2_I4_I8 [MTYPE_LAST+1] = {
01391 0,
01392 0,
01393 1,
01394 1,
01395 1,
01396 1,
01397 0,
01398 0,
01399 0,
01400 0,
01401 0,
01402 0,
01403 0,
01404 0,
01405 0,
01406 0,
01407 0,
01408 0,
01409 0,
01410 0,
01411 0,
01412 1,
01413 0,
01414 0,
01415 0,
01416 0,
01417 0,
01418 0
01419 };
01420
01421 static BOOL
01422 Is_MTYPE_bs_U1_U2_U4_U8 [MTYPE_LAST+1] = {
01423 0,
01424 0,
01425 0,
01426 0,
01427 0,
01428 0,
01429 1,
01430 1,
01431 1,
01432 1,
01433 0,
01434 0,
01435 0,
01436 0,
01437 0,
01438 0,
01439 0,
01440 0,
01441 0,
01442 0,
01443 0,
01444 1,
01445 0,
01446 0,
01447 0,
01448 0,
01449 0,
01450 0
01451 };
01452
01453 static BOOL
01454 Is_MTYPE_b_bs_f_i_p_s_z [MTYPE_LAST+1] = {
01455 0,
01456 1,
01457 1,
01458 1,
01459 1,
01460 1,
01461 1,
01462 1,
01463 1,
01464 1,
01465 1,
01466 1,
01467 1,
01468 1,
01469 0,
01470 1,
01471 0,
01472 1,
01473 1,
01474 1,
01475 0,
01476 1,
01477 1,
01478 1,
01479 1,
01480 1,
01481 1,
01482 1
01483 };
01484
01485 static BOOL
01486 Is_MTYPE_b_bs_f_i_M_p_s_z [MTYPE_LAST+1] = {
01487 0,
01488 1,
01489 1,
01490 1,
01491 1,
01492 1,
01493 1,
01494 1,
01495 1,
01496 1,
01497 1,
01498 1,
01499 1,
01500 1,
01501 0,
01502 1,
01503 1,
01504 1,
01505 1,
01506 1,
01507 0,
01508 1,
01509 1,
01510 1,
01511 1,
01512 1,
01513 1,
01514 1
01515 };
01516
01517 static BOOL
01518 Is_MTYPE_f [MTYPE_LAST+1] = {
01519 0,
01520 0,
01521 0,
01522 0,
01523 0,
01524 0,
01525 0,
01526 0,
01527 0,
01528 0,
01529 1,
01530 1,
01531 1,
01532 1,
01533 0,
01534 1,
01535 0,
01536 0,
01537 0,
01538 0,
01539 0,
01540 0,
01541 0,
01542 0,
01543 0,
01544 0,
01545 0,
01546 0
01547 };
01548
01549 static BOOL
01550 Is_MTYPE_f_I4_I8_I16 [MTYPE_LAST+1] = {
01551 0,
01552 0,
01553 0,
01554 0,
01555 1,
01556 1,
01557 0,
01558 0,
01559 0,
01560 0,
01561 1,
01562 1,
01563 1,
01564 1,
01565 0,
01566 1,
01567 0,
01568 0,
01569 0,
01570 0,
01571 0,
01572 0,
01573 0,
01574 0,
01575 0,
01576 0,
01577 1,
01578 0
01579 };
01580
01581 static BOOL
01582 Is_MTYPE_f_i_M_p_V_z [MTYPE_LAST+1] = {
01583 0,
01584 0,
01585 0,
01586 0,
01587 1,
01588 1,
01589 0,
01590 0,
01591 1,
01592 1,
01593 1,
01594 1,
01595 1,
01596 1,
01597 0,
01598 1,
01599 1,
01600 1,
01601 1,
01602 1,
01603 1,
01604 0,
01605 1,
01606 1,
01607 1,
01608 1,
01609 1,
01610 1
01611 };
01612
01613 static BOOL
01614 Is_MTYPE_f_i_M_p_s_V_z [MTYPE_LAST+1] = {
01615 0,
01616 0,
01617 1,
01618 1,
01619 1,
01620 1,
01621 1,
01622 1,
01623 1,
01624 1,
01625 1,
01626 1,
01627 1,
01628 1,
01629 0,
01630 1,
01631 1,
01632 1,
01633 1,
01634 1,
01635 1,
01636 0,
01637 1,
01638 1,
01639 1,
01640 1,
01641 1,
01642 1
01643 };
01644
01645 static BOOL
01646 Is_MTYPE_f_i_M_p_s_z [MTYPE_LAST+1] = {
01647 0,
01648 0,
01649 1,
01650 1,
01651 1,
01652 1,
01653 1,
01654 1,
01655 1,
01656 1,
01657 1,
01658 1,
01659 1,
01660 1,
01661 0,
01662 1,
01663 1,
01664 1,
01665 1,
01666 1,
01667 0,
01668 0,
01669 1,
01670 1,
01671 1,
01672 1,
01673 1,
01674 1
01675 };
01676
01677 static BOOL
01678 Is_MTYPE_f_i_M_p_z [MTYPE_LAST+1] = {
01679 0,
01680 0,
01681 0,
01682 0,
01683 1,
01684 1,
01685 0,
01686 0,
01687 1,
01688 1,
01689 1,
01690 1,
01691 1,
01692 1,
01693 0,
01694 1,
01695 1,
01696 1,
01697 1,
01698 1,
01699 0,
01700 0,
01701 1,
01702 1,
01703 1,
01704 1,
01705 1,
01706 1
01707 };
01708
01709 static BOOL
01710 Is_MTYPE_f_i_M_z [MTYPE_LAST+1] = {
01711 0,
01712 0,
01713 0,
01714 0,
01715 1,
01716 1,
01717 1,
01718 0,
01719 1,
01720 1,
01721 1,
01722 1,
01723 1,
01724 1,
01725 0,
01726 1,
01727 1,
01728 1,
01729 1,
01730 1,
01731 0,
01732 0,
01733 0,
01734 0,
01735 1,
01736 1,
01737 1,
01738 1
01739 };
01740
01741 static BOOL
01742 Is_MTYPE_f_i [MTYPE_LAST+1] = {
01743 0,
01744 0,
01745 0,
01746 0,
01747 1,
01748 1,
01749 0,
01750 0,
01751 1,
01752 1,
01753 1,
01754 1,
01755 1,
01756 1,
01757 0,
01758 1,
01759 0,
01760 0,
01761 0,
01762 0,
01763 0,
01764 0,
01765 0,
01766 0,
01767 0,
01768 0,
01769 1,
01770 1
01771 };
01772
01773 static BOOL
01774 Is_MTYPE_f_i_p [MTYPE_LAST+1] = {
01775 0,
01776 0,
01777 0,
01778 0,
01779 1,
01780 1,
01781 0,
01782 0,
01783 1,
01784 1,
01785 1,
01786 1,
01787 1,
01788 1,
01789 0,
01790 1,
01791 0,
01792 0,
01793 0,
01794 0,
01795 0,
01796 0,
01797 1,
01798 1,
01799 0,
01800 0,
01801 1,
01802 1
01803 };
01804
01805 static BOOL
01806 Is_MTYPE_f_i_p_s_z [MTYPE_LAST+1] = {
01807 0,
01808 0,
01809 1,
01810 1,
01811 1,
01812 1,
01813 1,
01814 1,
01815 1,
01816 1,
01817 1,
01818 1,
01819 1,
01820 1,
01821 0,
01822 1,
01823 0,
01824 1,
01825 1,
01826 1,
01827 0,
01828 0,
01829 1,
01830 1,
01831 1,
01832 1,
01833 1,
01834 1
01835 };
01836
01837 static BOOL
01838 Is_MTYPE_f_i_p_z [MTYPE_LAST+1] = {
01839 0,
01840 0,
01841 0,
01842 0,
01843 1,
01844 1,
01845 0,
01846 0,
01847 1,
01848 1,
01849 1,
01850 1,
01851 1,
01852 1,
01853 0,
01854 1,
01855 0,
01856 1,
01857 1,
01858 1,
01859 0,
01860 0,
01861 1,
01862 1,
01863 1,
01864 1,
01865 1,
01866 1
01867 };
01868
01869 static BOOL
01870 Is_MTYPE_f_i_z [MTYPE_LAST+1] = {
01871 0,
01872 0,
01873 0,
01874 0,
01875 1,
01876 1,
01877 0,
01878 0,
01879 1,
01880 1,
01881 1,
01882 1,
01883 1,
01884 1,
01885 0,
01886 1,
01887 0,
01888 1,
01889 1,
01890 1,
01891 0,
01892 0,
01893 0,
01894 0,
01895 1,
01896 1,
01897 1,
01898 1
01899 };
01900
01901 static BOOL
01902 Is_MTYPE_f_z [MTYPE_LAST+1] = {
01903 0,
01904 0,
01905 0,
01906 0,
01907 0,
01908 0,
01909 0,
01910 0,
01911 0,
01912 0,
01913 1,
01914 1,
01915 1,
01916 1,
01917 0,
01918 1,
01919 0,
01920 1,
01921 1,
01922 1,
01923 0,
01924 0,
01925 0,
01926 0,
01927 1,
01928 1,
01929 0,
01930 0
01931 };
01932
01933 static BOOL
01934 Is_MTYPE_i [MTYPE_LAST+1] = {
01935 0,
01936 0,
01937 0,
01938 0,
01939 1,
01940 1,
01941 0,
01942 0,
01943 1,
01944 1,
01945 0,
01946 0,
01947 0,
01948 0,
01949 0,
01950 0,
01951 0,
01952 0,
01953 0,
01954 0,
01955 0,
01956 0,
01957 0,
01958 0,
01959 0,
01960 0,
01961 1,
01962 1
01963 };
01964
01965 static BOOL
01966 Is_MTYPE_b_i_p [MTYPE_LAST+1] = {
01967 0,
01968 1,
01969 0,
01970 0,
01971 1,
01972 1,
01973 0,
01974 0,
01975 1,
01976 1,
01977 0,
01978 0,
01979 0,
01980 0,
01981 0,
01982 0,
01983 0,
01984 0,
01985 0,
01986 0,
01987 0,
01988 0,
01989 1,
01990 1,
01991 0,
01992 0,
01993 1,
01994 1
01995 };
01996
01997 static BOOL
01998 Is_MTYPE_p [MTYPE_LAST+1] = {
01999 0,
02000 0,
02001 0,
02002 0,
02003 0,
02004 0,
02005 0,
02006 0,
02007 1,
02008 1,
02009 0,
02010 0,
02011 0,
02012 0,
02013 0,
02014 0,
02015 0,
02016 0,
02017 0,
02018 0,
02019 0,
02020 0,
02021 1,
02022 1,
02023 0,
02024 0,
02025 0,
02026 0
02027 };
02028
02029 static BOOL
02030 Is_MTYPE_s [MTYPE_LAST+1] = {
02031 0,
02032 0,
02033 1,
02034 1,
02035 0,
02036 0,
02037 1,
02038 1,
02039 0,
02040 0,
02041 0,
02042 0,
02043 0,
02044 0,
02045 0,
02046 0,
02047 0,
02048 0,
02049 0,
02050 0,
02051 0,
02052 0,
02053 0,
02054 0,
02055 0,
02056 0,
02057 0,
02058 0
02059 };
02060
02061 static BOOL
02062 Is_MTYPE_b_i_s [MTYPE_LAST+1] = {
02063 0,
02064 1,
02065 1,
02066 1,
02067 1,
02068 1,
02069 1,
02070 1,
02071 1,
02072 1,
02073 0,
02074 0,
02075 0,
02076 0,
02077 0,
02078 0,
02079 0,
02080 0,
02081 0,
02082 0,
02083 0,
02084 0,
02085 0,
02086 0,
02087 0,
02088 0,
02089 1,
02090 1
02091 };
02092
02093 static BOOL
02094 Is_MTYPE_z [MTYPE_LAST+1] = {
02095 0,
02096 0,
02097 0,
02098 0,
02099 0,
02100 0,
02101 0,
02102 0,
02103 0,
02104 0,
02105 0,
02106 0,
02107 0,
02108 0,
02109 0,
02110 0,
02111 0,
02112 1,
02113 1,
02114 1,
02115 0,
02116 0,
02117 0,
02118 0,
02119 1,
02120 1,
02121 0,
02122 0
02123 };
02124
02125
02126 void
02127 breakpoint ()
02128 {
02129 }
02130
02131 BOOL
02132 Is_Valid_Opcode_Parts (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc)
02133 {
02134 BOOL valid;
02135
02136 if (opr < OPERATOR_FIRST || opr > OPERATOR_LAST) valid = FALSE;
02137 else if (rtype < MTYPE_FIRST || rtype > MTYPE_LAST) valid = FALSE;
02138 else if (desc < MTYPE_FIRST || desc > MTYPE_LAST) valid = FALSE;
02139
02140 else {
02141 switch (opr) {
02142
02143 case OPR_ABS:
02144
02145 valid = Is_MTYPE_f_I4_I8_I16 [rtype] && desc == MTYPE_V;
02146 break;
02147
02148 case OPR_ADD:
02149 case OPR_CONST:
02150 case OPR_SUB:
02151 case OPR_ASM_EXPR:
02152
02153 valid = Is_MTYPE_f_i_p_z [rtype] && desc == MTYPE_V;
02154 break;
02155
02156 case OPR_AGOTO:
02157 case OPR_ALTENTRY:
02158 case OPR_ASSERT:
02159 case OPR_BACKWARD_BARRIER:
02160 case OPR_BLOCK:
02161 case OPR_CASEGOTO:
02162 case OPR_COMMENT:
02163 case OPR_COMPGOTO:
02164 case OPR_DO_LOOP:
02165 case OPR_DO_WHILE:
02166 case OPR_EVAL:
02167 case OPR_EXC_SCOPE_BEGIN:
02168 case OPR_EXC_SCOPE_END:
02169 case OPR_FALSEBR:
02170 case OPR_FORWARD_BARRIER:
02171 case OPR_FUNC_ENTRY:
02172 case OPR_GOTO:
02173 case OPR_IDNAME:
02174 case OPR_IF:
02175 case OPR_IO:
02176 case OPR_IO_ITEM:
02177 case OPR_LABEL:
02178 case OPR_LOOP_INFO:
02179 case OPR_MSTORE:
02180 case OPR_OPT_CHI:
02181 case OPR_OPT_RESERVE2:
02182 case OPR_PRAGMA:
02183 case OPR_PREFETCH:
02184 case OPR_PREFETCHX:
02185 case OPR_REGION:
02186 case OPR_REGION_EXIT:
02187 case OPR_RETURN:
02188 case OPR_SWITCH:
02189 case OPR_TRAP:
02190 case OPR_TRUEBR:
02191 case OPR_WHERE:
02192 case OPR_WHILE_DO:
02193 case OPR_XGOTO:
02194 case OPR_XPRAGMA:
02195 case OPR_AFFIRM:
02196 case OPR_DEALLOCA:
02197 case OPR_ASM_STMT:
02198 case OPR_ASM_INPUT:
02199 case OPR_GOTO_OUTER_BLOCK:
02200 case OPR_NAMELIST:
02201 case OPR_IMPLICIT_BND:
02202 case OPR_NULLIFY:
02203 case OPR_INTERFACE:
02204
02205
02206 valid = rtype == MTYPE_V && desc == MTYPE_V;
02207 break;
02208
02209 case OPR_USE:
02210
02211 valid = (rtype == MTYPE_V || rtype == MTYPE_B) && desc == MTYPE_V;
02212 break;
02213
02214 case OPR_ARRAY:
02215 case OPR_ARRSECTION:
02216 case OPR_LDA:
02217 case OPR_ILDA:
02218 case OPR_LDMA:
02219 case OPR_LDA_LABEL:
02220
02221 valid = Is_MTYPE_p [rtype] && desc == MTYPE_V;
02222 break;
02223
02224 case OPR_ARRAYEXP:
02225 case OPR_ARRAY_CONSTRUCT:
02226
02227 valid = Is_MTYPE_f_i_M_z [rtype] && desc == MTYPE_V;
02228 break;
02229
02230 case OPR_ASHR:
02231 case OPR_BAND:
02232 case OPR_BIOR:
02233 case OPR_BNOR:
02234 case OPR_BNOT:
02235 case OPR_BXOR:
02236 case OPR_COMPOSE_BITS:
02237 case OPR_CVTL:
02238 case OPR_DIVREM:
02239 case OPR_EXTRACT_BITS:
02240 case OPR_HIGHMPY:
02241 case OPR_HIGHPART:
02242 case OPR_LOWPART:
02243 case OPR_LSHR:
02244 case OPR_MOD:
02245 case OPR_REM:
02246 case OPR_SHL:
02247 case OPR_TRIPLET:
02248 case OPR_SRCTRIPLET:
02249 case OPR_XMPY:
02250 case OPR_IMPLIED_DO:
02251
02252
02253 valid = Is_MTYPE_i [rtype] && desc == MTYPE_V;
02254 break;
02255
02256 case OPR_CALL:
02257 case OPR_ICALL:
02258 case OPR_INTRINSIC_CALL:
02259 case OPR_PICCALL:
02260 case OPR_VFCALL:
02261
02262 valid = (Is_MTYPE_f_i_M_p_s_V_z [rtype] && desc == MTYPE_V)
02263 || (rtype == MTYPE_I4 && desc == MTYPE_I4)
02264 || (rtype == MTYPE_U4 && desc == MTYPE_U4)
02265 || (rtype == MTYPE_I8 && desc == MTYPE_I8)
02266 || (rtype == MTYPE_U8 && desc == MTYPE_U8)
02267 || (rtype == MTYPE_F4 && desc == MTYPE_F4)
02268 || (rtype == MTYPE_F4 && desc == MTYPE_F8)
02269 || (rtype == MTYPE_F8 && desc == MTYPE_F4)
02270 || (rtype == MTYPE_F8 && desc == MTYPE_F8);
02271 break;
02272
02273 case OPR_CAND:
02274 case OPR_CIOR:
02275 case OPR_LAND:
02276 case OPR_LIOR:
02277
02278 valid = Is_MTYPE_b [rtype] && desc == MTYPE_V;
02279 break;
02280
02281 #ifndef FRONT_END_FORTRAN
02282
02283
02284 case OPR_FLOOR:
02285
02286 valid = Is_MTYPE_f_i[rtype] && Is_MTYPE_f[desc];
02287 break;
02288 #endif
02289
02290
02291 case OPR_CEIL:
02292 #ifdef FRONT_END_FORTRAN
02293 case OPR_FLOOR:
02294 #endif
02295 case OPR_RND:
02296
02297 valid = Is_MTYPE_i [rtype] && Is_MTYPE_f [desc];
02298 break;
02299
02300 case OPR_TRUNC:
02301
02302 valid = Is_MTYPE_i [rtype];
02303 break;
02304
02305 case OPR_COMMA:
02306 case OPR_RCOMMA:
02307
02308 valid = Is_MTYPE_f_i_M_p_z [rtype] && desc == MTYPE_V;
02309 break;
02310
02311 case OPR_PAIR:
02312
02313 valid = Is_MTYPE_z [rtype] && desc == MTYPE_V;
02314 break;
02315
02316 case OPR_CSELECT:
02317
02318 valid = Is_MTYPE_b_f_i_M_p_V_z [rtype] && desc == MTYPE_V;
02319 break;
02320
02321 case OPR_CVT:
02322
02323 valid = Is_MTYPE_f_i_p [rtype] &&
02324 (Is_MTYPE_f_i_p [desc] || desc == MTYPE_B) &&
02325 (rtype != desc);
02326 break;
02327
02328 case OPR_MPY:
02329
02330 valid = (Is_MTYPE_f_i_z [rtype] || Is_MTYPE_s [rtype]) &&
02331 desc == MTYPE_V;
02332 break;
02333
02334 case OPR_DIV:
02335 case OPR_NEG:
02336 case OPR_OPTPARM:
02337
02338 valid = Is_MTYPE_f_i_z [rtype] && desc == MTYPE_V;
02339 break;
02340
02341 case OPR_EQ:
02342 case OPR_NE:
02343
02344 valid = Is_MTYPE_b [rtype] && Is_MTYPE_b_f_i_p_z [desc];
02345 break;
02346
02347 case OPR_LNOT:
02348
02349 valid = Is_MTYPE_b [rtype] && (desc == MTYPE_V || desc == MTYPE_B);
02350 break;
02351
02352 case OPR_GE:
02353 case OPR_GT:
02354 case OPR_LE:
02355 case OPR_LT:
02356
02357 valid = Is_MTYPE_b [rtype] && Is_MTYPE_f_i_p [desc];
02358 break;
02359
02360 case OPR_LDBITS:
02361 case OPR_ILDBITS:
02362
02363 valid = Is_MTYPE_i [rtype] && Is_MTYPE_b_i_s [desc];
02364 break;
02365
02366 case OPR_ILOAD:
02367 case OPR_LDID:
02368 if (WHIRL_Mldid_Mstid_On) {
02369
02370
02371 valid = ( (rtype == MTYPE_I4 || rtype == MTYPE_I8)
02372 && Is_MTYPE_bs_I1_I2_I4_I8 [desc])
02373 || ( (rtype == MTYPE_U4 || rtype == MTYPE_U8)
02374 && Is_MTYPE_bs_U1_U2_U4_U8 [desc])
02375 || (Is_MTYPE_b_f_i_M_p_z [rtype] && rtype == desc);
02376 }
02377
02378 else {
02379
02380
02381 valid = ( (rtype == MTYPE_I4 || rtype == MTYPE_I8)
02382 && Is_MTYPE_bs_I1_I2_I4_I8 [desc])
02383 || ( (rtype == MTYPE_U4 || rtype == MTYPE_U8)
02384 && Is_MTYPE_bs_U1_U2_U4_U8 [desc])
02385 || (Is_MTYPE_b_f_i_p_z [rtype] && rtype == desc);
02386 }
02387 break;
02388
02389 case OPR_ILOADX:
02390 case OPR_SECONDPART:
02391 case OPR_MADD:
02392 case OPR_MSUB:
02393 case OPR_NMADD:
02394 case OPR_NMSUB:
02395 case OPR_FIRSTPART:
02396
02397 valid = Is_MTYPE_f [rtype] && desc == MTYPE_V;
02398 break;
02399
02400 case OPR_INTCONST:
02401
02402 valid = Is_MTYPE_b_i_p [rtype] && desc == MTYPE_V;
02403 break;
02404
02405 case OPR_INTRINSIC_OP:
02406
02407 valid = Is_MTYPE_b_f_i_M_p_s_z [rtype] && desc == MTYPE_V;
02408 break;
02409
02410 case OPR_ISTBITS:
02411 case OPR_STBITS:
02412
02413 valid = rtype == MTYPE_V && Is_MTYPE_b_i_s [desc];
02414 break;
02415
02416 case OPR_ISTORE:
02417 case OPR_PSTORE:
02418 case OPR_STID:
02419 case OPR_PSTID:
02420
02421 if (WHIRL_Mldid_Mstid_On) {
02422
02423
02424 valid = rtype == MTYPE_V && Is_MTYPE_b_bs_f_i_M_p_s_z [desc];
02425 }
02426
02427 else {
02428
02429
02430 valid = rtype == MTYPE_V && Is_MTYPE_b_bs_f_i_p_s_z [desc];
02431 }
02432 break;
02433
02434 case OPR_ISTOREX:
02435
02436 valid = rtype == MTYPE_V && Is_MTYPE_f [desc];
02437 break;
02438
02439 case OPR_MAX:
02440 case OPR_MIN:
02441 case OPR_MINMAX:
02442
02443 valid = Is_MTYPE_f_i_p [rtype] && desc == MTYPE_V;
02444 break;
02445
02446 case OPR_MAXPART:
02447 case OPR_MINPART:
02448
02449 valid = Is_MTYPE_f_i [rtype] && desc == MTYPE_V;
02450 break;
02451
02452 case OPR_MLOAD:
02453
02454 valid = rtype == MTYPE_M &&
02455 (desc == MTYPE_V || desc == MTYPE_M);
02456 break;
02457
02458 case OPR_PAREN:
02459
02460 valid = Is_MTYPE_f_i_z [rtype] && desc == MTYPE_V;
02461 break;
02462
02463 case OPR_RECIP:
02464 case OPR_RSQRT:
02465 case OPR_SQRT:
02466
02467 valid = Is_MTYPE_f_z [rtype] && desc == MTYPE_V;
02468 break;
02469
02470 case OPR_PARM:
02471
02472 valid = Is_MTYPE_f_i_M_p_V_z [rtype] && desc == MTYPE_V;
02473 break;
02474
02475 case OPR_RETURN_VAL:
02476
02477 valid = Is_MTYPE_f_i_M_p_s_z [rtype] && desc == MTYPE_V;
02478 break;
02479
02480 case OPR_SELECT:
02481
02482 valid = Is_MTYPE_b_f_i_p_z [rtype] &&
02483 (desc == MTYPE_V || desc == MTYPE_B);
02484 break;
02485
02486 case OPR_TAS:
02487
02488 valid = Is_MTYPE_f_i_p_s_z [rtype] && desc == MTYPE_V;
02489 break;
02490
02491 case OPR_ALLOCA:
02492
02493 valid = Is_MTYPE_p [rtype] && desc == MTYPE_V;
02494 break;
02495
02496 case OPR_RROTATE:
02497
02498 valid = ((rtype == MTYPE_U4) && ( desc == MTYPE_U1
02499 || desc == MTYPE_U2
02500 || desc == MTYPE_U4))
02501 || ((rtype == MTYPE_U8) && (desc == MTYPE_U8));
02502 break;
02503
02504 case OPR_STRCTFLD:
02505
02506 valid = (rtype == MTYPE_U8) && (desc == MTYPE_U8);
02507 break;
02508
02509 default:
02510 valid = FALSE;
02511 break;
02512 }
02513 }
02514
02515 if (valid == FALSE)
02516 breakpoint ();
02517
02518 return valid;
02519 }
02520
02521 BOOL
02522 Is_Valid_Opcode_FUNC (OPCODE opc)
02523 {
02524 OPERATOR opr = (OPERATOR) (((UINT32) opc) & 0xFF);
02525 TYPE_ID rtype = (TYPE_ID) ((((UINT32) opc) >> 8) & 0x1F);
02526 TYPE_ID desc = (TYPE_ID) ((((UINT32) opc) >> 13) & 0x1F);
02527
02528 return Is_Valid_Opcode_Parts (opr, rtype, desc);
02529 }
02530
02531 char*
02532 OPCODE_name (OPERATOR opr, TYPE_ID rtype, TYPE_ID desc)
02533 {
02534 static char buffer [64];
02535
02536 Is_True(Is_Valid_Opcode_Parts (opr, rtype, desc),
02537 ("Bad opcode %d %d %d", opr, rtype, desc));
02538
02539 switch (opr) {
02540
02541 case OPR_ABS:
02542
02543 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02544 break;
02545
02546 case OPR_ADD:
02547 case OPR_CONST:
02548 case OPR_SUB:
02549 case OPR_ASM_EXPR:
02550
02551 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02552 break;
02553
02554 case OPR_AGOTO:
02555 case OPR_ALTENTRY:
02556 case OPR_ASSERT:
02557 case OPR_BACKWARD_BARRIER:
02558 case OPR_BLOCK:
02559 case OPR_CASEGOTO:
02560 case OPR_COMMENT:
02561 case OPR_COMPGOTO:
02562 case OPR_DO_LOOP:
02563 case OPR_DO_WHILE:
02564 case OPR_EVAL:
02565 case OPR_EXC_SCOPE_BEGIN:
02566 case OPR_EXC_SCOPE_END:
02567 case OPR_FALSEBR:
02568 case OPR_FORWARD_BARRIER:
02569 case OPR_FUNC_ENTRY:
02570 case OPR_GOTO:
02571 case OPR_IDNAME:
02572 case OPR_IF:
02573 case OPR_IO:
02574 case OPR_IO_ITEM:
02575 case OPR_LABEL:
02576 case OPR_LOOP_INFO:
02577 case OPR_MSTORE:
02578 case OPR_OPT_CHI:
02579 case OPR_OPT_RESERVE2:
02580 case OPR_PRAGMA:
02581 case OPR_PREFETCH:
02582 case OPR_PREFETCHX:
02583 case OPR_REGION:
02584 case OPR_REGION_EXIT:
02585 case OPR_RETURN:
02586 case OPR_SWITCH:
02587 case OPR_TRAP:
02588 case OPR_TRUEBR:
02589 case OPR_WHERE:
02590 case OPR_WHILE_DO:
02591 case OPR_XGOTO:
02592 case OPR_XPRAGMA:
02593 case OPR_AFFIRM:
02594 case OPR_DEALLOCA:
02595 case OPR_ASM_STMT:
02596 case OPR_ASM_INPUT:
02597 case OPR_GOTO_OUTER_BLOCK:
02598 case OPR_NAMELIST:
02599 case OPR_IMPLICIT_BND:
02600 case OPR_NULLIFY:
02601 case OPR_INTERFACE:
02602
02603
02604 sprintf (buffer, "OPC_%s", &OPERATOR_info [opr]._name [4]);
02605 break;
02606
02607 case OPR_USE:
02608 case OPR_ARRAY:
02609 case OPR_ARRSECTION:
02610 case OPR_LDA:
02611 case OPR_LDMA:
02612 case OPR_ILDA:
02613 case OPR_LDA_LABEL:
02614
02615 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02616 break;
02617
02618 case OPR_ARRAYEXP:
02619 case OPR_ARRAY_CONSTRUCT:
02620
02621 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02622 break;
02623
02624 case OPR_ASHR:
02625 case OPR_BAND:
02626 case OPR_BIOR:
02627 case OPR_BNOR:
02628 case OPR_BNOT:
02629 case OPR_BXOR:
02630 case OPR_COMPOSE_BITS:
02631 case OPR_CVTL:
02632 case OPR_DIVREM:
02633 case OPR_EXTRACT_BITS:
02634 case OPR_HIGHMPY:
02635 case OPR_HIGHPART:
02636 case OPR_LOWPART:
02637 case OPR_LSHR:
02638 case OPR_MOD:
02639 case OPR_REM:
02640 case OPR_SHL:
02641 case OPR_TRIPLET:
02642 case OPR_SRCTRIPLET:
02643 case OPR_XMPY:
02644 case OPR_IMPLIED_DO:
02645
02646
02647 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02648 break;
02649
02650 case OPR_CALL:
02651 case OPR_ICALL:
02652 case OPR_INTRINSIC_CALL:
02653 case OPR_PICCALL:
02654 case OPR_VFCALL:
02655
02656 if (desc == MTYPE_V)
02657 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02658 else
02659 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02660 break;
02661
02662 case OPR_CAND:
02663 case OPR_CIOR:
02664 case OPR_LAND:
02665 case OPR_LIOR:
02666 case OPR_LNOT:
02667
02668 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02669 break;
02670
02671 case OPR_CEIL:
02672 case OPR_FLOOR:
02673 case OPR_RND:
02674 case OPR_TRUNC:
02675
02676 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02677 break;
02678
02679 case OPR_COMMA:
02680 case OPR_RCOMMA:
02681
02682 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02683 break;
02684
02685 case OPR_PAIR:
02686
02687 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02688 break;
02689
02690 case OPR_CSELECT:
02691
02692 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02693 break;
02694
02695 case OPR_CVT:
02696
02697 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02698 break;
02699
02700 case OPR_DIV:
02701 case OPR_MPY:
02702 case OPR_NEG:
02703 case OPR_OPTPARM:
02704
02705 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02706 break;
02707
02708 case OPR_EQ:
02709 case OPR_NE:
02710
02711 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02712 break;
02713
02714 case OPR_GE:
02715 case OPR_GT:
02716 case OPR_LE:
02717 case OPR_LT:
02718
02719 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02720 break;
02721
02722 case OPR_ILDBITS:
02723 case OPR_LDBITS:
02724
02725 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02726 break;
02727
02728 case OPR_ILOAD:
02729 case OPR_LDID:
02730 case OPR_STRCTFLD:
02731
02732 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02733 break;
02734
02735 case OPR_ILOADX:
02736 case OPR_SECONDPART:
02737 case OPR_MADD:
02738 case OPR_MSUB:
02739 case OPR_NMADD:
02740 case OPR_NMSUB:
02741 case OPR_FIRSTPART:
02742
02743 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02744 break;
02745
02746 case OPR_INTCONST:
02747
02748 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02749 break;
02750
02751 case OPR_INTRINSIC_OP:
02752
02753 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02754 break;
02755
02756 case OPR_ISTBITS:
02757 case OPR_STBITS:
02758
02759 sprintf (buffer, "OPC_%s%s", MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02760 break;
02761
02762 case OPR_ISTORE:
02763 case OPR_PSTORE:
02764 case OPR_STID:
02765 case OPR_PSTID:
02766
02767 sprintf (buffer, "OPC_%s%s", MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02768 break;
02769
02770 case OPR_ISTOREX:
02771
02772 sprintf (buffer, "OPC_%s%s", MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02773 break;
02774
02775 case OPR_MAX:
02776 case OPR_MIN:
02777 case OPR_MINMAX:
02778
02779 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02780 break;
02781
02782 case OPR_MAXPART:
02783 case OPR_MINPART:
02784
02785 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02786 break;
02787
02788 case OPR_MLOAD:
02789
02790 sprintf (buffer, "OPC_%s", &OPERATOR_info [opr]._name [4]);
02791 break;
02792
02793 case OPR_PAREN:
02794
02795 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02796 break;
02797
02798 case OPR_RECIP:
02799 case OPR_RSQRT:
02800 case OPR_SQRT:
02801
02802 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02803 break;
02804
02805 case OPR_PARM:
02806
02807 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02808 break;
02809
02810 case OPR_RETURN_VAL:
02811
02812 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02813 break;
02814
02815 case OPR_SELECT:
02816
02817 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype),
02818 desc == MTYPE_V ? "" : MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02819 break;
02820
02821 case OPR_TAS:
02822
02823 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02824 break;
02825
02826 case OPR_ALLOCA:
02827
02828 sprintf (buffer, "OPC_%s%s", MTYPE_name(rtype), &OPERATOR_info [opr]._name [4]);
02829 break;
02830
02831 case OPR_RROTATE:
02832
02833 sprintf (buffer, "OPC_%s%s%s", MTYPE_name(rtype), MTYPE_name(desc), &OPERATOR_info [opr]._name [4]);
02834 break;
02835
02836 default:
02837 buffer [0] = 0;
02838 break;
02839 }
02840
02841 return buffer;
02842 }
02843
02844 char*
02845 OPCODE_name (OPCODE opc)
02846 {
02847 OPERATOR opr = (OPERATOR) (((UINT32) opc) & 0xFF);
02848 TYPE_ID rtype = (TYPE_ID) ((((UINT32) opc) >> 8) & 0x1F);
02849 TYPE_ID desc = (TYPE_ID) ((((UINT32) opc) >> 13) & 0x1F);
02850
02851 return OPCODE_name (opr, rtype, desc);
02852 }
02853
02854
02855 #if 0
02856
02857
02858 OPCODE OPCODE_is_valid_opcode_table[OPCODE_LAST+1];
02859
02860 static struct setup_the_opcode_valid_table {
02861 public:
02862 setup_the_opcode_valid_table() {
02863 INT i;
02864 for (i=0; i <= OPCODE_LAST; i++) {
02865 if (Is_Valid_Opcode_FUNC((OPCODE) i)) {
02866 OPCODE_is_valid_opcode_table[i] = (OPCODE) i;
02867 } else {
02868 OPCODE_is_valid_opcode_table[i] = OPCODE_UNKNOWN;
02869 }
02870 }
02871 }
02872 } dummy_setup_the_opcode;
02873 #endif
02874
02875
02876