Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
00001 /* 00002 00003 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it 00006 under the terms of version 2 of the GNU General Public License as 00007 published by the Free Software Foundation. 00008 00009 This program is distributed in the hope that it would be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 00013 Further, this software is distributed without any warranty that it is 00014 free of the rightful claim of any third person regarding infringement 00015 or the like. Any license provided herein, whether implied or 00016 otherwise, applies only to this software file. Patent licenses, if 00017 any, provided herein do not apply to combinations of this program with 00018 other software, or any other product whatsoever. 00019 00020 You should have received a copy of the GNU General Public License along 00021 with this program; if not, write the Free Software Foundation, Inc., 59 00022 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00023 00024 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00025 Mountain View, CA 94043, or: 00026 00027 http://www.sgi.com 00028 00029 For further information regarding this notice, see: 00030 00031 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00032 00033 */ 00034 00035 // 00036 // Generate an ISA containing and group TOPS with similar operands/results 00037 // format. 00039 // The instructions are listed below in the order as shown below. 00040 // 00041 // 1. Real and pseudo instructions 00042 // 2. Simulated instructions. 00043 // 00044 // Within each category, the instructions are arranged roughly in order 00045 // of increasing numbers of operands. 00047 // 00048 00049 #include <stddef.h> 00050 #include "topcode.h" 00051 #include "isa_operands_gen.h" 00052 00053 main() 00054 { 00055 OPERAND_VALUE_TYPE sf, ar, ar_i, ar_m, ec, lc, cr, br, pr, fp64, int64, addl; 00056 OPERAND_VALUE_TYPE ph, dh, bwh, aclr, ldhint, sthint, lfhint, 00057 indwh, ipwh, ih, ldtype, sttype, fldtype, 00058 sem, mwh, mbtype4; 00059 OPERAND_VALUE_TYPE lit1, lit8, lit9, lit14, lit16, lit17, lit22, 00060 lit44, lit64; 00061 OPERAND_VALUE_TYPE ulit2, ulit4, ulit5, ulit6, ulit7, ulit8, ulit9, ulit21, 00062 ulit24, ulit62; 00063 OPERAND_VALUE_TYPE pcrel13, pcrel25, pcrel64; 00064 OPERAND_VALUE_TYPE pmpyshr2, fetchadd, shfadd, pshfadd, len4, len6, 00065 scmp, ucmp1, ucmp2, ucmp3, ucmp4; 00066 00067 OPERAND_USE_TYPE 00068 predicate, // a qualifying predicate 00069 base, // a base address (for memory insts) 00070 offset, // an offset added to a base (implies immed val) 00071 postincr, // a post increment applied to a base address 00072 target, // the target of a branch 00073 storeval, // value to be stored 00074 opnd1, // first/left operand of an alu operator 00075 opnd2, // second/right operand of an alu operator 00076 maddend; // addend/subtrahend operand of a madd 00077 00078 ISA_Operands_Begin("ia64"); 00079 00080 /* Create the register operand types: 00081 */ 00082 ar = ISA_Reg_Opnd_Type_Create("ar", ISA_REGISTER_CLASS_application, 00083 ISA_REGISTER_SUBCLASS_UNDEFINED, 00084 64, UNSIGNED, INVALID); 00085 ar_i = ISA_Reg_Opnd_Type_Create("ar_i", ISA_REGISTER_CLASS_application, 00086 ISA_REGISTER_SUBCLASS_ar_i, 00087 64, UNSIGNED, INVALID); 00088 ar_m = ISA_Reg_Opnd_Type_Create("ar_m", ISA_REGISTER_CLASS_application, 00089 ISA_REGISTER_SUBCLASS_ar_m, 00090 64, UNSIGNED, INVALID); 00091 ec = ISA_Reg_Opnd_Type_Create("ec", ISA_REGISTER_CLASS_application, 00092 ISA_REGISTER_SUBCLASS_ec, 00093 64, UNSIGNED, INVALID); 00094 lc = ISA_Reg_Opnd_Type_Create("lc", ISA_REGISTER_CLASS_application, 00095 ISA_REGISTER_SUBCLASS_lc, 00096 64, UNSIGNED, INVALID); 00097 cr = ISA_Reg_Opnd_Type_Create("cr", ISA_REGISTER_CLASS_control, 00098 ISA_REGISTER_SUBCLASS_UNDEFINED, 00099 64, UNSIGNED, INVALID); 00100 br = ISA_Reg_Opnd_Type_Create("br", ISA_REGISTER_CLASS_branch, 00101 ISA_REGISTER_SUBCLASS_UNDEFINED, 00102 64, UNSIGNED, INVALID); 00103 pr = ISA_Reg_Opnd_Type_Create("pr", ISA_REGISTER_CLASS_predicate, 00104 ISA_REGISTER_SUBCLASS_UNDEFINED, 00105 1, UNSIGNED, INVALID); 00106 fp64 = ISA_Reg_Opnd_Type_Create("fp64", ISA_REGISTER_CLASS_float, 00107 ISA_REGISTER_SUBCLASS_UNDEFINED, 00108 64, SIGNED, INVALID); 00109 int64 = ISA_Reg_Opnd_Type_Create("int64", ISA_REGISTER_CLASS_integer, 00110 ISA_REGISTER_SUBCLASS_UNDEFINED, 00111 64, SIGNED, INVALID); 00112 addl = ISA_Reg_Opnd_Type_Create("int64", ISA_REGISTER_CLASS_integer, 00113 ISA_REGISTER_SUBCLASS_addl, 00114 64, SIGNED, INVALID); 00115 00116 /* Create the enum operand types: 00117 */ 00118 ph = ISA_Enum_Opnd_Type_Create("ph", 8, UNSIGNED, EC_ph); 00119 dh = ISA_Enum_Opnd_Type_Create("dh", 8, UNSIGNED, EC_dh); 00120 bwh = ISA_Enum_Opnd_Type_Create("bwh", 8, UNSIGNED, EC_bwh); 00121 aclr = ISA_Enum_Opnd_Type_Create("aclr", 8, UNSIGNED, EC_aclr); 00122 ldhint = ISA_Enum_Opnd_Type_Create("ldhint", 8, UNSIGNED, EC_ldhint); 00123 sthint = ISA_Enum_Opnd_Type_Create("sthint", 8, UNSIGNED, EC_sthint); 00124 lfhint = ISA_Enum_Opnd_Type_Create("lfhint", 8, UNSIGNED, EC_lfhint); 00125 indwh = ISA_Enum_Opnd_Type_Create("indwh", 8, UNSIGNED, EC_indwh); 00126 ih = ISA_Enum_Opnd_Type_Create("ih", 8, UNSIGNED, EC_ih); 00127 ipwh = ISA_Enum_Opnd_Type_Create("ipwh", 8, UNSIGNED, EC_ipwh); 00128 ldtype = ISA_Enum_Opnd_Type_Create("ldtype", 8, UNSIGNED, EC_ldtype); 00129 sttype = ISA_Enum_Opnd_Type_Create("sttype", 8, UNSIGNED, EC_sttype); 00130 fldtype = ISA_Enum_Opnd_Type_Create("fldtype", 8, UNSIGNED, EC_fldtype); 00131 sem = ISA_Enum_Opnd_Type_Create("sem", 8, UNSIGNED, EC_sem); 00132 mwh = ISA_Enum_Opnd_Type_Create("mwh", 8, UNSIGNED, EC_mwh); 00133 mbtype4 = ISA_Enum_Opnd_Type_Create("mbtype4", 4, UNSIGNED, EC_mbtype4); 00134 sf = ISA_Enum_Opnd_Type_Create("sf", 2, UNSIGNED, EC_sf); 00135 00136 /* Create the literal operand types: 00137 */ 00138 lit1 = ISA_Lit_Opnd_Type_Create("lit1", 1, SIGNED, LC_i1); 00139 lit8 = ISA_Lit_Opnd_Type_Create("lit8", 8, SIGNED, LC_i8); 00140 lit9 = ISA_Lit_Opnd_Type_Create("lit9", 9, SIGNED, LC_i9); 00141 lit14 = ISA_Lit_Opnd_Type_Create("lit14", 14, SIGNED, LC_i14); 00142 lit16 = ISA_Lit_Opnd_Type_Create("lit16", 16, SIGNED, LC_i16); 00143 lit17 = ISA_Lit_Opnd_Type_Create("lit17", 17, SIGNED, LC_i17); 00144 lit22 = ISA_Lit_Opnd_Type_Create("lit22", 22, SIGNED, LC_i22); 00145 lit44 = ISA_Lit_Opnd_Type_Create("lit44", 44, SIGNED, LC_i44); 00146 lit64 = ISA_Lit_Opnd_Type_Create("lit64", 64, SIGNED, LC_i64); 00147 00148 ulit2 = ISA_Lit_Opnd_Type_Create("ulit2", 2, UNSIGNED, LC_k2); 00149 ulit4 = ISA_Lit_Opnd_Type_Create("ulit4", 4, UNSIGNED, LC_k4); 00150 ulit5 = ISA_Lit_Opnd_Type_Create("ulit5", 5, UNSIGNED, LC_k5); 00151 ulit6 = ISA_Lit_Opnd_Type_Create("ulit6", 6, UNSIGNED, LC_k6); 00152 ulit7 = ISA_Lit_Opnd_Type_Create("ulit7", 7, UNSIGNED, LC_k7); 00153 ulit8 = ISA_Lit_Opnd_Type_Create("ulit8", 8, UNSIGNED, LC_k8); 00154 ulit9 = ISA_Lit_Opnd_Type_Create("ulit9", 9, UNSIGNED, LC_k9); 00155 ulit21 = ISA_Lit_Opnd_Type_Create("ulit21", 21, UNSIGNED, LC_k21); 00156 ulit24 = ISA_Lit_Opnd_Type_Create("ulit24", 24, UNSIGNED, LC_k24); 00157 ulit62 = ISA_Lit_Opnd_Type_Create("ulit62", 62, UNSIGNED, LC_k62); 00158 00159 pcrel13 = ISA_Lit_Opnd_Type_Create("pcrel13", 13, PCREL, LC_i13); 00160 pcrel25 = ISA_Lit_Opnd_Type_Create("pcrel25", 25, PCREL, LC_i25); 00161 pcrel64 = ISA_Lit_Opnd_Type_Create("pcrel64", 64, PCREL, LC_i64); 00162 00163 pmpyshr2 = ISA_Lit_Opnd_Type_Create("pmpyshr2", 5, UNSIGNED, LC_pmpyshr2); 00164 fetchadd = ISA_Lit_Opnd_Type_Create("fetchadd", 6, SIGNED, LC_fetchadd); 00165 shfadd = ISA_Lit_Opnd_Type_Create("shfadd", 3, UNSIGNED, LC_shfadd); 00166 pshfadd = ISA_Lit_Opnd_Type_Create("pshfadd", 2, UNSIGNED, LC_pshfadd); 00167 len4 = ISA_Lit_Opnd_Type_Create("len4", 5, UNSIGNED, LC_len4); 00168 len6 = ISA_Lit_Opnd_Type_Create("len6", 7, UNSIGNED, LC_len6); 00169 scmp = ISA_Lit_Opnd_Type_Create("scmp", 9, SIGNED, LC_scmp); 00170 ucmp1 = ISA_Lit_Opnd_Type_Create("ucmp1", 64, UNSIGNED, LC_ucmp1); 00171 ucmp2 = ISA_Lit_Opnd_Type_Create("ucmp2", 64, UNSIGNED, LC_ucmp2); 00172 ucmp3 = ISA_Lit_Opnd_Type_Create("ucmp3", 64, UNSIGNED, LC_ucmp3); 00173 ucmp4 = ISA_Lit_Opnd_Type_Create("ucmp4", 64, UNSIGNED, LC_ucmp4); 00174 00175 /* Create the operand uses: 00176 */ 00177 predicate = Create_Operand_Use("predicate"); 00178 offset = Create_Operand_Use("offset"); 00179 base = Create_Operand_Use("base"); 00180 postincr = Create_Operand_Use("postincr"); 00181 target = Create_Operand_Use("target"); 00182 storeval = Create_Operand_Use("storeval"); 00183 opnd1 = Create_Operand_Use("opnd1"); 00184 opnd2 = Create_Operand_Use("opnd2"); 00185 maddend = Create_Operand_Use("maddend"); 00186 00187 /* ===== ===== */ 00188 Instruction_Group("O_0", 00189 TOP_bsw_0, TOP_bsw_1, TOP_clrrrb, 00190 TOP_clrrrb_pr, TOP_cover, TOP_epc, 00191 TOP_flushrs, TOP_loadrs, TOP_rfi, 00192 TOP_UNDEFINED); 00193 00194 /* ===== (<%pr%p6>) ===== */ 00195 Instruction_Group("O_1", 00196 TOP_fwb, TOP_invala, TOP_mf, 00197 TOP_mf_a, TOP_srlz_d, TOP_srlz_i, 00198 TOP_sync_i, 00199 TOP_UNDEFINED); 00200 Operand(0, pr, predicate); 00201 00202 /* ===== (<%pr%p6>) <f7> ===== */ 00203 Instruction_Group("O_2", 00204 TOP_invala_f_e, 00205 TOP_UNDEFINED); 00206 Operand(0, pr, predicate); 00207 Operand(1, fp64); 00208 00209 /* ===== (<%pr%p6>) <r7> ===== */ 00210 Instruction_Group("O_3", 00211 TOP_fc, TOP_invala_e, TOP_itc_d, 00212 TOP_itc_i, TOP_mov_t_psr, TOP_mov_t_psrum, 00213 TOP_ptc_e, 00214 TOP_UNDEFINED); 00215 Operand(0, pr, predicate); 00216 Operand(1, int64); 00217 00218 /* ===== (<%pr%p6>) <r7>= ===== */ 00219 Instruction_Group("O_4", 00220 TOP_mov_f_ip, TOP_mov_f_pr, TOP_mov_f_psr, 00221 TOP_mov_f_psrum, 00222 TOP_UNDEFINED); 00223 Operand(0, pr, predicate); 00224 Result(0, int64); 00225 00226 /* ===== (<%pr%p6>) <sf2> ===== */ 00227 Instruction_Group("O_5", 00228 TOP_fclrf, 00229 TOP_UNDEFINED); 00230 Operand(0, pr, predicate); 00231 Operand(1, sf); 00232 00233 /* ===== (<%pr%p6>) <imm44> ===== */ 00234 Instruction_Group("O_6", 00235 TOP_mov_t_pr_i, 00236 TOP_UNDEFINED); 00237 Operand(0, pr, predicate); 00238 Operand(1, lit44); 00239 00240 /* ===== <ph>,<dh>,<%tg%b3> ===== */ 00241 Instruction_Group("O_7", 00242 TOP_br_r, 00243 TOP_UNDEFINED); 00244 Operand(0, ph); 00245 Operand(1, dh); 00246 Operand(2, br, target); 00247 00248 /* ===== (<%pr%p6>) <uimm21> ===== */ 00249 Instruction_Group("O_8", 00250 TOP_break, TOP_break_b, TOP_break_f, 00251 TOP_break_i, TOP_break_m, TOP_nop, 00252 TOP_nop_b, TOP_nop_f, TOP_nop_i, 00253 TOP_nop_m, 00254 TOP_UNDEFINED); 00255 Operand(0, pr, predicate); 00256 Operand(1, ulit21); 00257 00258 /* ===== (<%pr%p6>) <uimm24> ===== */ 00259 Instruction_Group("O_9", 00260 TOP_rsm, TOP_rum, TOP_ssm, 00261 TOP_sum, 00262 TOP_UNDEFINED); 00263 Operand(0, pr, predicate); 00264 Operand(1, ulit24); 00265 00266 /* ===== (<%pr%p6>) <uimm62> ===== */ 00267 Instruction_Group("O_10", 00268 TOP_break_x, TOP_nop_x, 00269 TOP_UNDEFINED); 00270 Operand(0, pr, predicate); 00271 Operand(1, ulit62); 00272 00273 /* ===== (<%pr%p6>) <b3>=<r7> ===== */ 00274 Instruction_Group("O_11", 00275 TOP_mov_t_br, 00276 TOP_UNDEFINED); 00277 Operand(0, pr, predicate); 00278 Result(0, br); 00279 Operand(1, int64); 00280 00281 /* ===== (<%pr%p6>) <f7>=<f7> ===== */ 00282 Instruction_Group("O_12", 00283 TOP_fcvt_xf, TOP_mov_f, 00284 TOP_UNDEFINED); 00285 Operand(0, pr, predicate); 00286 Result(0, fp64); 00287 Operand(1, fp64); 00288 00289 /* ===== (<%pr%p6>) <f7>=<r7> ===== */ 00290 Instruction_Group("O_13", 00291 TOP_setf_d, TOP_setf_exp, TOP_setf_s, 00292 TOP_setf_sig, 00293 TOP_UNDEFINED); 00294 Operand(0, pr, predicate); 00295 Result(0, fp64); 00296 Operand(1, int64); 00297 00298 /* ===== (<%pr%p6>) <r7>,<r7> ===== */ 00299 Instruction_Group("O_14", 00300 TOP_ptc_g, TOP_ptc_ga, TOP_ptc_l, 00301 TOP_ptr_d, TOP_ptr_i, 00302 TOP_UNDEFINED); 00303 Operand(0, pr, predicate); 00304 Operand(1, int64); 00305 Operand(2, int64); 00306 00307 /* ===== (<%pr%p6>) <r7>=<b3> ===== */ 00308 Instruction_Group("O_15", 00309 TOP_mov_f_br, 00310 TOP_UNDEFINED); 00311 Operand(0, pr, predicate); 00312 Result(0, int64); 00313 Operand(1, br); 00314 00315 /* ===== (<%pr%p6>) <r7>=<f7> ===== */ 00316 Instruction_Group("O_16", 00317 TOP_getf_d, TOP_getf_exp, TOP_getf_s, 00318 TOP_getf_sig, 00319 TOP_UNDEFINED); 00320 Operand(0, pr, predicate); 00321 Result(0, int64); 00322 Operand(1, fp64); 00323 00324 /* ===== (<%pr%p6>) <r7>=<r7> ===== */ 00325 Instruction_Group("O_17", 00326 TOP_czx1_l, TOP_czx1_r, TOP_czx2_l, 00327 TOP_czx2_r, TOP_mov, TOP_popcnt, 00328 TOP_sxt1, TOP_sxt2, TOP_sxt4, 00329 TOP_tak, TOP_thash, TOP_tpa, 00330 TOP_ttag, TOP_zxt1, TOP_zxt2, 00331 TOP_zxt4, 00332 TOP_UNDEFINED); 00333 Operand(0, pr, predicate); 00334 Result(0, int64); 00335 Operand(1, int64); 00336 00337 /* ===== (<%pr%p6>) <ar7>=<r7> ===== */ 00338 Instruction_Group("O_18", 00339 TOP_mov_t_ar_r, 00340 TOP_UNDEFINED); 00341 Operand(0, pr, predicate); 00342 Result(0, ar); 00343 Operand(1, int64); 00344 00345 /* ===== (<%pr%p6>) <cr7>=<r7> ===== */ 00346 Instruction_Group("O_19", 00347 TOP_mov_t_cr, 00348 TOP_UNDEFINED); 00349 Operand(0, pr, predicate); 00350 Result(0, cr); 00351 Operand(1, int64); 00352 00353 /* ===== (<%pr%p6>) <r7>=<ar7> ===== */ 00354 Instruction_Group("O_20", 00355 TOP_mov_f_ar, 00356 TOP_UNDEFINED); 00357 Operand(0, pr, predicate); 00358 Result(0, int64); 00359 Operand(1, ar); 00360 00361 /* ===== (<%pr%p6>) <r7>=<cr7> ===== */ 00362 Instruction_Group("O_21", 00363 TOP_mov_f_cr, 00364 TOP_UNDEFINED); 00365 Operand(0, pr, predicate); 00366 Result(0, int64); 00367 Operand(1, cr); 00368 00369 /* ===== (<%pr%p6>) <r7>=[<r7>] ===== */ 00370 Instruction_Group("O_22", 00371 TOP_mov_f_cpuid, TOP_mov_f_dbr, TOP_mov_f_ibr, 00372 TOP_mov_f_msr, TOP_mov_f_pkr, TOP_mov_f_pmc, 00373 TOP_mov_f_pmd, TOP_mov_f_rr, 00374 TOP_UNDEFINED); 00375 Operand(0, pr, predicate); 00376 Result(0, int64); 00377 Operand(1, int64); 00378 00379 /* ===== (<%pr%p6>) <ar7>=<imm8> ===== */ 00380 Instruction_Group("O_23", 00381 TOP_mov_t_ar_i, 00382 TOP_UNDEFINED); 00383 Operand(0, pr, predicate); 00384 Result(0, ar); 00385 Operand(1, lit8); 00386 00387 /* ===== (<%pr%p6>) <ar_i7>=<r7> ===== */ 00388 Instruction_Group("O_24", 00389 TOP_mov_t_ar_r_i, 00390 TOP_UNDEFINED); 00391 Operand(0, pr, predicate); 00392 Result(0, ar_i); 00393 Operand(1, int64); 00394 00395 /* ===== (<%pr%p6>) <ar_m7>=<r7> ===== */ 00396 Instruction_Group("O_25", 00397 TOP_mov_t_ar_r_m, 00398 TOP_UNDEFINED); 00399 Operand(0, pr, predicate); 00400 Result(0, ar_m); 00401 Operand(1, int64); 00402 00403 /* ===== (<%pr%p6>) <r7>,<imm17> ===== */ 00404 Instruction_Group("O_26", 00405 TOP_mov_t_pr, 00406 TOP_UNDEFINED); 00407 Operand(0, pr, predicate); 00408 Operand(1, int64); 00409 Operand(2, lit17); 00410 00411 /* ===== (<%pr%p6>) <r7>,<uimm2> ===== */ 00412 Instruction_Group("O_27", 00413 TOP_probe_r_fault, TOP_probe_rw_fault, TOP_probe_w_fault, 00414 TOP_UNDEFINED); 00415 Operand(0, pr, predicate); 00416 Operand(1, int64); 00417 Operand(2, ulit2); 00418 00419 /* ===== (<%pr%p6>) <r7>=<ar_i7> ===== */ 00420 Instruction_Group("O_28", 00421 TOP_mov_f_ar_i, 00422 TOP_UNDEFINED); 00423 Operand(0, pr, predicate); 00424 Result(0, int64); 00425 Operand(1, ar_i); 00426 00427 /* ===== (<%pr%p6>) <r7>=<ar_m7> ===== */ 00428 Instruction_Group("O_29", 00429 TOP_mov_f_ar_m, 00430 TOP_UNDEFINED); 00431 Operand(0, pr, predicate); 00432 Result(0, int64); 00433 Operand(1, ar_m); 00434 00435 /* ===== (<%pr%p6>) <r7>=<imm22> ===== */ 00436 Instruction_Group("O_30", 00437 TOP_mov_i, 00438 TOP_UNDEFINED); 00439 Operand(0, pr, predicate); 00440 Result(0, int64); 00441 Operand(1, lit22); 00442 00443 /* ===== (<%pr%p6>) <f7>=<%o1%f7> ===== */ 00444 Instruction_Group("O_31", 00445 TOP_fabs, TOP_fneg, TOP_fnegabs, 00446 TOP_fpabs, TOP_fpneg, TOP_fpnegabs, 00447 TOP_UNDEFINED); 00448 Operand(0, pr, predicate); 00449 Result(0, fp64); 00450 Operand(1, fp64, opnd1); 00451 00452 /* ===== (<%pr%p6>) <r7>=<@imm64> ===== */ 00453 Instruction_Group("O_32", 00454 TOP_movl, 00455 TOP_UNDEFINED); 00456 Operand(0, pr, predicate); 00457 Result(0, int64); 00458 Operand(1, lit64); 00459 Relocatable(1); 00460 00461 /* ===== <bwh>,<ph>,<dh>,<%tg%b3> ===== */ 00462 Instruction_Group("O_33", 00463 TOP_br_ia, 00464 TOP_UNDEFINED); 00465 Operand(0, bwh); 00466 Operand(1, ph); 00467 Operand(2, dh); 00468 Operand(3, br, target); 00469 00470 /* ===== <ph>,<dh>,<%tg%@pcrel25> ===== */ 00471 Instruction_Group("O_34", 00472 TOP_br, 00473 TOP_UNDEFINED); 00474 Operand(0, ph); 00475 Operand(1, dh); 00476 Operand(2, pcrel25, target); 00477 Relocatable(2); 00478 00479 /* ===== <ph>,<dh>,<%tg%@pcrel64> ===== */ 00480 Instruction_Group("O_35", 00481 TOP_brl, 00482 TOP_UNDEFINED); 00483 Operand(0, ph); 00484 Operand(1, dh); 00485 Operand(2, pcrel64, target); 00486 Relocatable(2); 00487 00488 /* ===== (<%pr%p6>) <ar_i7>=<imm8> ===== */ 00489 Instruction_Group("O_36", 00490 TOP_mov_t_ar_i_i, 00491 TOP_UNDEFINED); 00492 Operand(0, pr, predicate); 00493 Result(0, ar_i); 00494 Operand(1, lit8); 00495 00496 /* ===== (<%pr%p6>) <ar_m7>=<imm8> ===== */ 00497 Instruction_Group("O_37", 00498 TOP_mov_t_ar_i_m, 00499 TOP_UNDEFINED); 00500 Operand(0, pr, predicate); 00501 Result(0, ar_m); 00502 Operand(1, lit8); 00503 00504 /* ===== (<%pr%p6>) <f7>=<f7>,<f7> ===== */ 00505 Instruction_Group("O_38", 00506 TOP_fmerge_ns, TOP_fmerge_s, TOP_fmerge_se, 00507 TOP_fmix_l, TOP_fmix_lr, TOP_fmix_r, 00508 TOP_fpack, TOP_fpmerge_ns, TOP_fpmerge_s, 00509 TOP_fpmerge_se, TOP_fswap, TOP_fswap_nl, 00510 TOP_fswap_nr, TOP_fsxt_l, TOP_fsxt_r, 00511 TOP_UNDEFINED); 00512 Operand(0, pr, predicate); 00513 Result(0, fp64); 00514 Operand(1, fp64); 00515 Operand(2, fp64); 00516 00517 /* ===== (<%pr%p6>) <p6>,<p6>=<r7> ===== */ 00518 Instruction_Group("O_39", 00519 TOP_tnat_nz, TOP_tnat_nz_and, TOP_tnat_nz_or, 00520 TOP_tnat_nz_or_andcm, TOP_tnat_nz_unc, TOP_tnat_z, 00521 TOP_tnat_z_and, TOP_tnat_z_or, TOP_tnat_z_or_andcm, 00522 TOP_tnat_z_unc, 00523 TOP_UNDEFINED); 00524 Operand(0, pr, predicate); 00525 Result(0, pr); 00526 Result(1, pr); 00527 Operand(1, int64); 00528 00529 /* ===== (<%pr%p6>) <r7>=<r7>,<r7> ===== */ 00530 Instruction_Group("O_40", 00531 TOP_add_1, TOP_mix1_l, TOP_mix1_r, 00532 TOP_mix2_l, TOP_mix2_r, TOP_mix4_l, 00533 TOP_mix4_r, TOP_pack2_sss, TOP_pack2_uss, 00534 TOP_pack4_sss, TOP_pavg1, TOP_pavg1_raz, 00535 TOP_pavg2, TOP_pavg2_raz, TOP_pavgsub1, 00536 TOP_pavgsub2, TOP_probe_r, TOP_probe_w, 00537 TOP_psad1, TOP_sub_1, TOP_unpack1_h, 00538 TOP_unpack1_l, TOP_unpack2_h, TOP_unpack2_l, 00539 TOP_unpack4_h, TOP_unpack4_l, 00540 TOP_UNDEFINED); 00541 Operand(0, pr, predicate); 00542 Result(0, int64); 00543 Operand(1, int64); 00544 Operand(2, int64); 00545 00546 /* ===== (<%pr%p6>) [<r7>]<eq><r7> ===== */ 00547 Instruction_Group("O_41", 00548 TOP_itr_d, TOP_itr_i, TOP_mov_t_dbr, 00549 TOP_mov_t_ibr, TOP_mov_t_msr, TOP_mov_t_pkr, 00550 TOP_mov_t_pmc, TOP_mov_t_pmd, TOP_mov_t_rr, 00551 TOP_UNDEFINED); 00552 Operand(0, pr, predicate); 00553 Operand(1, int64); 00554 Operand(2, int64); 00555 00556 /* ===== (<%pr%p6>) <f7>=<sf2>,<f7> ===== */ 00557 Instruction_Group("O_42", 00558 TOP_fcvt_fx, TOP_fcvt_fx_trunc, TOP_fcvt_fxu, 00559 TOP_fcvt_fxu_trunc, TOP_fcvt_xuf, TOP_fcvt_xuf_d, 00560 TOP_fcvt_xuf_s, TOP_fnorm, TOP_fnorm_d, 00561 TOP_fnorm_s, TOP_fpcvt_fx, TOP_fpcvt_fx_trunc, 00562 TOP_fpcvt_fxu, TOP_fpcvt_fxu_trunc, 00563 TOP_UNDEFINED); 00564 Operand(0, pr, predicate); 00565 Result(0, fp64); 00566 Operand(1, sf); 00567 Operand(2, fp64); 00568 00569 /* ===== <indwh>,<ih>,<b3>,<pcrel13> ===== */ 00570 Instruction_Group("O_43", 00571 TOP_brp_ret, TOP_brp_r, 00572 TOP_UNDEFINED); 00573 Operand(0, indwh); 00574 Operand(1, ih); 00575 Operand(2, br); 00576 Operand(3, pcrel13); 00577 00578 /* ===== (<%pr%p6>) <r7>=<r7>,<uimm2> ===== */ 00579 Instruction_Group("O_44", 00580 TOP_probe_i_r, TOP_probe_i_w, 00581 TOP_UNDEFINED); 00582 Operand(0, pr, predicate); 00583 Result(0, int64); 00584 Operand(1, int64); 00585 Operand(2, ulit2); 00586 00587 /* ===== (<%pr%p6>) <r7>=<r7>,<uimm8> ===== */ 00588 Instruction_Group("O_45", 00589 TOP_mux2, 00590 TOP_UNDEFINED); 00591 Operand(0, pr, predicate); 00592 Result(0, int64); 00593 Operand(1, int64); 00594 Operand(2, ulit8); 00595 00596 /* ===== <r7>=<uimm7>,<uimm7>,<uimm4> ===== */ 00597 Instruction_Group("O_46", 00598 TOP_alloc_3, 00599 TOP_UNDEFINED); 00600 Result(0, int64); 00601 Operand(0, ulit7); 00602 Operand(1, ulit7); 00603 Operand(2, ulit4); 00604 00605 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%r7> ===== */ 00606 Instruction_Group("O_47", 00607 TOP_cmp4_z2_ge_and, TOP_cmp4_z2_ge_and_orcm, TOP_cmp4_z2_ge_andcm, 00608 TOP_cmp4_z2_ge_or, TOP_cmp4_z2_ge_or_andcm, TOP_cmp4_z2_ge_orcm, 00609 TOP_cmp4_z2_gt_and, TOP_cmp4_z2_gt_and_orcm, TOP_cmp4_z2_gt_andcm, 00610 TOP_cmp4_z2_gt_or, TOP_cmp4_z2_gt_or_andcm, TOP_cmp4_z2_gt_orcm, 00611 TOP_cmp4_z2_le_and, TOP_cmp4_z2_le_and_orcm, TOP_cmp4_z2_le_andcm, 00612 TOP_cmp4_z2_le_or, TOP_cmp4_z2_le_or_andcm, TOP_cmp4_z2_le_orcm, 00613 TOP_cmp4_z2_lt_and, TOP_cmp4_z2_lt_and_orcm, TOP_cmp4_z2_lt_andcm, 00614 TOP_cmp4_z2_lt_or, TOP_cmp4_z2_lt_or_andcm, TOP_cmp4_z2_lt_orcm, 00615 TOP_cmp_z2_ge_and, TOP_cmp_z2_ge_and_orcm, TOP_cmp_z2_ge_andcm, 00616 TOP_cmp_z2_ge_or, TOP_cmp_z2_ge_or_andcm, TOP_cmp_z2_ge_orcm, 00617 TOP_cmp_z2_gt_and, TOP_cmp_z2_gt_and_orcm, TOP_cmp_z2_gt_andcm, 00618 TOP_cmp_z2_gt_or, TOP_cmp_z2_gt_or_andcm, TOP_cmp_z2_gt_orcm, 00619 TOP_cmp_z2_le_and, TOP_cmp_z2_le_and_orcm, TOP_cmp_z2_le_andcm, 00620 TOP_cmp_z2_le_or, TOP_cmp_z2_le_or_andcm, TOP_cmp_z2_le_orcm, 00621 TOP_cmp_z2_lt_and, TOP_cmp_z2_lt_and_orcm, TOP_cmp_z2_lt_andcm, 00622 TOP_cmp_z2_lt_or, TOP_cmp_z2_lt_or_andcm, TOP_cmp_z2_lt_orcm, 00623 TOP_UNDEFINED); 00624 Operand(0, pr, predicate); 00625 Result(0, pr); 00626 Result(1, pr); 00627 Operand(1, int64, opnd1); 00628 00629 /* ===== (<%pr%p6>) <p6>,<p6>=<%o2%r7> ===== */ 00630 Instruction_Group("O_48", 00631 TOP_cmp4_z1_ge_and, TOP_cmp4_z1_ge_and_orcm, TOP_cmp4_z1_ge_andcm, 00632 TOP_cmp4_z1_ge_or, TOP_cmp4_z1_ge_or_andcm, TOP_cmp4_z1_ge_orcm, 00633 TOP_cmp4_z1_gt_and, TOP_cmp4_z1_gt_and_orcm, TOP_cmp4_z1_gt_andcm, 00634 TOP_cmp4_z1_gt_or, TOP_cmp4_z1_gt_or_andcm, TOP_cmp4_z1_gt_orcm, 00635 TOP_cmp4_z1_le_and, TOP_cmp4_z1_le_and_orcm, TOP_cmp4_z1_le_andcm, 00636 TOP_cmp4_z1_le_or, TOP_cmp4_z1_le_or_andcm, TOP_cmp4_z1_le_orcm, 00637 TOP_cmp4_z1_lt_and, TOP_cmp4_z1_lt_and_orcm, TOP_cmp4_z1_lt_andcm, 00638 TOP_cmp4_z1_lt_or, TOP_cmp4_z1_lt_or_andcm, TOP_cmp4_z1_lt_orcm, 00639 TOP_cmp_z1_ge_and, TOP_cmp_z1_ge_and_orcm, TOP_cmp_z1_ge_andcm, 00640 TOP_cmp_z1_ge_or, TOP_cmp_z1_ge_or_andcm, TOP_cmp_z1_ge_orcm, 00641 TOP_cmp_z1_gt_and, TOP_cmp_z1_gt_and_orcm, TOP_cmp_z1_gt_andcm, 00642 TOP_cmp_z1_gt_or, TOP_cmp_z1_gt_or_andcm, TOP_cmp_z1_gt_orcm, 00643 TOP_cmp_z1_le_and, TOP_cmp_z1_le_and_orcm, TOP_cmp_z1_le_andcm, 00644 TOP_cmp_z1_le_or, TOP_cmp_z1_le_or_andcm, TOP_cmp_z1_le_orcm, 00645 TOP_cmp_z1_lt_and, TOP_cmp_z1_lt_and_orcm, TOP_cmp_z1_lt_andcm, 00646 TOP_cmp_z1_lt_or, TOP_cmp_z1_lt_or_andcm, TOP_cmp_z1_lt_orcm, 00647 TOP_UNDEFINED); 00648 Operand(0, pr, predicate); 00649 Result(0, pr); 00650 Result(1, pr); 00651 Operand(1, int64, opnd2); 00652 00653 /* ===== (<%pr%p6>) <f7>,<%tg%@pcrel25> ===== */ 00654 Instruction_Group("O_49", 00655 TOP_chk_f_s, 00656 TOP_UNDEFINED); 00657 Operand(0, pr, predicate); 00658 Operand(1, fp64); 00659 Operand(2, pcrel25, target); 00660 Relocatable(2); 00661 00662 /* ===== (<%pr%p6>) <f7>=<f7>,<f7>,<f7> ===== */ 00663 Instruction_Group("O_50", 00664 TOP_fselect, 00665 TOP_UNDEFINED); 00666 Operand(0, pr, predicate); 00667 Result(0, fp64); 00668 Operand(1, fp64); 00669 Operand(2, fp64); 00670 Operand(3, fp64); 00671 00672 /* ===== (<%pr%p6>) <lfhint>,[<%bs%r7>] ===== */ 00673 Instruction_Group("O_51", 00674 TOP_lfetch, TOP_lfetch_excl, TOP_lfetch_fault, 00675 TOP_lfetch_fault_excl, 00676 TOP_UNDEFINED); 00677 Operand(0, pr, predicate); 00678 Operand(1, lfhint); 00679 Operand(2, int64, base); 00680 00681 /* ===== (<%pr%p6>) <r7>,<%tg%@pcrel25> ===== */ 00682 Instruction_Group("O_52", 00683 TOP_chk_s, TOP_chk_s_i, TOP_chk_s_m, 00684 TOP_UNDEFINED); 00685 Operand(0, pr, predicate); 00686 Operand(1, int64); 00687 Operand(2, pcrel25, target); 00688 Relocatable(2); 00689 00690 /* ===== (<%pr%p6>) <r7>=<r7>,<mbtype4> ===== */ 00691 Instruction_Group("O_53", 00692 TOP_mux1, 00693 TOP_UNDEFINED); 00694 Operand(0, pr, predicate); 00695 Result(0, int64); 00696 Operand(1, int64); 00697 Operand(2, mbtype4); 00698 00699 /* ===== <bwh>,<ph>,<dh>,<%tg%@pcrel25> ===== */ 00700 Instruction_Group("O_54", 00701 TOP_br_cloop, 00702 TOP_UNDEFINED); 00703 Result(0, lc); 00704 Operand(0, bwh); 00705 Operand(1, ph); 00706 Operand(2, dh); 00707 Operand(3, pcrel25, target); 00708 Relocatable(3); 00709 Operand(4, lc); 00710 00711 /* ===== <bwh>,<ph>,<dh>,<%tg%@pcrel25> ===== */ 00712 Instruction_Group("O_55", 00713 TOP_br_cexit, TOP_br_ctop, 00714 TOP_UNDEFINED); 00715 Result(0, ec); 00716 Result(1, lc); 00717 Operand(0, bwh); 00718 Operand(1, ph); 00719 Operand(2, dh); 00720 Operand(3, pcrel25, target); 00721 Relocatable(3); 00722 Operand(4, ec); 00723 Operand(5, lc); 00724 00725 /* ===== (<%pr%p6>) <f7>,<p6>=<sf2>,<f7> ===== */ 00726 Instruction_Group("O_56", 00727 TOP_fprsqrta, TOP_frsqrta, 00728 TOP_UNDEFINED); 00729 Operand(0, pr, predicate); 00730 Result(0, fp64); 00731 Result(1, pr); 00732 Operand(1, sf); 00733 Operand(2, fp64); 00734 00735 /* ===== (<%pr%p6>) <sf2>,<%tg%@pcrel25> ===== */ 00736 Instruction_Group("O_57", 00737 TOP_fchkf, 00738 TOP_UNDEFINED); 00739 Operand(0, pr, predicate); 00740 Operand(1, sf); 00741 Operand(2, pcrel25, target); 00742 Relocatable(2); 00743 00744 /* ===== (<%pr%p6>) <sf2>,<uimm7>,<uimm7> ===== */ 00745 Instruction_Group("O_58", 00746 TOP_fsetc, 00747 TOP_UNDEFINED); 00748 Operand(0, pr, predicate); 00749 Operand(1, sf); 00750 Operand(2, ulit7); 00751 Operand(3, ulit7); 00752 00753 /* ===== <ipwh>,<ih>,<@pcrel25>,<pcrel13> ===== */ 00754 Instruction_Group("O_59", 00755 TOP_brp, 00756 TOP_UNDEFINED); 00757 Operand(0, ipwh); 00758 Operand(1, ih); 00759 Operand(2, pcrel25); 00760 Relocatable(2); 00761 Operand(3, pcrel13); 00762 00763 /* ===== (<%pr%p6>) <f7>=<%o1%f7>,<%o2%f7> ===== */ 00764 Instruction_Group("O_60", 00765 TOP_fand, TOP_fandcm, TOP_for, 00766 TOP_fxor, TOP_xmpy_h, TOP_xmpy_hu, 00767 TOP_xmpy_l, TOP_xmpy_lu, 00768 TOP_UNDEFINED); 00769 Operand(0, pr, predicate); 00770 Result(0, fp64); 00771 Operand(1, fp64, opnd1); 00772 Operand(2, fp64, opnd2); 00773 00774 /* ===== (<%pr%p6>) <p6>,<p6>=<f7>,<uimm9> ===== */ 00775 Instruction_Group("O_61", 00776 TOP_fclass_m, TOP_fclass_m_unc, TOP_fclass_nm, 00777 TOP_fclass_nm_unc, 00778 TOP_UNDEFINED); 00779 Operand(0, pr, predicate); 00780 Result(0, pr); 00781 Result(1, pr); 00782 Operand(1, fp64); 00783 Operand(2, ulit9); 00784 00785 /* ===== (<%pr%p6>) <p6>,<p6>=<r7>,<uimm6> ===== */ 00786 Instruction_Group("O_62", 00787 TOP_tbit_nz, TOP_tbit_nz_and, TOP_tbit_nz_or, 00788 TOP_tbit_nz_or_andcm, TOP_tbit_nz_unc, TOP_tbit_z, 00789 TOP_tbit_z_and, TOP_tbit_z_or, TOP_tbit_z_or_andcm, 00790 TOP_tbit_z_unc, 00791 TOP_UNDEFINED); 00792 Operand(0, pr, predicate); 00793 Result(0, pr); 00794 Result(1, pr); 00795 Operand(1, int64); 00796 Operand(2, ulit6); 00797 00798 /* ===== (<%pr%p6>) <r7>=<%o1%r7>,<%o2%r7> ===== */ 00799 Instruction_Group("O_63", 00800 TOP_add, TOP_addp4, TOP_and, 00801 TOP_andcm, TOP_or, TOP_padd1, 00802 TOP_padd1_sss, TOP_padd1_uus, TOP_padd1_uuu, 00803 TOP_padd2, TOP_padd2_sss, TOP_padd2_uus, 00804 TOP_padd2_uuu, TOP_padd4, TOP_pcmp1_eq, 00805 TOP_pcmp1_gt, TOP_pcmp2_eq, TOP_pcmp2_gt, 00806 TOP_pcmp4_eq, TOP_pcmp4_gt, TOP_pmax1_u, 00807 TOP_pmax2, TOP_pmin1_u, TOP_pmin2, 00808 TOP_pmpy2_l, TOP_pmpy2_r, TOP_pshl2, 00809 TOP_pshl4, TOP_pshr2, TOP_pshr2_u, 00810 TOP_pshr4, TOP_pshr4_u, TOP_psub1, 00811 TOP_psub1_sss, TOP_psub1_uus, TOP_psub1_uuu, 00812 TOP_psub2, TOP_psub2_sss, TOP_psub2_uus, 00813 TOP_psub2_uuu, TOP_psub4, TOP_shl, 00814 TOP_shr, TOP_shr_u, TOP_sub, 00815 TOP_xor, 00816 TOP_UNDEFINED); 00817 Operand(0, pr, predicate); 00818 Result(0, int64); 00819 Operand(1, int64, opnd1); 00820 Operand(2, int64, opnd2); 00821 00822 /* ===== (<%pr%p6>) <r7>=<r7>,<r7>,<uimm6> ===== */ 00823 Instruction_Group("O_64", 00824 TOP_shrp, 00825 TOP_UNDEFINED); 00826 Operand(0, pr, predicate); 00827 Result(0, int64); 00828 Operand(1, int64); 00829 Operand(2, int64); 00830 Operand(3, ulit6); 00831 00832 /* ===== (<%pr%p6>) <r7>=<r7>,<shfadd>,<r7> ===== */ 00833 Instruction_Group("O_65", 00834 TOP_shladd, TOP_shladdp4, 00835 TOP_UNDEFINED); 00836 Operand(0, pr, predicate); 00837 Result(0, int64); 00838 Operand(1, int64); 00839 Operand(2, shfadd); 00840 Operand(3, int64); 00841 00842 /* ===== (<%pr%p6>) <bwh>,<ph>,<dh>,<%tg%b3> ===== */ 00843 Instruction_Group("O_66", 00844 TOP_br_ret, TOP_br_r_cond, 00845 TOP_UNDEFINED); 00846 Operand(0, pr, predicate); 00847 Operand(1, bwh); 00848 Operand(2, ph); 00849 Operand(3, dh); 00850 Operand(4, br, target); 00851 00852 /* ===== (<%pr%p6>) <f7>=<ldhint>,[<%bs%r7>] ===== */ 00853 Instruction_Group("O_67", 00854 TOP_ldf_fill, 00855 TOP_UNDEFINED); 00856 Operand(0, pr, predicate); 00857 Result(0, fp64); 00858 Operand(1, ldhint); 00859 Operand(2, int64, base); 00860 00861 /* ===== (<%pr%p6>) <r7>=<%o1%imm8>,<%o2%r7> ===== */ 00862 Instruction_Group("O_68", 00863 TOP_and_i, TOP_andcm_i, TOP_or_i, 00864 TOP_sub_i, TOP_xor_i, 00865 TOP_UNDEFINED); 00866 Operand(0, pr, predicate); 00867 Result(0, int64); 00868 Operand(1, lit8, opnd1); 00869 Operand(2, int64, opnd2); 00870 00871 /* ===== (<%pr%p6>) <r7>=<ldhint>,[<%bs%r7>] ===== */ 00872 Instruction_Group("O_69", 00873 TOP_ld8_fill, 00874 TOP_UNDEFINED); 00875 Operand(0, pr, predicate); 00876 Result(0, int64); 00877 Operand(1, ldhint); 00878 Operand(2, int64, base); 00879 00880 /* ===== (<%pr%p6>) <r7>=<r7>,<pshfadd>,<r7> ===== */ 00881 Instruction_Group("O_70", 00882 TOP_pshladd2, TOP_pshradd2, 00883 TOP_UNDEFINED); 00884 Operand(0, pr, predicate); 00885 Result(0, int64); 00886 Operand(1, int64); 00887 Operand(2, pshfadd); 00888 Operand(3, int64); 00889 00890 /* ===== (<%pr%p6>) <r7>=<r7>,<uimm6>,<len6> ===== */ 00891 Instruction_Group("O_71", 00892 TOP_dep_z, TOP_extr, TOP_extr_u, 00893 TOP_UNDEFINED); 00894 Operand(0, pr, predicate); 00895 Result(0, int64); 00896 Operand(1, int64); 00897 Operand(2, ulit6); 00898 Operand(3, len6); 00899 00900 /* ===== (<%pr%p6>) <f7>,<p6>=<sf2>,<f7>,<f7> ===== */ 00901 Instruction_Group("O_72", 00902 TOP_fprcpa, TOP_frcpa, 00903 TOP_UNDEFINED); 00904 Operand(0, pr, predicate); 00905 Result(0, fp64); 00906 Result(1, pr); 00907 Operand(1, sf); 00908 Operand(2, fp64); 00909 Operand(3, fp64); 00910 00911 /* ===== (<%pr%p6>) <r7>=<%o1%imm14>,<%o2%r7> ===== */ 00912 Instruction_Group("O_73", 00913 TOP_addp4_i, 00914 TOP_UNDEFINED); 00915 Operand(0, pr, predicate); 00916 Result(0, int64); 00917 Operand(1, lit14, opnd1); 00918 Operand(2, int64, opnd2); 00919 00920 /* ===== (<%pr%p6>) <r7>=<%o1%r7>,<%o2%uimm5> ===== */ 00921 Instruction_Group("O_74", 00922 TOP_pshl2_i, TOP_pshl4_i, TOP_pshr2_i, 00923 TOP_pshr2_i_u, TOP_pshr4_i, TOP_pshr4_i_u, 00924 TOP_UNDEFINED); 00925 Operand(0, pr, predicate); 00926 Result(0, int64); 00927 Operand(1, int64, opnd1); 00928 Operand(2, ulit5, opnd2); 00929 00930 /* ===== (<%pr%p6>) <r7>=<%o1%r7>,<%o2%uimm6> ===== */ 00931 Instruction_Group("O_75", 00932 TOP_shl_i, TOP_shr_i, TOP_shr_i_u, 00933 TOP_UNDEFINED); 00934 Operand(0, pr, predicate); 00935 Result(0, int64); 00936 Operand(1, int64, opnd1); 00937 Operand(2, ulit6, opnd2); 00938 00939 /* ===== (<%pr%p6>) <r7>=<r7>,<r7>,<pmpyshr2> ===== */ 00940 Instruction_Group("O_76", 00941 TOP_pmpyshr2, TOP_pmpyshr2_u, 00942 TOP_UNDEFINED); 00943 Operand(0, pr, predicate); 00944 Result(0, int64); 00945 Operand(1, int64); 00946 Operand(2, int64); 00947 Operand(3, pmpyshr2); 00948 00949 /* ===== <r7>=<uimm7>,<uimm7>,<uimm7>,<uimm7> ===== */ 00950 Instruction_Group("O_77", 00951 TOP_alloc, 00952 TOP_UNDEFINED); 00953 Result(0, int64); 00954 Operand(0, ulit7); 00955 Operand(1, ulit7); 00956 Operand(2, ulit7); 00957 Operand(3, ulit7); 00958 00959 /* ===== (<%pr%p6>) <aclr>,<f7>,<%tg%@pcrel25> ===== */ 00960 Instruction_Group("O_78", 00961 TOP_chk_f_a, 00962 TOP_UNDEFINED); 00963 Operand(0, pr, predicate); 00964 Operand(1, aclr); 00965 Operand(2, fp64); 00966 Operand(3, pcrel25, target); 00967 Relocatable(3); 00968 00969 /* ===== (<%pr%p6>) <aclr>,<r7>,<%tg%@pcrel25> ===== */ 00970 Instruction_Group("O_79", 00971 TOP_chk_a, 00972 TOP_UNDEFINED); 00973 Operand(0, pr, predicate); 00974 Operand(1, aclr); 00975 Operand(2, int64); 00976 Operand(3, pcrel25, target); 00977 Relocatable(3); 00978 00979 /* ===== (<%pr%p6>) <r7>=<%o1%@imm14>,<%o2%r7> ===== */ 00980 Instruction_Group("O_80", 00981 TOP_adds, 00982 TOP_UNDEFINED); 00983 Operand(0, pr, predicate); 00984 Result(0, int64); 00985 Operand(1, lit14, opnd1); 00986 Relocatable(1); 00987 Operand(2, int64, opnd2); 00988 00989 /* ===== (<%pr%p6>) <r7>=<%o1%@imm22>,<%o2%r2> ===== */ 00990 Instruction_Group("O_81", 00991 TOP_addl, 00992 TOP_UNDEFINED); 00993 Operand(0, pr, predicate); 00994 Result(0, int64); 00995 Operand(1, lit22, opnd1); 00996 Relocatable(1); 00997 Operand(2, addl, opnd2); 00998 00999 /* ===== (<%pr%p6>) <r7>=<imm8>,<uimm6>,<len6> ===== */ 01000 Instruction_Group("O_82", 01001 TOP_dep_i_z, 01002 TOP_UNDEFINED); 01003 Operand(0, pr, predicate); 01004 Result(0, int64); 01005 Operand(1, lit8); 01006 Operand(2, ulit6); 01007 Operand(3, len6); 01008 01009 /* ===== (<%pr%p6>) <f7>=<sf2><%o1%f7>,<%o2%f7> ===== */ 01010 Instruction_Group("O_83", 01011 TOP_famax, TOP_famin, 01012 TOP_UNDEFINED); 01013 Operand(0, pr, predicate); 01014 Result(0, fp64); 01015 Operand(1, sf); 01016 Operand(2, fp64, opnd1); 01017 Operand(3, fp64, opnd2); 01018 01019 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%r7>,<%o2%r7> ===== */ 01020 Instruction_Group("O_84", 01021 TOP_cmp_eq, TOP_cmp_eq_and, TOP_cmp_eq_and_orcm, 01022 TOP_cmp_eq_andcm, TOP_cmp_eq_or, TOP_cmp_eq_or_andcm, 01023 TOP_cmp_eq_orcm, TOP_cmp_eq_unc, TOP_cmp_ge, 01024 TOP_cmp_ge_and, TOP_cmp_ge_and_orcm, TOP_cmp_ge_andcm, 01025 TOP_cmp_ge_or, TOP_cmp_ge_or_andcm, TOP_cmp_ge_orcm, 01026 TOP_cmp_ge_unc, TOP_cmp_geu, TOP_cmp_geu_unc, 01027 TOP_cmp_gt, TOP_cmp_gt_and, TOP_cmp_gt_and_orcm, 01028 TOP_cmp_gt_andcm, TOP_cmp_gt_or, TOP_cmp_gt_or_andcm, 01029 TOP_cmp_gt_orcm, TOP_cmp_gt_unc, TOP_cmp_gtu, 01030 TOP_cmp_gtu_unc, TOP_cmp_le, TOP_cmp_le_and, 01031 TOP_cmp_le_and_orcm, TOP_cmp_le_andcm, TOP_cmp_le_or, 01032 TOP_cmp_le_or_andcm, TOP_cmp_le_orcm, TOP_cmp_le_unc, 01033 TOP_cmp_leu, TOP_cmp_leu_unc, TOP_cmp_lt, 01034 TOP_cmp_lt_and, TOP_cmp_lt_and_orcm, TOP_cmp_lt_andcm, 01035 TOP_cmp_lt_or, TOP_cmp_lt_or_andcm, TOP_cmp_lt_orcm, 01036 TOP_cmp_lt_unc, TOP_cmp_ltu, TOP_cmp_ltu_unc, 01037 TOP_cmp_ne, TOP_cmp_ne_and, TOP_cmp_ne_and_orcm, 01038 TOP_cmp_ne_andcm, TOP_cmp_ne_or, TOP_cmp_ne_or_andcm, 01039 TOP_cmp_ne_orcm, TOP_cmp_ne_unc, TOP_cmp4_eq, 01040 TOP_cmp4_eq_and, TOP_cmp4_eq_and_orcm, TOP_cmp4_eq_andcm, 01041 TOP_cmp4_eq_or, TOP_cmp4_eq_or_andcm, TOP_cmp4_eq_orcm, 01042 TOP_cmp4_eq_unc, TOP_cmp4_ge, TOP_cmp4_ge_and, 01043 TOP_cmp4_ge_and_orcm, TOP_cmp4_ge_andcm, TOP_cmp4_ge_or, 01044 TOP_cmp4_ge_or_andcm, TOP_cmp4_ge_orcm, TOP_cmp4_ge_unc, 01045 TOP_cmp4_geu, TOP_cmp4_geu_unc, TOP_cmp4_gt, 01046 TOP_cmp4_gt_and, TOP_cmp4_gt_and_orcm, TOP_cmp4_gt_andcm, 01047 TOP_cmp4_gt_or, TOP_cmp4_gt_or_andcm, TOP_cmp4_gt_orcm, 01048 TOP_cmp4_gt_unc, TOP_cmp4_gtu, TOP_cmp4_gtu_unc, 01049 TOP_cmp4_le, TOP_cmp4_le_and, TOP_cmp4_le_and_orcm, 01050 TOP_cmp4_le_andcm, TOP_cmp4_le_or, TOP_cmp4_le_or_andcm, 01051 TOP_cmp4_le_orcm, TOP_cmp4_le_unc, TOP_cmp4_leu, 01052 TOP_cmp4_leu_unc, TOP_cmp4_lt, TOP_cmp4_lt_and, 01053 TOP_cmp4_lt_and_orcm, TOP_cmp4_lt_andcm, TOP_cmp4_lt_or, 01054 TOP_cmp4_lt_or_andcm, TOP_cmp4_lt_orcm, TOP_cmp4_lt_unc, 01055 TOP_cmp4_ltu, TOP_cmp4_ltu_unc, TOP_cmp4_ne, 01056 TOP_cmp4_ne_and, TOP_cmp4_ne_and_orcm, TOP_cmp4_ne_andcm, 01057 TOP_cmp4_ne_or, TOP_cmp4_ne_or_andcm, TOP_cmp4_ne_orcm, 01058 TOP_cmp4_ne_unc, 01059 TOP_UNDEFINED); 01060 Operand(0, pr, predicate); 01061 Result(0, pr); 01062 Result(1, pr); 01063 Operand(1, int64, opnd1); 01064 Operand(2, int64, opnd2); 01065 01066 /* ===== (<%pr%p6>) <f7>=<sf2>,<%o1%f7>,<%o2%f7> ===== */ 01067 Instruction_Group("O_85", 01068 TOP_fadd, TOP_fadd_d, TOP_fadd_s, 01069 TOP_fmax, TOP_fmin, TOP_fmpy, 01070 TOP_fmpy_d, TOP_fmpy_s, TOP_fnmpy, 01071 TOP_fnmpy_d, TOP_fnmpy_s, TOP_fpamax, 01072 TOP_fpamin, TOP_fpcmp_eq, TOP_fpcmp_ge, 01073 TOP_fpcmp_gt, TOP_fpcmp_le, TOP_fpcmp_lt, 01074 TOP_fpcmp_neq, TOP_fpcmp_nge, TOP_fpcmp_ngt, 01075 TOP_fpcmp_nle, TOP_fpcmp_nlt, TOP_fpcmp_ord, 01076 TOP_fpcmp_unord, TOP_fpmax, TOP_fpmin, 01077 TOP_fpmpy, TOP_fpnmpy, TOP_fsub, 01078 TOP_fsub_d, TOP_fsub_s, 01079 TOP_UNDEFINED); 01080 Operand(0, pr, predicate); 01081 Result(0, fp64); 01082 Operand(1, sf); 01083 Operand(2, fp64, opnd1); 01084 Operand(3, fp64, opnd2); 01085 01086 /* ===== (<%pr%p6>) <lfhint>,[<%bs%r7>],<%pi%r7> ===== */ 01087 Instruction_Group("O_86", 01088 TOP_lfetch_r, TOP_lfetch_r_excl, TOP_lfetch_r_fault, 01089 TOP_lfetch_r_fault_excl, 01090 TOP_UNDEFINED); 01091 Operand(0, pr, predicate); 01092 Result(0, int64); 01093 Operand(1, lfhint); 01094 Operand(2, int64, base); 01095 Operand(3, int64, postincr); 01096 01097 /* ===== (<%pr%p6>) <b3>=<bwh>,<ph>,<dh>,<%tg%b3> ===== */ 01098 Instruction_Group("O_87", 01099 TOP_br_r_call, 01100 TOP_UNDEFINED); 01101 Operand(0, pr, predicate); 01102 Result(0, br); 01103 Operand(1, bwh); 01104 Operand(2, ph); 01105 Operand(3, dh); 01106 Operand(4, br, target); 01107 Operand(5, ec); 01108 01109 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%imm8>,<%o2%r7> ===== */ 01110 Instruction_Group("O_88", 01111 TOP_cmp4_i_eq, TOP_cmp4_i_eq_and, TOP_cmp4_i_eq_and_orcm, 01112 TOP_cmp4_i_eq_andcm, TOP_cmp4_i_eq_or, TOP_cmp4_i_eq_or_andcm, 01113 TOP_cmp4_i_eq_orcm, TOP_cmp4_i_eq_unc, TOP_cmp4_i_ge, 01114 TOP_cmp4_i_ge_unc, TOP_cmp4_i_lt, TOP_cmp4_i_lt_unc, 01115 TOP_cmp4_i_ne, TOP_cmp4_i_ne_and, TOP_cmp4_i_ne_and_orcm, 01116 TOP_cmp4_i_ne_andcm, TOP_cmp4_i_ne_or, TOP_cmp4_i_ne_or_andcm, 01117 TOP_cmp4_i_ne_orcm, TOP_cmp4_i_ne_unc, TOP_cmp_i_eq, 01118 TOP_cmp_i_eq_and, TOP_cmp_i_eq_and_orcm, TOP_cmp_i_eq_andcm, 01119 TOP_cmp_i_eq_or, TOP_cmp_i_eq_or_andcm, TOP_cmp_i_eq_orcm, 01120 TOP_cmp_i_eq_unc, TOP_cmp_i_ge, TOP_cmp_i_ge_unc, 01121 TOP_cmp_i_lt, TOP_cmp_i_lt_unc, TOP_cmp_i_ne, 01122 TOP_cmp_i_ne_and, TOP_cmp_i_ne_and_orcm, TOP_cmp_i_ne_andcm, 01123 TOP_cmp_i_ne_or, TOP_cmp_i_ne_or_andcm, TOP_cmp_i_ne_orcm, 01124 TOP_cmp_i_ne_unc, 01125 TOP_UNDEFINED); 01126 Operand(0, pr, predicate); 01127 Result(0, pr); 01128 Result(1, pr); 01129 Operand(1, lit8, opnd1); 01130 Operand(2, int64, opnd2); 01131 01132 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%scmp>,<%o2%r7> ===== */ 01133 Instruction_Group("O_89", 01134 TOP_cmp4_i_gt, TOP_cmp4_i_gt_unc, TOP_cmp4_i_le, 01135 TOP_cmp4_i_le_unc, TOP_cmp_i_gt, TOP_cmp_i_gt_unc, 01136 TOP_cmp_i_le, TOP_cmp_i_le_unc, 01137 TOP_UNDEFINED); 01138 Operand(0, pr, predicate); 01139 Result(0, pr); 01140 Result(1, pr); 01141 Operand(1, scmp, opnd1); 01142 Operand(2, int64, opnd2); 01143 01144 /* ===== (<%pr%p6>) <r7>=<ldhint>,[<%bs%r7>],<r7> ===== */ 01145 Instruction_Group("O_90", 01146 TOP_xchg1, TOP_xchg2, TOP_xchg4, 01147 TOP_xchg8, 01148 TOP_UNDEFINED); 01149 Operand(0, pr, predicate); 01150 Result(0, int64); 01151 Operand(1, ldhint); 01152 Operand(2, int64, base); 01153 Operand(3, int64); 01154 01155 /* ===== (<%pr%p6>) <r7>=<r7>,<r7>,<uimm6>,<len4> ===== */ 01156 Instruction_Group("O_91", 01157 TOP_dep, 01158 TOP_UNDEFINED); 01159 Operand(0, pr, predicate); 01160 Result(0, int64); 01161 Operand(1, int64); 01162 Operand(2, int64); 01163 Operand(3, ulit6); 01164 Operand(4, len4); 01165 01166 /* ===== (<%pr%p6>) <b3>=<mwh>,<ih>,<r7>,<pcrel13> ===== */ 01167 Instruction_Group("O_92", 01168 TOP_mov_t_br_ret, TOP_mov_t_br_i, 01169 TOP_UNDEFINED); 01170 Operand(0, pr, predicate); 01171 Result(0, br); 01172 Operand(1, mwh); 01173 Operand(2, ih); 01174 Operand(3, int64); 01175 Operand(4, pcrel13); 01176 01177 /* ===== (<%pr%p6>) <bwh>,<ph>,<dh>,<%tg%@pcrel25> ===== */ 01178 Instruction_Group("O_93", 01179 TOP_br_cond, 01180 TOP_UNDEFINED); 01181 Operand(0, pr, predicate); 01182 Operand(1, bwh); 01183 Operand(2, ph); 01184 Operand(3, dh); 01185 Operand(4, pcrel25, target); 01186 Relocatable(4); 01187 01188 /* ===== (<%pr%p6>) <bwh>,<ph>,<dh>,<%tg%@pcrel25> ===== */ 01189 Instruction_Group("O_94", 01190 TOP_br_wexit, TOP_br_wtop, 01191 TOP_UNDEFINED); 01192 Operand(0, pr, predicate); 01193 Result(0, ec); 01194 Operand(1, bwh); 01195 Operand(2, ph); 01196 Operand(3, dh); 01197 Operand(4, pcrel25, target); 01198 Relocatable(4); 01199 Operand(5, ec); 01200 01201 /* ===== (<%pr%p6>) <bwh>,<ph>,<dh>,<%tg%@pcrel64> ===== */ 01202 Instruction_Group("O_95", 01203 TOP_brl_cond, 01204 TOP_UNDEFINED); 01205 Operand(0, pr, predicate); 01206 Operand(1, bwh); 01207 Operand(2, ph); 01208 Operand(3, dh); 01209 Operand(4, pcrel64, target); 01210 Relocatable(4); 01211 01212 /* ===== (<%pr%p6>) <lfhint>,[<%bs%r7>],<%pi%imm9> ===== */ 01213 Instruction_Group("O_96", 01214 TOP_lfetch_i, TOP_lfetch_i_excl, TOP_lfetch_i_fault, 01215 TOP_lfetch_i_fault_excl, 01216 TOP_UNDEFINED); 01217 Operand(0, pr, predicate); 01218 Result(0, int64); 01219 Operand(1, lfhint); 01220 Operand(2, int64, base); 01221 Operand(3, lit9, postincr); 01222 01223 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%ucmp1>,<%o2%r7> ===== */ 01224 Instruction_Group("O_97", 01225 TOP_cmp_i_geu, TOP_cmp_i_geu_unc, TOP_cmp_i_ltu, 01226 TOP_cmp_i_ltu_unc, 01227 TOP_UNDEFINED); 01228 Operand(0, pr, predicate); 01229 Result(0, pr); 01230 Result(1, pr); 01231 Operand(1, ucmp1, opnd1); 01232 Operand(2, int64, opnd2); 01233 01234 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%ucmp2>,<%o2%r7> ===== */ 01235 Instruction_Group("O_98", 01236 TOP_cmp_i_gtu, TOP_cmp_i_gtu_unc, TOP_cmp_i_leu, 01237 TOP_cmp_i_leu_unc, 01238 TOP_UNDEFINED); 01239 Operand(0, pr, predicate); 01240 Result(0, pr); 01241 Result(1, pr); 01242 Operand(1, ucmp2, opnd1); 01243 Operand(2, int64, opnd2); 01244 01245 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%ucmp3>,<%o2%r7> ===== */ 01246 Instruction_Group("O_99", 01247 TOP_cmp4_i_geu, TOP_cmp4_i_geu_unc, TOP_cmp4_i_ltu, 01248 TOP_cmp4_i_ltu_unc, 01249 TOP_UNDEFINED); 01250 Operand(0, pr, predicate); 01251 Result(0, pr); 01252 Result(1, pr); 01253 Operand(1, ucmp3, opnd1); 01254 Operand(2, int64, opnd2); 01255 01256 /* ===== (<%pr%p6>) <p6>,<p6>=<%o1%ucmp4>,<%o2%r7> ===== */ 01257 Instruction_Group("O_100", 01258 TOP_cmp4_i_gtu, TOP_cmp4_i_gtu_unc, TOP_cmp4_i_leu, 01259 TOP_cmp4_i_leu_unc, 01260 TOP_UNDEFINED); 01261 Operand(0, pr, predicate); 01262 Result(0, pr); 01263 Result(1, pr); 01264 Operand(1, ucmp4, opnd1); 01265 Operand(2, int64, opnd2); 01266 01267 /* ===== (<%pr%p6>) <f7>=<%o1%f7>,<%o2%f7>,<%ma%f7> ===== */ 01268 Instruction_Group("O_101", 01269 TOP_xma_h, TOP_xma_hu, TOP_xma_l, 01270 TOP_xma_lu, 01271 TOP_UNDEFINED); 01272 Operand(0, pr, predicate); 01273 Result(0, fp64); 01274 Operand(1, fp64, opnd1); 01275 Operand(2, fp64, opnd2); 01276 Operand(3, fp64, maddend); 01277 01278 /* ===== (<%pr%p6>) <r7>=<imm1>,<r7>,<uimm6>,<len6> ===== */ 01279 Instruction_Group("O_102", 01280 TOP_dep_i, 01281 TOP_UNDEFINED); 01282 Operand(0, pr, predicate); 01283 Result(0, int64); 01284 Operand(1, lit1); 01285 Operand(2, int64); 01286 Operand(3, ulit6); 01287 Operand(4, len6); 01288 01289 /* ===== (<%pr%p6>) <sthint>,[<%bs%r7>]<eq><%sv%f7> ===== */ 01290 Instruction_Group("O_103", 01291 TOP_stf_spill, TOP_stf8, TOP_stfd, 01292 TOP_stfe, TOP_stfs, 01293 TOP_UNDEFINED); 01294 Operand(0, pr, predicate); 01295 Operand(1, sthint); 01296 Operand(2, int64, base); 01297 Operand(3, fp64, storeval); 01298 01299 /* ===== (<%pr%p6>) <sthint>,[<%bs%r7>]<eq><%sv%r7> ===== */ 01300 Instruction_Group("O_104", 01301 TOP_st8_spill, 01302 TOP_UNDEFINED); 01303 Operand(0, pr, predicate); 01304 Operand(1, sthint); 01305 Operand(2, int64, base); 01306 Operand(3, int64, storeval); 01307 01308 /* ===== (<%pr%p6>) <f7>=<ldhint>,[<%bs%r7>],<%pi%r7> ===== */ 01309 Instruction_Group("O_105", 01310 TOP_ldf_r_fill, 01311 TOP_UNDEFINED); 01312 Operand(0, pr, predicate); 01313 Result(0, fp64); 01314 Result(1, int64); 01315 Operand(1, ldhint); 01316 Operand(2, int64, base); 01317 Operand(3, int64, postincr); 01318 01319 /* ===== (<%pr%p6>) <p6>,<p6>=<sf2>,<%o1%f7>,<%o2%f7> ===== */ 01320 Instruction_Group("O_106", 01321 TOP_fcmp_eq, TOP_fcmp_eq_unc, TOP_fcmp_ge, 01322 TOP_fcmp_ge_unc, TOP_fcmp_gt, TOP_fcmp_gt_unc, 01323 TOP_fcmp_le, TOP_fcmp_le_unc, TOP_fcmp_lt, 01324 TOP_fcmp_lt_unc, TOP_fcmp_neq, TOP_fcmp_neq_unc, 01325 TOP_fcmp_nge, TOP_fcmp_nge_unc, TOP_fcmp_ngt, 01326 TOP_fcmp_ngt_unc, TOP_fcmp_nle, TOP_fcmp_nle_unc, 01327 TOP_fcmp_nlt, TOP_fcmp_nlt_unc, TOP_fcmp_ord, 01328 TOP_fcmp_ord_unc, TOP_fcmp_unord, TOP_fcmp_unord_unc, 01329 TOP_UNDEFINED); 01330 Operand(0, pr, predicate); 01331 Result(0, pr); 01332 Result(1, pr); 01333 Operand(1, sf); 01334 Operand(2, fp64, opnd1); 01335 Operand(3, fp64, opnd2); 01336 01337 /* ===== (<%pr%p6>) <r7>=<ldhint>,[<%bs%r7>],<%pi%r7> ===== */ 01338 Instruction_Group("O_107", 01339 TOP_ld8_r_fill, 01340 TOP_UNDEFINED); 01341 Operand(0, pr, predicate); 01342 Result(0, int64); 01343 Result(1, int64); 01344 Operand(1, ldhint); 01345 Operand(2, int64, base); 01346 Operand(3, int64, postincr); 01347 01348 /* ===== (<%pr%p6>) <r7>=<ldtype>,<ldhint>,[<%bs%r7>] ===== */ 01349 Instruction_Group("O_108", 01350 TOP_ld1, TOP_ld2, TOP_ld4, 01351 TOP_ld8, 01352 TOP_UNDEFINED); 01353 Operand(0, pr, predicate); 01354 Result(0, int64); 01355 Operand(1, ldtype); 01356 Operand(2, ldhint); 01357 Operand(3, int64, base); 01358 01359 /* ===== (<%pr%p6>) <f7>=<fldtype>,<ldhint>,[<%bs%r7>] ===== */ 01360 Instruction_Group("O_109", 01361 TOP_ldf8, TOP_ldfd, TOP_ldfe, 01362 TOP_ldfs, 01363 TOP_UNDEFINED); 01364 Operand(0, pr, predicate); 01365 Result(0, fp64); 01366 Operand(1, fldtype); 01367 Operand(2, ldhint); 01368 Operand(3, int64, base); 01369 01370 /* ===== (<%pr%p6>) <b3>=<bwh>,<ph>,<dh>,<%tg%@pcrel25> ===== */ 01371 Instruction_Group("O_110", 01372 TOP_br_call, 01373 TOP_UNDEFINED); 01374 Operand(0, pr, predicate); 01375 Result(0, br); 01376 Operand(1, bwh); 01377 Operand(2, ph); 01378 Operand(3, dh); 01379 Operand(4, pcrel25, target); 01380 Relocatable(4); 01381 Operand(5, ec); 01382 01383 /* ===== (<%pr%p6>) <b3>=<bwh>,<ph>,<dh>,<%tg%@pcrel64> ===== */ 01384 Instruction_Group("O_111", 01385 TOP_brl_call, 01386 TOP_UNDEFINED); 01387 Operand(0, pr, predicate); 01388 Result(0, br); 01389 Operand(1, bwh); 01390 Operand(2, ph); 01391 Operand(3, dh); 01392 Operand(4, pcrel64, target); 01393 Relocatable(4); 01394 01395 /* ===== (<%pr%p6>) <f7>=<ldhint>,[<%bs%r7>],<%pi%imm9> ===== */ 01396 Instruction_Group("O_112", 01397 TOP_ldf_i_fill, 01398 TOP_UNDEFINED); 01399 Operand(0, pr, predicate); 01400 Result(0, fp64); 01401 Result(1, int64); 01402 Operand(1, ldhint); 01403 Operand(2, int64, base); 01404 Operand(3, lit9, postincr); 01405 01406 /* ===== (<%pr%p6>) <r7>=<ldhint>,[<%bs%r7>],<%pi%imm9> ===== */ 01407 Instruction_Group("O_113", 01408 TOP_ld8_i_fill, 01409 TOP_UNDEFINED); 01410 Operand(0, pr, predicate); 01411 Result(0, int64); 01412 Result(1, int64); 01413 Operand(1, ldhint); 01414 Operand(2, int64, base); 01415 Operand(3, lit9, postincr); 01416 01417 /* ===== (<%pr%p6>) <r7>=<sem>,<ldhint>,[<%bs%r7>],<r7> ===== */ 01418 Instruction_Group("O_114", 01419 TOP_cmpxchg1, TOP_cmpxchg2, TOP_cmpxchg4, 01420 TOP_cmpxchg8, 01421 TOP_UNDEFINED); 01422 Operand(0, pr, predicate); 01423 Result(0, int64); 01424 Operand(1, sem); 01425 Operand(2, ldhint); 01426 Operand(3, int64, base); 01427 Operand(4, int64); 01428 01429 /* ===== (<%pr%p6>) <f7>=<sf2>,<%o1%f7>,<%o2%f7>,<%ma%f7> ===== */ 01430 Instruction_Group("O_115", 01431 TOP_fma, TOP_fma_d, TOP_fma_s, 01432 TOP_fms, TOP_fms_d, TOP_fms_s, 01433 TOP_fnma, TOP_fnma_d, TOP_fnma_s, 01434 TOP_fpma, TOP_fpms, TOP_fpnma, 01435 TOP_UNDEFINED); 01436 Operand(0, pr, predicate); 01437 Result(0, fp64); 01438 Operand(1, sf); 01439 Operand(2, fp64, opnd1); 01440 Operand(3, fp64, opnd2); 01441 Operand(4, fp64, maddend); 01442 01443 /* ===== (<%pr%p6>) <f7>,<f7>=<fldtype>,<ldhint>,[<%bs%r7>] ===== */ 01444 Instruction_Group("O_116", 01445 TOP_ldfp8, TOP_ldfpd, TOP_ldfps, 01446 TOP_UNDEFINED); 01447 Operand(0, pr, predicate); 01448 Result(0, fp64); 01449 Result(1, fp64); 01450 Operand(1, fldtype); 01451 Operand(2, ldhint); 01452 Operand(3, int64, base); 01453 01454 /* ===== (<%pr%p6>) <f7>,<f7>=<fldtype>,<ldhint>,[<%bs%r7>] ===== */ 01455 Instruction_Group("O_117", 01456 TOP_ldfp8_i, TOP_ldfpd_i, TOP_ldfps_i, 01457 TOP_UNDEFINED); 01458 Operand(0, pr, predicate); 01459 Result(0, fp64); 01460 Result(1, fp64); 01461 Result(2, int64); 01462 Operand(1, fldtype); 01463 Operand(2, ldhint); 01464 Operand(3, int64, base); 01465 01466 /* ===== (<%pr%p6>) <sttype>,<sthint>,[<%bs%r7>]<eq><%sv%r7> ===== */ 01467 Instruction_Group("O_118", 01468 TOP_st1, TOP_st2, TOP_st4, 01469 TOP_st8, 01470 TOP_UNDEFINED); 01471 Operand(0, pr, predicate); 01472 Operand(1, sttype); 01473 Operand(2, sthint); 01474 Operand(3, int64, base); 01475 Operand(4, int64, storeval); 01476 01477 /* ===== (<%pr%p6>) <r7>=<sem>,<ldhint>,[<%bs%r7>],<fetchadd> ===== */ 01478 Instruction_Group("O_119", 01479 TOP_fetchadd4, TOP_fetchadd8, 01480 TOP_UNDEFINED); 01481 Operand(0, pr, predicate); 01482 Result(0, int64); 01483 Operand(1, sem); 01484 Operand(2, ldhint); 01485 Operand(3, int64, base); 01486 Operand(4, fetchadd); 01487 01488 /* ===== (<%pr%p6>) <r7>=<ldtype>,<ldhint>,[<%bs%r7>],<%pi%r7> ===== */ 01489 Instruction_Group("O_120", 01490 TOP_ld1_r, TOP_ld2_r, TOP_ld4_r, 01491 TOP_ld8_r, 01492 TOP_UNDEFINED); 01493 Operand(0, pr, predicate); 01494 Result(0, int64); 01495 Result(1, int64); 01496 Operand(1, ldtype); 01497 Operand(2, ldhint); 01498 Operand(3, int64, base); 01499 Operand(4, int64, postincr); 01500 01501 /* ===== (<%pr%p6>) <sthint>,[<%bs%r7>]<eq><%sv%f7>,<%pi%imm9> ===== */ 01502 Instruction_Group("O_121", 01503 TOP_stf8_i, TOP_stf_i_spill, TOP_stfd_i, 01504 TOP_stfe_i, TOP_stfs_i, 01505 TOP_UNDEFINED); 01506 Operand(0, pr, predicate); 01507 Result(0, int64); 01508 Operand(1, sthint); 01509 Operand(2, int64, base); 01510 Operand(3, fp64, storeval); 01511 Operand(4, lit9, postincr); 01512 01513 /* ===== (<%pr%p6>) <sthint>,[<%bs%r7>]<eq><%sv%r7>,<%pi%imm9> ===== */ 01514 Instruction_Group("O_122", 01515 TOP_st8_i_spill, 01516 TOP_UNDEFINED); 01517 Operand(0, pr, predicate); 01518 Result(0, int64); 01519 Operand(1, sthint); 01520 Operand(2, int64, base); 01521 Operand(3, int64, storeval); 01522 Operand(4, lit9, postincr); 01523 01524 /* ===== (<%pr%p6>) <f7>=<fldtype>,<ldhint>,[<%bs%r7>],<%pi%r7> ===== */ 01525 Instruction_Group("O_123", 01526 TOP_ldf8_r, TOP_ldfd_r, TOP_ldfe_r, 01527 TOP_ldfs_r, 01528 TOP_UNDEFINED); 01529 Operand(0, pr, predicate); 01530 Result(0, fp64); 01531 Result(1, int64); 01532 Operand(1, fldtype); 01533 Operand(2, ldhint); 01534 Operand(3, int64, base); 01535 Operand(4, int64, postincr); 01536 01537 /* ===== (<%pr%p6>) <r7>=<ldtype>,<ldhint>,[<%bs%r7>],<%pi%imm9> ===== */ 01538 Instruction_Group("O_124", 01539 TOP_ld1_i, TOP_ld2_i, TOP_ld4_i, 01540 TOP_ld8_i, 01541 TOP_UNDEFINED); 01542 Operand(0, pr, predicate); 01543 Result(0, int64); 01544 Result(1, int64); 01545 Operand(1, ldtype); 01546 Operand(2, ldhint); 01547 Operand(3, int64, base); 01548 Operand(4, lit9, postincr); 01549 01550 /* ===== (<%pr%p6>) <f7>=<fldtype>,<ldhint>,[<%bs%r7>],<%pi%imm9> ===== */ 01551 Instruction_Group("O_125", 01552 TOP_ldf8_i, TOP_ldfd_i, TOP_ldfe_i, 01553 TOP_ldfs_i, 01554 TOP_UNDEFINED); 01555 Operand(0, pr, predicate); 01556 Result(0, fp64); 01557 Result(1, int64); 01558 Operand(1, fldtype); 01559 Operand(2, ldhint); 01560 Operand(3, int64, base); 01561 Operand(4, lit9, postincr); 01562 01563 /* ===== (<%pr%p6>) <sttype>,<sthint>,[<%bs%r7>]<eq><%sv%r7>,<%pi%imm9> ===== */ 01564 Instruction_Group("O_126", 01565 TOP_st1_i, TOP_st2_i, TOP_st4_i, 01566 TOP_st8_i, 01567 TOP_UNDEFINED); 01568 Operand(0, pr, predicate); 01569 Result(0, int64); 01570 Operand(1, sttype); 01571 Operand(2, sthint); 01572 Operand(3, int64, base); 01573 Operand(4, int64, storeval); 01574 Operand(5, lit9, postincr); 01575 01576 Instruction_Group("O_spadjust", 01577 TOP_spadjust, 01578 TOP_UNDEFINED); 01579 Operand(0, pr, predicate); 01580 Operand(1, int64, opnd1); 01581 Operand(2, lit64, opnd2); 01582 Result(0, int64); 01583 01584 /* ===== preg-tn tuple ===== */ 01585 Instruction_Group("O_noop_pregtn", 01586 TOP_begin_pregtn, TOP_end_pregtn, 01587 TOP_UNDEFINED); 01588 Operand(0, int64); 01589 Operand(1, lit16); 01590 01591 /* ===== intrncall R0 <- intrinsic_call (ID, ...) ===== */ 01592 Instruction_Group ( "O_intrncall", 01593 TOP_intrncall, 01594 TOP_UNDEFINED); 01595 Operand (0, lit64); // the intrinsic ID 01596 Result (0, int64); 01597 01598 /* ==== No-op (int) fixups ====== */ 01599 Instruction_Group("O_noop_ifixup", 01600 TOP_ifixup, 01601 TOP_UNDEFINED); 01602 Result(0, int64); 01603 01604 /* ==== No-op (fp) fixups ====== */ 01605 Instruction_Group("O_noop_ffixup", 01606 TOP_ffixup, TOP_dfixup, 01607 TOP_UNDEFINED); 01608 Result(0, fp64); 01609 01610 /* ====== No-op ======== */ 01611 Instruction_Group("O_noop", 01612 TOP_fwd_bar, TOP_bwd_bar, TOP_noop, 01613 TOP_UNDEFINED); 01614 01615 /* ====== Copy Branch Register ======== */ 01616 Instruction_Group("O_copy_br", 01617 TOP_copy_br, 01618 TOP_UNDEFINED); 01619 Operand(0, pr); 01620 Result(0, br); 01621 Operand(1, br); 01622 01623 /* ===== asm string ===== */ 01624 Instruction_Group("O_asm", 01625 TOP_asm, 01626 TOP_UNDEFINED); 01627 01628 /* ===== Label ===== */ 01629 Instruction_Group("O_label", 01630 TOP_label, 01631 TOP_UNDEFINED); 01632 Operand(0, pcrel64); 01633 Relocatable(0); 01634 01635 ISA_Operands_End(); 01636 return 0; 01637 }