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