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
00040
00041
00042 #include "topcode.h"
00043 #include "isa_decode_gen.h"
00044 #include "targ_isa_bundle.h"
00045
00046 main()
00047 {
00048 ISA_Decode_Begin("ia64");
00049
00050 STATE ex_unit = Create_Unit_State("ex_unit", 0, 3);
00051 STATE integer_or_alu = Create_Inst_State("integer_or_alu", 0, 40, 1);
00052 STATE memory_or_alu = Create_Inst_State("memory_or_alu", 0, 40, 1);
00053
00054 STATE alu = Create_Inst_State("alu", 0, 37, 3);
00055 STATE integer = Create_Inst_State("integer", 0, 37, 3);
00056 STATE memory = Create_Inst_State("memory", 0, 37, 3);
00057 STATE floating = Create_Inst_State("floating", 0, 37, 4);
00058 STATE branch = Create_Inst_State("branch", 0, 37, 4);
00059 STATE lx_unit = Create_Inst_State("lx_unit", 1, 37, 4);
00060
00061 Transitions(ex_unit,
00062 ISA_EXEC_I_Unit, integer_or_alu,
00063 ISA_EXEC_M_Unit, memory_or_alu,
00064 ISA_EXEC_B_Unit, branch,
00065 ISA_EXEC_F_Unit, floating,
00066 ISA_EXEC_L_Unit, lx_unit,
00067 END_TRANSITIONS);
00068
00069 Transitions(integer_or_alu,
00070 0, integer,
00071 1, alu,
00072 END_TRANSITIONS);
00073
00074 Transitions(memory_or_alu,
00075 0, memory,
00076 1, alu,
00077 END_TRANSITIONS);
00078
00079
00080
00081 STATE alu_mm = Create_Inst_State("alu_mm", 0, 33, 3);
00082 STATE compare_c = Create_Inst_State("compare_c", 0, 12, 1);
00083 STATE compare_d = Create_Inst_State("compare_d", 0, 12, 1);
00084 STATE compare_e = Create_Inst_State("compare_e", 0, 12, 1);
00085
00086 STATE integer_alu = Create_Inst_State("integer_alu", 0, 27, 6);
00087 STATE mm_alu = Create_Inst_State("mm_alu", 0, 36, 1);
00088 STATE mm_alu_1_2 = Create_Inst_State("mm_alu_1_2", 0, 27, 7);
00089 STATE mm_alu_4 = Create_Inst_State("mm_alu_4", 0, 27, 6);
00090
00091 STATE compare_c0 = Create_Inst_State("compare_c0", 0, 33, 4);
00092 STATE compare_c1 = Create_Inst_State("compare_c1", 0, 33, 4);
00093 STATE compare_d0 = Create_Inst_State("compare_d0", 0, 33, 4);
00094 STATE compare_d1 = Create_Inst_State("compare_d1", 0, 33, 4);
00095 STATE compare_e0 = Create_Inst_State("compare_e0", 0, 33, 4);
00096 STATE compare_e1 = Create_Inst_State("compare_e1", 0, 33, 4);
00097
00098 Transitions(alu,
00099 0x8 - 8, alu_mm,
00100 0x9 - 8, Final(TOP_addl),
00101 0xc - 8, compare_c,
00102 0xd - 8, compare_d,
00103 0xe - 8, compare_e,
00104 END_TRANSITIONS);
00105
00106 Transitions(alu_mm,
00107 0, integer_alu,
00108 2, mm_alu,
00109 3, mm_alu,
00110 4, Final(TOP_adds),
00111 6, Final(TOP_addp4_i),
00112 END_TRANSITIONS);
00113
00114 Transitions(integer_alu,
00115 0, Final(TOP_add),
00116 1, Final(TOP_add_1),
00117 4, Final(TOP_sub_1),
00118 5, Final(TOP_sub),
00119 8, Final(TOP_addp4),
00120 12, Final(TOP_and),
00121 13, Final(TOP_andcm),
00122 14, Final(TOP_or),
00123 15, Final(TOP_xor),
00124 16, Final(TOP_shladd),
00125 17, Final(TOP_shladd),
00126 18, Final(TOP_shladd),
00127 19, Final(TOP_shladd),
00128 24, Final(TOP_shladdp4),
00129 25, Final(TOP_shladdp4),
00130 26, Final(TOP_shladdp4),
00131 27, Final(TOP_shladdp4),
00132 37, Final(TOP_sub_i),
00133 44, Final(TOP_and_i),
00134 45, Final(TOP_andcm_i),
00135 46, Final(TOP_or_i),
00136 47, Final(TOP_xor_i),
00137 END_TRANSITIONS);
00138
00139 Transitions(mm_alu,
00140 0, mm_alu_1_2,
00141 1, mm_alu_4,
00142 END_TRANSITIONS);
00143
00144 Transitions(mm_alu_1_2,
00145 0, Final(TOP_padd1),
00146 1, Final(TOP_padd1_sss),
00147 2, Final(TOP_padd1_uuu),
00148 3, Final(TOP_padd1_uus),
00149 4, Final(TOP_psub1),
00150 5, Final(TOP_psub1_sss),
00151 6, Final(TOP_psub1_uuu),
00152 7, Final(TOP_psub1_uus),
00153 10, Final(TOP_pavg1),
00154 11, Final(TOP_pavg1_raz),
00155 14, Final(TOP_pavgsub1),
00156 36, Final(TOP_pcmp1_eq),
00157 37, Final(TOP_pcmp1_gt),
00158 64, Final(TOP_padd2),
00159 65, Final(TOP_padd2_sss),
00160 66, Final(TOP_padd2_uuu),
00161 67, Final(TOP_padd2_uus),
00162 68, Final(TOP_psub2),
00163 69, Final(TOP_psub2_sss),
00164 70, Final(TOP_psub2_uuu),
00165 71, Final(TOP_psub2_uus),
00166 74, Final(TOP_pavg2),
00167 75, Final(TOP_pavg2_raz),
00168 78, Final(TOP_pavgsub2),
00169 80, Final(TOP_pshladd2),
00170 81, Final(TOP_pshladd2),
00171 82, Final(TOP_pshladd2),
00172 83, Final(TOP_pshladd2),
00173 88, Final(TOP_pshradd2),
00174 89, Final(TOP_pshradd2),
00175 90, Final(TOP_pshradd2),
00176 91, Final(TOP_pshradd2),
00177 100, Final(TOP_pcmp2_eq),
00178 101, Final(TOP_pcmp2_gt),
00179 END_TRANSITIONS);
00180
00181 Transitions(mm_alu_4,
00182 0, Final(TOP_padd4),
00183 4, Final(TOP_psub4),
00184 36, Final(TOP_pcmp4_eq),
00185 37, Final(TOP_pcmp4_gt),
00186 END_TRANSITIONS);
00187
00188 Transitions(compare_c,
00189 0, compare_c0,
00190 1, compare_c1,
00191 END_TRANSITIONS);
00192
00193 Transitions(compare_c0,
00194 0, Final(TOP_cmp_lt),
00195 1, Final(TOP_cmp_eq_and),
00196 2, Final(TOP_cmp4_lt),
00197 3, Final(TOP_cmp4_eq_and),
00198 4, Final(TOP_cmp_i_lt),
00199 5, Final(TOP_cmp_i_eq_and),
00200 6, Final(TOP_cmp4_i_lt),
00201 7, Final(TOP_cmp4_i_eq_and),
00202 8, Final(TOP_cmp_z1_gt_and),
00203 9, Final(TOP_cmp_z1_ge_and),
00204 10, Final(TOP_cmp4_z1_gt_and),
00205 11, Final(TOP_cmp4_z1_ge_and),
00206 12, Final(TOP_cmp_i_lt),
00207 13, Final(TOP_cmp_i_eq_and),
00208 14, Final(TOP_cmp4_i_lt),
00209 15, Final(TOP_cmp4_i_eq_and),
00210 END_TRANSITIONS);
00211
00212 Transitions(compare_c1,
00213 0, Final(TOP_cmp_lt_unc),
00214 1, Final(TOP_cmp_ne_and),
00215 2, Final(TOP_cmp4_lt_unc),
00216 3, Final(TOP_cmp4_ne_and),
00217 4, Final(TOP_cmp_i_lt_unc),
00218 5, Final(TOP_cmp_i_ne_and),
00219 6, Final(TOP_cmp4_i_lt_unc),
00220 7, Final(TOP_cmp4_i_ne_and),
00221 8, Final(TOP_cmp_z1_le_and),
00222 9, Final(TOP_cmp_z1_lt_and),
00223 10, Final(TOP_cmp4_z1_le_and),
00224 11, Final(TOP_cmp4_z1_lt_and),
00225 12, Final(TOP_cmp_i_lt_unc),
00226 13, Final(TOP_cmp_i_ne_and),
00227 14, Final(TOP_cmp4_i_lt_unc),
00228 15, Final(TOP_cmp4_i_ne_and),
00229 END_TRANSITIONS);
00230
00231 Transitions(compare_d,
00232 0, compare_d0,
00233 1, compare_d1,
00234 END_TRANSITIONS);
00235
00236 Transitions(compare_d0,
00237 0, Final(TOP_cmp_ltu),
00238 1, Final(TOP_cmp_eq_or),
00239 2, Final(TOP_cmp4_ltu),
00240 3, Final(TOP_cmp4_eq_or),
00241 4, Final(TOP_cmp_i_ltu),
00242 5, Final(TOP_cmp_i_eq_or),
00243 6, Final(TOP_cmp4_i_ltu),
00244 7, Final(TOP_cmp4_i_eq_or),
00245 8, Final(TOP_cmp_z1_gt_or),
00246 9, Final(TOP_cmp_z1_ge_or),
00247 10, Final(TOP_cmp4_z1_gt_or),
00248 11, Final(TOP_cmp4_z1_ge_or),
00249 12, Final(TOP_cmp_i_ltu),
00250 13, Final(TOP_cmp_i_eq_or),
00251 14, Final(TOP_cmp4_i_ltu),
00252 15, Final(TOP_cmp4_i_eq_or),
00253 END_TRANSITIONS);
00254
00255 Transitions(compare_d1,
00256 0, Final(TOP_cmp_ltu_unc),
00257 1, Final(TOP_cmp_ne_or),
00258 2, Final(TOP_cmp4_ltu_unc),
00259 3, Final(TOP_cmp4_ne_or),
00260 4, Final(TOP_cmp_i_ltu_unc),
00261 5, Final(TOP_cmp_i_ne_or),
00262 6, Final(TOP_cmp4_i_ltu_unc),
00263 7, Final(TOP_cmp4_i_ne_or),
00264 8, Final(TOP_cmp_z1_le_or),
00265 9, Final(TOP_cmp_z1_lt_or),
00266 10, Final(TOP_cmp4_z1_le_or),
00267 11, Final(TOP_cmp4_z1_lt_or),
00268 12, Final(TOP_cmp_i_ltu_unc),
00269 13, Final(TOP_cmp_i_ne_or),
00270 14, Final(TOP_cmp4_i_ltu_unc),
00271 15, Final(TOP_cmp4_i_ne_or),
00272 END_TRANSITIONS);
00273
00274 Transitions(compare_e,
00275 0, compare_e0,
00276 1, compare_e1,
00277 END_TRANSITIONS);
00278
00279 Transitions(compare_e0,
00280 0, Final(TOP_cmp_eq),
00281 1, Final(TOP_cmp_eq_or_andcm),
00282 2, Final(TOP_cmp4_eq),
00283 3, Final(TOP_cmp4_eq_or_andcm),
00284 4, Final(TOP_cmp_i_eq),
00285 5, Final(TOP_cmp_i_eq_or_andcm),
00286 6, Final(TOP_cmp4_i_eq),
00287 7, Final(TOP_cmp4_i_eq_or_andcm),
00288 8, Final(TOP_cmp_z1_gt_or_andcm),
00289 9, Final(TOP_cmp_z1_ge_or_andcm),
00290 10, Final(TOP_cmp4_z1_gt_or_andcm),
00291 11, Final(TOP_cmp4_z1_ge_or_andcm),
00292 12, Final(TOP_cmp_i_eq),
00293 13, Final(TOP_cmp_i_eq_or_andcm),
00294 14, Final(TOP_cmp4_i_eq),
00295 15, Final(TOP_cmp4_i_eq_or_andcm),
00296 END_TRANSITIONS);
00297
00298 Transitions(compare_e1,
00299 0, Final(TOP_cmp_eq_unc),
00300 1, Final(TOP_cmp_ne_or_andcm),
00301 2, Final(TOP_cmp4_eq_unc),
00302 3, Final(TOP_cmp4_ne_or_andcm),
00303 4, Final(TOP_cmp_i_eq_unc),
00304 5, Final(TOP_cmp_i_ne_or_andcm),
00305 6, Final(TOP_cmp4_i_eq_unc),
00306 7, Final(TOP_cmp4_i_ne_or_andcm),
00307 8, Final(TOP_cmp_z1_le_or_andcm),
00308 9, Final(TOP_cmp_z1_lt_or_andcm),
00309 10, Final(TOP_cmp4_z1_le_or_andcm),
00310 11, Final(TOP_cmp4_z1_lt_or_andcm),
00311 12, Final(TOP_cmp_i_eq_unc),
00312 13, Final(TOP_cmp_i_ne_or_andcm),
00313 14, Final(TOP_cmp4_i_eq_unc),
00314 15, Final(TOP_cmp4_i_ne_or_andcm),
00315 END_TRANSITIONS);
00316
00317
00318
00319 STATE misc = Create_Inst_State("misc", 0, 33, 3);
00320 STATE shift_test = Create_Inst_State("shift_test", 0, 33, 3);
00321 STATE movl = Create_Inst_State("movl", 0, 20, 1);
00322 STATE mpy_shift = Create_Inst_State("mpy_shift", 0, 32, 5);
00323
00324 STATE misc_0 = Create_Inst_State("misc_0", 0, 27, 6);
00325
00326 STATE move_to_br = Create_Inst_State("move_to_br", 0, 22, 1);
00327
00328 STATE tbit_tnat_0 = Create_Inst_State("tbit_tnat_0", 0, 36, 1);
00329 STATE tbit_tnat_1 = Create_Inst_State("tbit_tnat_1", 0, 36, 1);
00330 STATE extract = Create_Inst_State("extract", 0, 13, 1);
00331 STATE deposit = Create_Inst_State("deposit", 0, 26, 1);
00332
00333 STATE tbit_tnat_00 = Create_Inst_State("tbit_tnat_00", 0, 12, 2);
00334 STATE tbit_tnat_01 = Create_Inst_State("tbit_tnat_01", 0, 12, 2);
00335
00336 STATE tbit_tnat_10 = Create_Inst_State("tbit_tnat_10", 0, 12, 2);
00337 STATE tbit_tnat_11 = Create_Inst_State("tbit_tnat_11", 0, 12, 2);
00338
00339 STATE mpy_shift_2 = Create_Inst_State("mpy_shift_2", 0, 28, 4);
00340 STATE mpy_shift_6 = Create_Inst_State("mpy_shift_6", 0, 28, 4);
00341 STATE mpy_shift_8 = Create_Inst_State("mpy_shift_8", 0, 28, 4);
00342 STATE mpy_shift_10 = Create_Inst_State("mpy_shift_10", 0, 28, 4);
00343 STATE mpy_shift_12 = Create_Inst_State("mpy_shift_12", 0, 28, 4);
00344 STATE mpy_shift_14 = Create_Inst_State("mpy_shift_14", 0, 28, 4);
00345 STATE mpy_shift_16 = Create_Inst_State("mpy_shift_16", 0, 28, 4);
00346 STATE mpy_shift_18 = Create_Inst_State("mpy_shift_18", 0, 28, 4);
00347 STATE mpy_shift_20 = Create_Inst_State("mpy_shift_20", 0, 28, 4);
00348 STATE mpy_shift_24 = Create_Inst_State("mpy_shift_24", 0, 28, 4);
00349 STATE mpy_shift_28 = Create_Inst_State("mpy_shift_28", 0, 28, 4);
00350
00351 Transitions(integer,
00352 0, misc,
00353 4, Final(TOP_dep),
00354 5, shift_test,
00355 6, movl,
00356 7, mpy_shift,
00357 END_TRANSITIONS);
00358
00359 Transitions(misc,
00360 0, misc_0,
00361 1, Final(TOP_chk_s_i),
00362 2, Final(TOP_mov_t_pr_i),
00363 3, Final(TOP_mov_t_pr),
00364 7, move_to_br,
00365 END_TRANSITIONS);
00366
00367 Transitions(misc_0,
00368 0, Final(TOP_break_i),
00369 1, Final(TOP_nop_i),
00370 10, Final(TOP_mov_t_ar_i_i),
00371 16, Final(TOP_zxt1),
00372 17, Final(TOP_zxt2),
00373 18, Final(TOP_zxt4),
00374 20, Final(TOP_sxt1),
00375 21, Final(TOP_sxt2),
00376 22, Final(TOP_sxt4),
00377 24, Final(TOP_czx1_l),
00378 25, Final(TOP_czx2_l),
00379 28, Final(TOP_czx1_r),
00380 29, Final(TOP_czx2_r),
00381 42, Final(TOP_mov_t_ar_r_i),
00382 48, Final(TOP_mov_f_ip),
00383 49, Final(TOP_mov_f_br),
00384 50, Final(TOP_mov_f_ar_i),
00385 51, Final(TOP_mov_f_pr),
00386 END_TRANSITIONS);
00387
00388 Transitions(move_to_br,
00389 0, Final(TOP_mov_t_br_i),
00390 1, Final(TOP_mov_t_br_ret),
00391 END_TRANSITIONS);
00392
00393 Transitions(shift_test,
00394 0, tbit_tnat_0,
00395 1, tbit_tnat_1,
00396 2, extract,
00397 3, deposit,
00398 6, Final(TOP_shrp),
00399 7, Final(TOP_dep_i),
00400 END_TRANSITIONS);
00401
00402 Transitions(tbit_tnat_0,
00403 0, tbit_tnat_00,
00404 1, tbit_tnat_01,
00405 END_TRANSITIONS);
00406
00407 Transitions(tbit_tnat_00,
00408 0, Final(TOP_tbit_z),
00409 1, Final(TOP_tbit_z_unc),
00410 2, Final(TOP_tnat_z),
00411 3, Final(TOP_tnat_z_unc),
00412 END_TRANSITIONS);
00413
00414 Transitions(tbit_tnat_01,
00415 0, Final(TOP_tbit_z_and),
00416 1, Final(TOP_tbit_nz_and),
00417 2, Final(TOP_tnat_z_and),
00418 3, Final(TOP_tnat_nz_and),
00419 END_TRANSITIONS);
00420
00421 Transitions(tbit_tnat_1,
00422 0, tbit_tnat_10,
00423 1, tbit_tnat_11,
00424 END_TRANSITIONS);
00425
00426 Transitions(tbit_tnat_10,
00427 0, Final(TOP_tbit_z_or),
00428 1, Final(TOP_tbit_nz_or),
00429 2, Final(TOP_tnat_z_or),
00430 3, Final(TOP_tnat_nz_or),
00431 END_TRANSITIONS);
00432
00433 Transitions(tbit_tnat_11,
00434 0, Final(TOP_tbit_z_or_andcm),
00435 1, Final(TOP_tbit_nz_or_andcm),
00436 2, Final(TOP_tnat_z_or_andcm),
00437 3, Final(TOP_tnat_nz_or_andcm),
00438 END_TRANSITIONS);
00439
00440 Transitions(extract,
00441 0, Final(TOP_extr_u),
00442 1, Final(TOP_extr),
00443 END_TRANSITIONS);
00444
00445 Transitions(deposit,
00446 0, Final(TOP_dep_z),
00447 1, Final(TOP_dep_i_z),
00448 END_TRANSITIONS);
00449
00450 Transitions(movl,
00451 0, Final(TOP_movl),
00452 END_TRANSITIONS);
00453
00454 Transitions(mpy_shift,
00455 2, mpy_shift_2,
00456 6, mpy_shift_6,
00457 8, mpy_shift_8,
00458 10, mpy_shift_10,
00459 12, mpy_shift_12,
00460 14, mpy_shift_14,
00461 16, mpy_shift_16,
00462 18, mpy_shift_18,
00463 20, mpy_shift_20,
00464 24, mpy_shift_24,
00465 28, mpy_shift_28,
00466 END_TRANSITIONS);
00467
00468 Transitions(mpy_shift_2,
00469 0, Final(TOP_pshr2_u),
00470 1, Final(TOP_pmpyshr2_u),
00471 2, Final(TOP_pshr2),
00472 3, Final(TOP_pmpyshr2),
00473 4, Final(TOP_pshl2),
00474 5, Final(TOP_pmpyshr2_u),
00475 7, Final(TOP_pmpyshr2),
00476 9, Final(TOP_pmpyshr2_u),
00477 11, Final(TOP_pmpyshr2),
00478 13, Final(TOP_pmpyshr2_u),
00479 15, Final(TOP_pmpyshr2),
00480 END_TRANSITIONS);
00481
00482 Transitions(mpy_shift_6,
00483 1, Final(TOP_pshr2_i_u),
00484 3, Final(TOP_pshr2_i),
00485 9, Final(TOP_popcnt),
00486 END_TRANSITIONS);
00487
00488 Transitions(mpy_shift_8,
00489 1, Final(TOP_pmin1_u),
00490 4, Final(TOP_unpack1_h),
00491 5, Final(TOP_pmax1_u),
00492 6, Final(TOP_unpack1_l),
00493 8, Final(TOP_mix1_r),
00494 10, Final(TOP_mix1_l),
00495 11, Final(TOP_psad1),
00496 END_TRANSITIONS);
00497
00498 Transitions(mpy_shift_10,
00499 0, Final(TOP_pack2_uss),
00500 2, Final(TOP_pack2_sss),
00501 3, Final(TOP_pmin2),
00502 4, Final(TOP_unpack2_h),
00503 6, Final(TOP_unpack2_l),
00504 7, Final(TOP_pmax2),
00505 8, Final(TOP_mix2_r),
00506 10, Final(TOP_mix2_l),
00507 13, Final(TOP_pmpy2_r),
00508 15, Final(TOP_pmpy2_l),
00509 END_TRANSITIONS);
00510
00511 Transitions(mpy_shift_12,
00512 10, Final(TOP_mux1),
00513 END_TRANSITIONS);
00514
00515 Transitions(mpy_shift_14,
00516 5, Final(TOP_pshl2_i),
00517 10, Final(TOP_mux2),
00518 END_TRANSITIONS);
00519
00520 Transitions(mpy_shift_16,
00521 0, Final(TOP_pshr4_u),
00522 2, Final(TOP_pshr4),
00523 4, Final(TOP_pshl4),
00524 END_TRANSITIONS);
00525
00526 Transitions(mpy_shift_18,
00527 0, Final(TOP_shr_u),
00528 2, Final(TOP_shr),
00529 4, Final(TOP_shl),
00530 END_TRANSITIONS);
00531
00532 Transitions(mpy_shift_20,
00533 1, Final(TOP_pshr4_i_u),
00534 3, Final(TOP_pshr4_i),
00535 END_TRANSITIONS);
00536
00537 Transitions(mpy_shift_24,
00538 2, Final(TOP_pack4_sss),
00539 4, Final(TOP_unpack4_h),
00540 6, Final(TOP_unpack4_l),
00541 8, Final(TOP_mix4_r),
00542 10, Final(TOP_mix4_l),
00543 END_TRANSITIONS);
00544
00545 Transitions(mpy_shift_28,
00546 5, Final(TOP_pshl4_i),
00547 END_TRANSITIONS);
00548
00549
00550
00551 STATE sys_mem_0 = Create_Inst_State("sys_mem_0", 0, 33, 3);
00552 STATE sys_mem_1 = Create_Inst_State("sys_mem_1", 0, 33, 3);
00553 STATE int_load_store = Create_Inst_State("int_load_store", 0, 36, 1);
00554 STATE int_load_store_imm = Create_Inst_State("int_load_store_imm", 0, 30, 6);
00555 STATE fp_load_store = Create_Inst_State("fp_load_store", 0, 36, 1);
00556 STATE fp_load_store_imm = Create_Inst_State("fp_load_store_imm", 0, 30, 6);
00557
00558 STATE sys_mem_00 = Create_Inst_State("sys_mem_00", 0, 27, 6);
00559 STATE sys_mem_10 = Create_Inst_State("sys_mem_10", 0, 27, 6);
00560
00561 STATE int_load_store_0 = Create_Inst_State("int_load_store_0", 0, 27, 1);
00562 STATE int_load_store_1 = Create_Inst_State("int_load_store_1", 0, 27, 1);
00563
00564 STATE int_load_store_nobase = Create_Inst_State("int_load_store_nobase", 0, 30, 6);
00565 STATE sem_get_fr = Create_Inst_State("sem_get_fr", 0, 30, 6);
00566 STATE int_load_store_reg = Create_Inst_State("int_load_store_reg", 0, 30, 6);
00567
00568 STATE fp_load_store_0 = Create_Inst_State("fp_load_store_0", 0, 27, 1);
00569 STATE fp_load_store_1 = Create_Inst_State("fp_load_store_1", 0, 27, 1);
00570
00571 STATE fp_load_store_nobase = Create_Inst_State("fp_load_store_nobase", 0, 30, 6);
00572 STATE fp_load_pair_nobase = Create_Inst_State("fp_load_pair_nobase", 0, 30, 6);
00573 STATE fp_load_reg = Create_Inst_State("fp_load_reg", 0, 30, 6);
00574 STATE fp_load_pair_imm = Create_Inst_State("fp_load_pair_imm", 0, 30, 6);
00575
00576 Transitions(memory,
00577 0, sys_mem_0,
00578 1, sys_mem_1,
00579 4, int_load_store,
00580 5, int_load_store_imm,
00581 6, fp_load_store,
00582 7, fp_load_store_imm,
00583 END_TRANSITIONS);
00584
00585 Transitions(sys_mem_0,
00586 0, sys_mem_00,
00587 4, Final(TOP_chk_a),
00588 5, Final(TOP_chk_a),
00589 6, Final(TOP_chk_f_a),
00590 7, Final(TOP_chk_f_a),
00591 END_TRANSITIONS);
00592
00593 Transitions(sys_mem_00,
00594 0, Final(TOP_break_m),
00595 1, Final(TOP_nop_m),
00596 4, Final(TOP_sum),
00597 5, Final(TOP_rum),
00598 6, Final(TOP_ssm),
00599 7, Final(TOP_rsm),
00600 10, Final(TOP_loadrs),
00601 12, Final(TOP_flushrs),
00602 16, Final(TOP_invala),
00603 18, Final(TOP_invala_e),
00604 19, Final(TOP_invala_f_e),
00605 20, Final(TOP_sum),
00606 21, Final(TOP_rum),
00607 22, Final(TOP_ssm),
00608 23, Final(TOP_rsm),
00609 32, Final(TOP_fwb),
00610 34, Final(TOP_mf),
00611 35, Final(TOP_mf_a),
00612 36, Final(TOP_sum),
00613 37, Final(TOP_rum),
00614 38, Final(TOP_ssm),
00615 39, Final(TOP_rsm),
00616 40, Final(TOP_mov_t_ar_i_m),
00617 48, Final(TOP_srlz_d),
00618 49, Final(TOP_srlz_i),
00619 51, Final(TOP_sync_i),
00620 52, Final(TOP_sum),
00621 53, Final(TOP_rum),
00622 54, Final(TOP_ssm),
00623 55, Final(TOP_rsm),
00624 END_TRANSITIONS);
00625
00626 Transitions(sys_mem_1,
00627 0, sys_mem_10,
00628 1, Final(TOP_chk_s_m),
00629 3, Final(TOP_chk_f_s),
00630 6, Final(TOP_alloc_3),
00631 END_TRANSITIONS);
00632
00633 Transitions(sys_mem_10,
00634 0, Final(TOP_mov_t_rr),
00635 1, Final(TOP_mov_t_dbr),
00636 2, Final(TOP_mov_t_ibr),
00637 3, Final(TOP_mov_t_pkr),
00638 4, Final(TOP_mov_t_pmc),
00639 5, Final(TOP_mov_t_pmd),
00640 6, Final(TOP_mov_t_msr),
00641 9, Final(TOP_ptc_l),
00642 10, Final(TOP_ptc_g),
00643 11, Final(TOP_ptc_ga),
00644 12, Final(TOP_ptr_d),
00645 13, Final(TOP_ptr_i),
00646 14, Final(TOP_itr_d),
00647 15, Final(TOP_itr_i),
00648 16, Final(TOP_mov_f_rr),
00649 17, Final(TOP_mov_f_dbr),
00650 18, Final(TOP_mov_f_ibr),
00651 19, Final(TOP_mov_f_pkr),
00652 20, Final(TOP_mov_f_pmc),
00653 21, Final(TOP_mov_f_pmd),
00654 22, Final(TOP_mov_f_msr),
00655 23, Final(TOP_mov_f_cpuid),
00656 24, Final(TOP_probe_i_r),
00657 25, Final(TOP_probe_i_w),
00658 26, Final(TOP_thash),
00659 27, Final(TOP_ttag),
00660 30, Final(TOP_tpa),
00661 31, Final(TOP_tak),
00662 33, Final(TOP_mov_f_psrum),
00663 34, Final(TOP_mov_f_ar_m),
00664 36, Final(TOP_mov_f_cr),
00665 37, Final(TOP_mov_f_psr),
00666 41, Final(TOP_mov_t_psrum),
00667 42, Final(TOP_mov_t_ar_r_m),
00668 44, Final(TOP_mov_t_cr),
00669 45, Final(TOP_mov_t_psr),
00670 46, Final(TOP_itc_d),
00671 47, Final(TOP_itc_i),
00672 48, Final(TOP_fc),
00673 49, Final(TOP_probe_rw_fault),
00674 50, Final(TOP_probe_r_fault),
00675 51, Final(TOP_probe_w_fault),
00676 52, Final(TOP_ptc_e),
00677 56, Final(TOP_probe_r),
00678 57, Final(TOP_probe_w),
00679 END_TRANSITIONS);
00680
00681 Transitions(int_load_store,
00682 0, int_load_store_0,
00683 1, int_load_store_1,
00684 END_TRANSITIONS);
00685
00686 Transitions(int_load_store_0,
00687 0, int_load_store_nobase,
00688 1, sem_get_fr,
00689 END_TRANSITIONS);
00690
00691 Transitions(int_load_store_nobase,
00692 0, Final(TOP_ld1),
00693 1, Final(TOP_ld2),
00694 2, Final(TOP_ld4),
00695 3, Final(TOP_ld8),
00696 4, Final(TOP_ld1),
00697 5, Final(TOP_ld2),
00698 6, Final(TOP_ld4),
00699 7, Final(TOP_ld8),
00700 8, Final(TOP_ld1),
00701 9, Final(TOP_ld2),
00702 10, Final(TOP_ld4),
00703 11, Final(TOP_ld8),
00704 12, Final(TOP_ld1),
00705 13, Final(TOP_ld2),
00706 14, Final(TOP_ld4),
00707 15, Final(TOP_ld8),
00708 16, Final(TOP_ld1),
00709 17, Final(TOP_ld2),
00710 18, Final(TOP_ld4),
00711 19, Final(TOP_ld8),
00712 20, Final(TOP_ld1),
00713 21, Final(TOP_ld2),
00714 22, Final(TOP_ld4),
00715 23, Final(TOP_ld8),
00716 27, Final(TOP_ld8_fill),
00717 32, Final(TOP_ld1),
00718 33, Final(TOP_ld2),
00719 34, Final(TOP_ld4),
00720 35, Final(TOP_ld8),
00721 36, Final(TOP_ld1),
00722 37, Final(TOP_ld2),
00723 38, Final(TOP_ld4),
00724 39, Final(TOP_ld8),
00725 40, Final(TOP_ld1),
00726 41, Final(TOP_ld2),
00727 42, Final(TOP_ld4),
00728 43, Final(TOP_ld8),
00729 48, Final(TOP_st1),
00730 49, Final(TOP_st2),
00731 50, Final(TOP_st4),
00732 51, Final(TOP_st8),
00733 52, Final(TOP_st1),
00734 53, Final(TOP_st2),
00735 54, Final(TOP_st4),
00736 55, Final(TOP_st8),
00737 59, Final(TOP_st8_spill),
00738 END_TRANSITIONS);
00739
00740 Transitions(sem_get_fr,
00741 0, Final(TOP_cmpxchg1),
00742 1, Final(TOP_cmpxchg2),
00743 2, Final(TOP_cmpxchg4),
00744 3, Final(TOP_cmpxchg8),
00745 4, Final(TOP_cmpxchg1),
00746 5, Final(TOP_cmpxchg2),
00747 6, Final(TOP_cmpxchg4),
00748 7, Final(TOP_cmpxchg8),
00749 8, Final(TOP_xchg1),
00750 9, Final(TOP_xchg2),
00751 10, Final(TOP_xchg4),
00752 11, Final(TOP_xchg8),
00753 18, Final(TOP_fetchadd4),
00754 19, Final(TOP_fetchadd8),
00755 22, Final(TOP_fetchadd4),
00756 23, Final(TOP_fetchadd8),
00757 28, Final(TOP_getf_sig),
00758 29, Final(TOP_getf_exp),
00759 30, Final(TOP_getf_s),
00760 31, Final(TOP_getf_d),
00761 END_TRANSITIONS);
00762
00763 Transitions(int_load_store_1,
00764 0, int_load_store_reg,
00765 END_TRANSITIONS);
00766
00767 Transitions(int_load_store_reg,
00768 0, Final(TOP_ld1_r),
00769 1, Final(TOP_ld2_r),
00770 2, Final(TOP_ld4_r),
00771 3, Final(TOP_ld8_r),
00772 4, Final(TOP_ld1_r),
00773 5, Final(TOP_ld2_r),
00774 6, Final(TOP_ld4_r),
00775 7, Final(TOP_ld8_r),
00776 8, Final(TOP_ld1_r),
00777 9, Final(TOP_ld2_r),
00778 10, Final(TOP_ld4_r),
00779 11, Final(TOP_ld8_r),
00780 12, Final(TOP_ld1_r),
00781 13, Final(TOP_ld2_r),
00782 14, Final(TOP_ld4_r),
00783 15, Final(TOP_ld8_r),
00784 16, Final(TOP_ld1_r),
00785 17, Final(TOP_ld2_r),
00786 18, Final(TOP_ld4_r),
00787 19, Final(TOP_ld8_r),
00788 20, Final(TOP_ld1_r),
00789 21, Final(TOP_ld2_r),
00790 22, Final(TOP_ld4_r),
00791 23, Final(TOP_ld8_r),
00792 27, Final(TOP_ld8_r_fill),
00793 32, Final(TOP_ld1_r),
00794 33, Final(TOP_ld2_r),
00795 34, Final(TOP_ld4_r),
00796 35, Final(TOP_ld8_r),
00797 36, Final(TOP_ld1_r),
00798 37, Final(TOP_ld2_r),
00799 38, Final(TOP_ld4_r),
00800 39, Final(TOP_ld8_r),
00801 40, Final(TOP_ld1_r),
00802 41, Final(TOP_ld2_r),
00803 42, Final(TOP_ld4_r),
00804 43, Final(TOP_ld8_r),
00805 END_TRANSITIONS);
00806
00807 Transitions(int_load_store_imm,
00808 0, Final(TOP_ld1_i),
00809 1, Final(TOP_ld2_i),
00810 2, Final(TOP_ld4_i),
00811 3, Final(TOP_ld8_i),
00812 4, Final(TOP_ld1_i),
00813 5, Final(TOP_ld2_i),
00814 6, Final(TOP_ld4_i),
00815 7, Final(TOP_ld8_i),
00816 8, Final(TOP_ld1_i),
00817 9, Final(TOP_ld2_i),
00818 10, Final(TOP_ld4_i),
00819 11, Final(TOP_ld8_i),
00820 12, Final(TOP_ld1_i),
00821 13, Final(TOP_ld2_i),
00822 14, Final(TOP_ld4_i),
00823 15, Final(TOP_ld8_i),
00824 16, Final(TOP_ld1_i),
00825 17, Final(TOP_ld2_i),
00826 18, Final(TOP_ld4_i),
00827 19, Final(TOP_ld8_i),
00828 20, Final(TOP_ld1_i),
00829 21, Final(TOP_ld2_i),
00830 22, Final(TOP_ld4_i),
00831 23, Final(TOP_ld8_i),
00832 27, Final(TOP_ld8_i_fill),
00833 32, Final(TOP_ld1_i),
00834 33, Final(TOP_ld2_i),
00835 34, Final(TOP_ld4_i),
00836 35, Final(TOP_ld8_i),
00837 36, Final(TOP_ld1_i),
00838 37, Final(TOP_ld2_i),
00839 38, Final(TOP_ld4_i),
00840 39, Final(TOP_ld8_i),
00841 40, Final(TOP_ld1_i),
00842 41, Final(TOP_ld2_i),
00843 42, Final(TOP_ld4_i),
00844 43, Final(TOP_ld8_i),
00845 48, Final(TOP_st1_i),
00846 49, Final(TOP_st2_i),
00847 50, Final(TOP_st4_i),
00848 51, Final(TOP_st8_i),
00849 52, Final(TOP_st1_i),
00850 53, Final(TOP_st2_i),
00851 54, Final(TOP_st4_i),
00852 55, Final(TOP_st8_i),
00853 59, Final(TOP_st8_i_spill),
00854 END_TRANSITIONS);
00855
00856 Transitions(fp_load_store,
00857 0, fp_load_store_0,
00858 1, fp_load_store_1,
00859 END_TRANSITIONS);
00860
00861 Transitions(fp_load_store_0,
00862 0, fp_load_store_nobase,
00863 1, fp_load_pair_nobase,
00864 END_TRANSITIONS);
00865
00866 Transitions(fp_load_store_nobase,
00867 0, Final(TOP_ldfe),
00868 1, Final(TOP_ldf8),
00869 2, Final(TOP_ldfs),
00870 3, Final(TOP_ldfd),
00871 4, Final(TOP_ldfe),
00872 5, Final(TOP_ldf8),
00873 6, Final(TOP_ldfs),
00874 7, Final(TOP_ldfd),
00875 8, Final(TOP_ldfe),
00876 9, Final(TOP_ldf8),
00877 10, Final(TOP_ldfs),
00878 11, Final(TOP_ldfd),
00879 12, Final(TOP_ldfe),
00880 13, Final(TOP_ldf8),
00881 14, Final(TOP_ldfs),
00882 15, Final(TOP_ldfd),
00883 27, Final(TOP_ldf_fill),
00884 32, Final(TOP_ldfe),
00885 33, Final(TOP_ldf8),
00886 34, Final(TOP_ldfs),
00887 35, Final(TOP_ldfd),
00888 36, Final(TOP_ldfe),
00889 37, Final(TOP_ldf8),
00890 38, Final(TOP_ldfs),
00891 39, Final(TOP_ldfd),
00892 44, Final(TOP_lfetch),
00893 45, Final(TOP_lfetch_excl),
00894 46, Final(TOP_lfetch_fault),
00895 47, Final(TOP_lfetch_fault_excl),
00896 48, Final(TOP_stfe),
00897 49, Final(TOP_stf8),
00898 50, Final(TOP_stfs),
00899 51, Final(TOP_stfd),
00900 59, Final(TOP_stf_spill),
00901 END_TRANSITIONS);
00902
00903 Transitions(fp_load_reg,
00904 0, Final(TOP_ldfe_r),
00905 1, Final(TOP_ldf8_r),
00906 2, Final(TOP_ldfs_r),
00907 3, Final(TOP_ldfd_r),
00908 4, Final(TOP_ldfe_r),
00909 5, Final(TOP_ldf8_r),
00910 6, Final(TOP_ldfs_r),
00911 7, Final(TOP_ldfd_r),
00912 8, Final(TOP_ldfe_r),
00913 9, Final(TOP_ldf8_r),
00914 10, Final(TOP_ldfs_r),
00915 11, Final(TOP_ldfd_r),
00916 12, Final(TOP_ldfe_r),
00917 13, Final(TOP_ldf8_r),
00918 14, Final(TOP_ldfs_r),
00919 15, Final(TOP_ldfd_r),
00920 27, Final(TOP_ldf_r_fill),
00921 32, Final(TOP_ldfe_r),
00922 33, Final(TOP_ldf8_r),
00923 34, Final(TOP_ldfs_r),
00924 35, Final(TOP_ldfd_r),
00925 36, Final(TOP_ldfe_r),
00926 37, Final(TOP_ldf8_r),
00927 38, Final(TOP_ldfs_r),
00928 39, Final(TOP_ldfd_r),
00929 44, Final(TOP_lfetch_r),
00930 45, Final(TOP_lfetch_r_excl),
00931 46, Final(TOP_lfetch_r_fault),
00932 47, Final(TOP_lfetch_r_fault_excl),
00933 END_TRANSITIONS);
00934
00935 Transitions(fp_load_store_1,
00936 0, fp_load_reg,
00937 1, fp_load_pair_imm,
00938 END_TRANSITIONS);
00939
00940 Transitions(fp_load_pair_nobase,
00941 1, Final(TOP_ldfp8),
00942 2, Final(TOP_ldfps),
00943 3, Final(TOP_ldfpd),
00944 5, Final(TOP_ldfp8),
00945 6, Final(TOP_ldfps),
00946 7, Final(TOP_ldfpd),
00947 9, Final(TOP_ldfp8),
00948 10, Final(TOP_ldfps),
00949 11, Final(TOP_ldfpd),
00950 13, Final(TOP_ldfp8),
00951 14, Final(TOP_ldfps),
00952 15, Final(TOP_ldfpd),
00953 28, Final(TOP_setf_sig),
00954 29, Final(TOP_setf_exp),
00955 30, Final(TOP_setf_s),
00956 31, Final(TOP_setf_d),
00957 33, Final(TOP_ldfp8),
00958 34, Final(TOP_ldfps),
00959 35, Final(TOP_ldfpd),
00960 37, Final(TOP_ldfp8),
00961 38, Final(TOP_ldfps),
00962 39, Final(TOP_ldfpd),
00963 END_TRANSITIONS);
00964
00965 Transitions(fp_load_pair_imm,
00966 1, Final(TOP_ldfp8_i),
00967 2, Final(TOP_ldfps_i),
00968 3, Final(TOP_ldfpd_i),
00969 5, Final(TOP_ldfp8_i),
00970 6, Final(TOP_ldfps_i),
00971 7, Final(TOP_ldfpd_i),
00972 9, Final(TOP_ldfp8_i),
00973 10, Final(TOP_ldfps_i),
00974 11, Final(TOP_ldfpd_i),
00975 13, Final(TOP_ldfp8_i),
00976 14, Final(TOP_ldfps_i),
00977 15, Final(TOP_ldfpd_i),
00978 33, Final(TOP_ldfp8_i),
00979 34, Final(TOP_ldfps_i),
00980 35, Final(TOP_ldfpd_i),
00981 37, Final(TOP_ldfp8_i),
00982 38, Final(TOP_ldfps_i),
00983 39, Final(TOP_ldfpd_i),
00984 END_TRANSITIONS);
00985
00986 Transitions(fp_load_store_imm,
00987 0, Final(TOP_ldfe_i),
00988 1, Final(TOP_ldf8_i),
00989 2, Final(TOP_ldfs_i),
00990 3, Final(TOP_ldfd_i),
00991 4, Final(TOP_ldfe_i),
00992 5, Final(TOP_ldf8_i),
00993 6, Final(TOP_ldfs_i),
00994 7, Final(TOP_ldfd_i),
00995 8, Final(TOP_ldfe_i),
00996 9, Final(TOP_ldf8_i),
00997 10, Final(TOP_ldfs_i),
00998 11, Final(TOP_ldfd_i),
00999 12, Final(TOP_ldfe_i),
01000 13, Final(TOP_ldf8_i),
01001 14, Final(TOP_ldfs_i),
01002 15, Final(TOP_ldfd_i),
01003 27, Final(TOP_ldf_i_fill),
01004 32, Final(TOP_ldfe_i),
01005 33, Final(TOP_ldf8_i),
01006 34, Final(TOP_ldfs_i),
01007 35, Final(TOP_ldfd_i),
01008 36, Final(TOP_ldfe_i),
01009 37, Final(TOP_ldf8_i),
01010 38, Final(TOP_ldfs_i),
01011 39, Final(TOP_ldfd_i),
01012 44, Final(TOP_lfetch_i),
01013 45, Final(TOP_lfetch_i_excl),
01014 46, Final(TOP_lfetch_i_fault),
01015 47, Final(TOP_lfetch_i_fault_excl),
01016 48, Final(TOP_stfe_i),
01017 49, Final(TOP_stf8_i),
01018 50, Final(TOP_stfs_i),
01019 51, Final(TOP_stfd_i),
01020 59, Final(TOP_stf_i_spill),
01021 END_TRANSITIONS);
01022
01023
01024
01025 STATE fp_misc_0 = Create_Inst_State("fp_misc_0", 0, 33, 1);
01026 STATE fp_misc_1 = Create_Inst_State("fp_misc_1", 0, 33, 1);
01027 STATE fp_compare = Create_Inst_State("fp_compare", 0, 33, 1);
01028 STATE fp_class = Create_Inst_State("fp_class", 0, 12, 1);
01029 STATE fma_8 = Create_Inst_State("fma_8", 0, 36, 1);
01030 STATE fma_9 = Create_Inst_State("fma_9", 0, 36, 1);
01031 STATE fma_a = Create_Inst_State("fma_a", 0, 36, 1);
01032 STATE fma_b = Create_Inst_State("fma_b", 0, 36, 1);
01033 STATE fma_c = Create_Inst_State("fma_c", 0, 36, 1);
01034 STATE fma_d = Create_Inst_State("fma_d", 0, 36, 1);
01035 STATE fselect = Create_Inst_State("fselect", 0, 34, 3);
01036
01037 STATE fp_misc_00 = Create_Inst_State("fp_misc_00", 0, 27, 6);
01038 STATE fp_misc_01 = Create_Inst_State("fp_misc_01", 0, 36, 1);
01039
01040 STATE fp_misc_10 = Create_Inst_State("fp_misc_10", 0, 27, 6);
01041 STATE fp_misc_11 = Create_Inst_State("fp_misc_11", 0, 36, 1);
01042
01043 STATE fp_compare_0 = Create_Inst_State("fp_compare_0", 0, 36, 1);
01044 STATE fp_compare_1 = Create_Inst_State("fp_compare_1", 0, 36, 1);
01045
01046 STATE fp_compare_00 = Create_Inst_State("fp_compare_00", 0, 12, 1);
01047 STATE fp_compare_01 = Create_Inst_State("fp_compare_01", 0, 12, 1);
01048
01049 STATE fp_compare_10 = Create_Inst_State("fp_compare_10", 0, 12, 1);
01050 STATE fp_compare_11 = Create_Inst_State("fp_compare_11", 0, 12, 1);
01051
01052 Transitions(floating,
01053 0, fp_misc_0,
01054 1, fp_misc_1,
01055 4, fp_compare,
01056 5, fp_class,
01057 8, fma_8,
01058 9, fma_9,
01059 10, fma_a,
01060 11, fma_b,
01061 12, fma_c,
01062 13, fma_d,
01063 14, fselect,
01064 END_TRANSITIONS);
01065
01066 Transitions(fp_misc_0,
01067 0, fp_misc_00,
01068 1, fp_misc_01,
01069 END_TRANSITIONS);
01070
01071 Transitions(fp_misc_00,
01072 0, Final(TOP_break_f),
01073 1, Final(TOP_nop_f),
01074 4, Final(TOP_fsetc),
01075 5, Final(TOP_fclrf),
01076 8, Final(TOP_fchkf),
01077 16, Final(TOP_fmerge_s),
01078 17, Final(TOP_fmerge_ns),
01079 18, Final(TOP_fmerge_se),
01080 20, Final(TOP_fmin),
01081 21, Final(TOP_fmax),
01082 22, Final(TOP_famin),
01083 23, Final(TOP_famax),
01084 24, Final(TOP_fcvt_fx),
01085 25, Final(TOP_fcvt_fxu),
01086 26, Final(TOP_fcvt_fx_trunc),
01087 27, Final(TOP_fcvt_fxu_trunc),
01088 28, Final(TOP_fcvt_xf),
01089 40, Final(TOP_fpack),
01090 44, Final(TOP_fand),
01091 45, Final(TOP_fandcm),
01092 46, Final(TOP_for),
01093 47, Final(TOP_fxor),
01094 52, Final(TOP_fswap),
01095 53, Final(TOP_fswap_nl),
01096 54, Final(TOP_fswap_nr),
01097 57, Final(TOP_fmix_lr),
01098 58, Final(TOP_fmix_r),
01099 59, Final(TOP_fmix_l),
01100 60, Final(TOP_fsxt_r),
01101 61, Final(TOP_fsxt_l),
01102 END_TRANSITIONS);
01103
01104 Transitions(fp_misc_01,
01105 0, Final(TOP_frcpa),
01106 1, Final(TOP_frsqrta),
01107 END_TRANSITIONS);
01108
01109 Transitions(fp_misc_1,
01110 0, fp_misc_10,
01111 1, fp_misc_11,
01112 END_TRANSITIONS);
01113
01114 Transitions(fp_misc_10,
01115 16, Final(TOP_fpmerge_s),
01116 17, Final(TOP_fpmerge_ns),
01117 18, Final(TOP_fpmerge_se),
01118 20, Final(TOP_fpmin),
01119 21, Final(TOP_fpmax),
01120 22, Final(TOP_fpamin),
01121 23, Final(TOP_fpamax),
01122 24, Final(TOP_fpcvt_fx),
01123 25, Final(TOP_fpcvt_fxu),
01124 26, Final(TOP_fpcvt_fx_trunc),
01125 27, Final(TOP_fpcvt_fxu_trunc),
01126 48, Final(TOP_fpcmp_eq),
01127 49, Final(TOP_fpcmp_lt),
01128 50, Final(TOP_fpcmp_le),
01129 51, Final(TOP_fpcmp_unord),
01130 52, Final(TOP_fpcmp_neq),
01131 53, Final(TOP_fpcmp_nlt),
01132 54, Final(TOP_fpcmp_nle),
01133 55, Final(TOP_fpcmp_ord),
01134 END_TRANSITIONS);
01135
01136 Transitions(fp_misc_11,
01137 0, Final(TOP_fprcpa),
01138 1, Final(TOP_fprsqrta),
01139 END_TRANSITIONS);
01140
01141 Transitions(fp_compare,
01142 0, fp_compare_0,
01143 1, fp_compare_1,
01144 END_TRANSITIONS);
01145
01146 Transitions(fp_compare_0,
01147 0, fp_compare_00,
01148 1, fp_compare_01,
01149 END_TRANSITIONS);
01150
01151 Transitions(fp_compare_00,
01152 0, Final(TOP_fcmp_eq),
01153 1, Final(TOP_fcmp_eq_unc),
01154 END_TRANSITIONS);
01155
01156 Transitions(fp_compare_01,
01157 0, Final(TOP_fcmp_lt),
01158 1, Final(TOP_fcmp_lt_unc),
01159 END_TRANSITIONS);
01160
01161 Transitions(fp_compare_1,
01162 0, fp_compare_10,
01163 1, fp_compare_11,
01164 END_TRANSITIONS);
01165
01166 Transitions(fp_compare_10,
01167 0, Final(TOP_fcmp_le),
01168 1, Final(TOP_fcmp_le_unc),
01169 END_TRANSITIONS);
01170
01171 Transitions(fp_compare_11,
01172 0, Final(TOP_fcmp_unord),
01173 1, Final(TOP_fcmp_unord_unc),
01174 END_TRANSITIONS);
01175
01176 Transitions(fp_class,
01177 0, Final(TOP_fclass_m),
01178 1, Final(TOP_fclass_m_unc),
01179 END_TRANSITIONS);
01180
01181 Transitions(fma_8,
01182 0, Final(TOP_fma),
01183 1, Final(TOP_fma_s),
01184 END_TRANSITIONS);
01185
01186 Transitions(fma_9,
01187 0, Final(TOP_fma_d),
01188 1, Final(TOP_fpma),
01189 END_TRANSITIONS);
01190
01191 Transitions(fma_a,
01192 0, Final(TOP_fms),
01193 1, Final(TOP_fms_s),
01194 END_TRANSITIONS);
01195
01196 Transitions(fma_b,
01197 0, Final(TOP_fms_d),
01198 1, Final(TOP_fpms),
01199 END_TRANSITIONS);
01200
01201 Transitions(fma_c,
01202 0, Final(TOP_fnma),
01203 1, Final(TOP_fnma_s),
01204 END_TRANSITIONS);
01205
01206 Transitions(fma_d,
01207 0, Final(TOP_fnma_d),
01208 1, Final(TOP_fpnma),
01209 END_TRANSITIONS);
01210
01211 Transitions(fselect,
01212 0, Final(TOP_fselect),
01213 1, Final(TOP_fselect),
01214 2, Final(TOP_fselect),
01215 3, Final(TOP_fselect),
01216 4, Final(TOP_xma_l),
01217 6, Final(TOP_xma_hu),
01218 7, Final(TOP_xma_h),
01219 END_TRANSITIONS);
01220
01221
01222
01223 STATE misc_branch = Create_Inst_State("misc_branch", 0, 27, 6);
01224 STATE relative_branch = Create_Inst_State("relative_branch", 0, 6, 3);
01225 STATE indirect_predict = Create_Inst_State("indirect_predict", 0, 27, 6);
01226
01227 STATE indirect_branch = Create_Inst_State("indirect_branch", 0, 6, 3);
01228 STATE indirect_return = Create_Inst_State("indirect_return", 0, 6, 6);
01229
01230 Transitions(branch,
01231 0, misc_branch,
01232 1, Final(TOP_br_r_call),
01233 2, indirect_predict,
01234 4, relative_branch,
01235 5, Final(TOP_br_call),
01236 7, Final(TOP_brp),
01237 END_TRANSITIONS);
01238
01239 Transitions(misc_branch,
01240 0, Final(TOP_break_b),
01241 2, Final(TOP_cover),
01242 4, Final(TOP_clrrrb),
01243 5, Final(TOP_clrrrb_pr),
01244 8, Final(TOP_rfi),
01245 12, Final(TOP_bsw_0),
01246 13, Final(TOP_bsw_1),
01247 16, Final(TOP_epc),
01248 32, indirect_branch,
01249 33, indirect_return,
01250 END_TRANSITIONS);
01251
01252 Transitions(indirect_branch,
01253 0, Final(TOP_br_r_cond),
01254 1, Final(TOP_br_ia),
01255 END_TRANSITIONS);
01256
01257 Transitions(indirect_return,
01258 4, Final(TOP_br_ret),
01259 END_TRANSITIONS);
01260
01261 Transitions(indirect_predict,
01262 0, Final(TOP_nop_b),
01263 16, Final(TOP_brp_r),
01264 17, Final(TOP_brp_ret),
01265 END_TRANSITIONS);
01266
01267 Transitions(relative_branch,
01268 0, Final(TOP_br_cond),
01269 2, Final(TOP_br_wexit),
01270 3, Final(TOP_br_wtop),
01271 5, Final(TOP_br_cloop),
01272 6, Final(TOP_br_cexit),
01273 7, Final(TOP_br_ctop),
01274 END_TRANSITIONS);
01275
01276
01277
01278 STATE misc_lx = Create_Inst_State("misc_lx", 1, 27, 6);
01279
01280 Transitions(lx_unit,
01281 0, misc_lx,
01282 6, Final(TOP_movl),
01283 12, Final(TOP_brl_cond),
01284 13, Final(TOP_brl_call),
01285 END_TRANSITIONS);
01286
01287 Transitions(misc_lx,
01288 0, Final(TOP_break_x),
01289 1, Final(TOP_nop_x),
01290 END_TRANSITIONS);
01291
01292 Initial_State(ex_unit);
01293
01294 ISA_Decode_End();
01295 return 0;
01296 }