Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
isa_operands.cxx
Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines