Subversion Repositories Open64

[/] [trunk/] [osprey/] [common/] [targ_info/] [isa/] [SL/] [isa.cxx] - Rev 2694

Go to most recent revision | Compare with Previous | Blame | View Log

/********************************************************************\
|*                                                                  *|   
|*  Copyright (c) 2006 by SimpLight Nanoelectronics.                *|
|*  All rights reserved                                             *|
|*                                                                  *|
|*  This program is free software; you can redistribute it and/or   *|
|*  modify it under the terms of the GNU General Public License as  *|
|*  published by the Free Software Foundation; either version 2,    *|
|*  or (at your option) any later version.                          *|
|*                                                                  *|
\********************************************************************/

//
// Generate an ISA containing the instructions specified.
/////////////////////////////////////////////////////////
// The instructions are listed by category. The different categories of
// instructions are:
//
//   1. Integer instructions
//   2. FP instructions
//   3. Simulated instructions
//   4. Dummy instructions
//
// Within each category, the instructions are in alphabetical order.
// This arrangement of instructions matches the order in the ISA manual.
/////////////////////////////////////
//
//  $Revision: 1.11 $
//  $Date: 2006/04/28 08:27:15 $
//  $Author: weitang $
//  $Source: /depot/CVSROOT/javi/src/sw/cmplr/common/targ_info/isa/MIPS/isa.cxx,v $

#include <stddef.h>
#include "isa_gen.h"

main ()
{
  ISA_Create ("MIPS",
#if defined(TARG_SL)        
        "abs16",
  "add16",
  "add16.i",
  "add16.sp",
  "and16",
        "and16.i",
  "jr16",
  "jr16.lnk",
        "ldw16",
        "ldub16.rs",
        "lduh16.rs",
  "mv16",
  "mv16.i",
  "mvfc16",
  "mvtc16",
  "nop16",
  "inv16",
  "or16",
  "or16.i",
  "pop16",
  "push16",
  "ret16",
  "shll16",
  "shll16.i",
  "shra16",
  "shra16.i",
  "shrl16",
  "shrl16.i",
  "stw16",
  "sub16",
  "sub16.i",
  "xor16",
  "xor16.i",
  "br16.eqz",
        "br16.nez",
        "c3.aadda",
        "c3.bitr",
        "c3.cs",
        "c3.dadd",
        "c3.dmac",
        "c3.dmacn",
        "c3.dmac.a",
        "c3.dmacn.a",
        "c3.dmula",
        "c3.dmulan",
        "c3.dmula.a",
        "c3.dmulan.a",
        "c3.dshll.i",
        "c3.dshrl.i",
        "c3.dsub",
        "c3.ffe",
        "c3.fftld",
        "c3.fftst",
        "c3.ld",
        "c3.lead",
        "c3.mac",
        "c3.mac.a",
        "c3.mac.ar",
        "c3.mac.i",
        "c3.macn",
        "c3.macn.a",
        "c3.macn.ar",
        "c3.macn.i",
        "c3.mula",
        "c3.mula.a",
        "c3.mula.ar",
        "c3.mula.i",
        "c3.mulan",
        "c3.muls",
        "c3.mulus",
        "c3.mvfs",
        "c3.mvts",
        "c3.revb",
        "c3.round",
        "c3.saadd.a",
        "c3.saaddh.a",
        "c3.saadds",
        "c3.saaddsh",
        "c3.sadda",
        "c3.sadda.a",
        "c3.samulh.a",
        "c3.samulsh",
        "c3.sasub.a",
        "c3.sasubh.a",
        "c3.sasubs",
        "c3.sasubsh",
        "c3.shav",
        "c3.shlafa.i",
        "c3.shlata.i",
        "c3.shla.i",
        "c3.shrafa.i",
        "c3.shrata.i",
        "c3.shra.i",
        "c3.st",
        "c3.subc",
        "c3.nega",
        "c3.mvfacc",
        "c3.mvfaddr",
        "c3.mvfadds",
        "c3.mvtacc",
        "c3.mvtaddr",
        "c3.mvtadds",
        "loop",
        "mvtc",
        "mvfc",
  "mvtc.i",
        "ret",
        "mc.r.ge",
        "mc.r.le",
        "mc.r.lt",
        "mc.r.gt",
        "mc.r.eq",
        "mc.r.ne",
        "mc.abs",
        "mc.zc.le",
        "mc.zc.lt",
        "mc.zc.gt",
        "mc.zc.ge",
        "mc.zc.eq",
        "mc.zc.ne",
#endif
        "jp",
        "jp.lnk", 
  "ldb",
  "ldub",
  "ldh",
  "lduh",
  "ldw",
  "lwl",
  "lwr",
  "stb",
  "sth",
  "stw",
  "swl",
  "swr",
  "ld.lnk",
  "sc",
  "sync",
  "lwu",
  "ld",
  "ldl",
  "ldr",
  "lld",
  "sd",
  "sdl",
  "sdr",
  "scd",
  "pref",
  "prefx",
  "add",
  "addi",
  "add.i",
  "addu",
  "smult",
  "div",
  "divu",
  "mult",
  "multu",
  "setlt",
  "setlt.i",
  "setltu.i",
  "setltu",
  "sub",
  "subu",
  "dadd",
  "daddi",
  "daddiu",
  "daddu",
  "ddiv",
  "ddivu",
  "dmult",
  "dmultu",
  "dsub",
  "dsubu",
  "and",
  "and.i",
  "mvup.i",
  "nor",
  "or",
  "or.i",
  "xor",
  "xor.i",
  "movf.hi",
  "movf.lo",
  "mthi",
  "mtlo",
  "mc.z.eq",
  "mc.z.ne",
  "mc.z.gt",
  "mc.z.ge",
  "mc.z.lt",
  "mc.z.le",
  "mc.zn.eq",
  "mc.zn.ne",
  "mc.zn.gt",
  "mc.zn.ge",
  "mc.zn.lt",
  "mc.zn.le",
  "depb",
  "extrb",
  "extrbu", 
  "movf",
  "movn",
  "movt",
  "movz",
  "shll",
  "shll.i",
  "shra",
  "shra.i",
  "shrl",
  "shrl.i",
  "dsll",
  "dsll32",
  "dsllv",
  "dsra",
  "dsra32",
  "dsrav",
  "dsrl",
  "dsrl32",
  "dsrlv",
  "br.eq",
  "br.gez",
  "bgezal",
  "br.gtz",
  "br.lez",
  "br.ltz",
  "bltzal",
  "br.ne",
  //"j",
  //"jal",
  "jr.lnk",
  "jr",
  "break",
  "syscall",
  "teq",
  "teqi",
  "tge",
  "tgei",
  "tgeiu",
  "tgeu",
  "tlt",
  "tlti",
  "tltiu",
  "tltu",
  "tne",
  "tnei",
  "lwc1",
  "ldc1",
  "lwxc1",
  "ldxc1",
  "swc1",
  "sdc1",
  "swxc1",
  "sdxc1",
  "abs.s",
  "abs.d",
  "add.s",
  "add.d",
  "c.f.s",
  "c.f.d",
  "c.t.s",
  "c.t.d",
  "c.un.s",
  "c.un.d",
  "c.or.s",
  "c.or.d",
  "c.eq.s",
  "c.eq.d",
  "c.neq.s",
  "c.neq.d",
  "c.ueq.s",
  "c.ueq.d",
  "c.olg.s",
  "c.olg.d",
  "c.olt.s",
  "c.olt.d",
  "c.uge.s",
  "c.uge.d",
  "c.ult.s",
  "c.ult.d",
  "c.oge.s",
  "c.oge.d",
  "c.ole.s",
  "c.ole.d",
  "c.ugt.s",
  "c.ugt.d",
  "c.ule.s",
  "c.ule.d",
  "c.ogt.s",
  "c.ogt.d",
  "c.sf.s",
  "c.sf.d",
  "c.st.s",
  "c.st.d",
  "c.ngle.s",
  "c.ngle.d",
  "c.gle.s",
  "c.gle.d",
  "c.seq.s",
  "c.seq.d",
  "c.sne.s",
  "c.sne.d",
  "c.ngl.s",
  "c.ngl.d",
  "c.gl.s",
  "c.gl.d",
  "c.lt.s",
  "c.lt.d",
  "c.nlt.s",
  "c.nlt.d",
  "c.nge.s",
  "c.nge.d",
  "c.ge.s",
  "c.ge.d",
  "c.le.s",
  "c.le.d",
  "c.nle.s",
  "c.nle.d",
  "c.ngt.s",
  "c.ngt.d",
  "c.gt.s",
  "c.gt.d",
  "div.s",
  "div.d",
  "mul.s",
  "mul.d",
  "neg.s",
  "neg.d",
  "sub.s",
  "sub.d",
  "sqrt.s",
  "sqrt.d",
  "madd.s",
  "madd.d",
  "msub.s",
  "msub.d",
  "nmadd.s",
  "nmadd.d",
  "nmsub.s",
  "nmsub.d",
  "recip.s",
  "recip.d",
  "rsqrt.s",
  "rsqrt.d",
  "cfc1",
  "ctc1",
  "mfc1",
  "mtc1",
  "dmfc1",
  "dmtc1",
  "mov.s",
  "mov.d",
  "movf.s",
  "movf.d",
  "movn.s",
  "movn.d",
  "movt.s",
  "movt.d",
  "movz.s",
  "movz.d",
  "cvt.d.s",
  "cvt.d.w",
  "cvt.d.l",
  "cvt.l.s",
  "cvt.l.d",
  "cvt.s.d",
  "cvt.s.w",
  "cvt.s.l",
  "cvt.w.s",
  "cvt.w.d",
  "ceil.w.s",
  "ceil.w.d",
  "ceil.l.s",
  "ceil.l.d",
  "floor.w.s",
  "floor.w.d",
  "floor.l.s",
  "floor.l.d",
  "round.w.s",
  "round.w.d",
  "round.l.s",
  "round.l.d",
  "trunc.w.s",
  "trunc.w.d",
  "trunc.l.s",
  "trunc.l.d",
  "bc1f",
  "bc1t",
     // And pseudo-opcodes
        "asm",
        "intrncall",
        "spadjust",

    // Dummy instructions
        "begin_pregtn",
        "end_pregtn",
        "bwd_bar",
        "fwd_bar",
        "label",
#if defined(TARG_SL2) 
        "c2.mvgr.r2g.h.u",
        "c2.mvgr.r2g.h",
        "c2.mvgr.r2g.w",
        "c2.mvgr.r2g.h.u.i",
        "c2.mvgr.r2g.h.i",
        "c2.mvgr.r2g.w.i",
        "c2.mvgr.g2r.ba.lh",
        "c2.mvgr.g2r.ba.hh",
        "c2.mvgr.g2r.ba.w",
        "c2.mvgr.g2r.lh.i",
        "c2.mvgr.g2r.hh.i",
        "c2.mvgr.g2r.w.i",
        "c2.mvgr.g2r.lh",
        "c2.mvgr.g2r.hh",
        "c2.mvgr.g2r.w",
        "c2.mvgr.g2r.bh",
        "c2.mvgr.g2r.bh.u",
        "c2.mvgr.g2r.bv",
        "c2.mvgr.g2r.bv.u",
        "c2.mvgr.g2r.b4.i",
        "c2.mvgr.g2r.b4",
        "c2.mvgc.c2g",
        "c2.mvgc.g2c",
        "c2.ld.v.b.u",
        "c2.ld.v.b",
        "c2.ld.v.h",
        "c2.ld.v.w",
        "c2.ld.v.sw",
        "c2.ld.v.m.b.u",
        "c2.ld.v.m.b",
        "c2.ld.v.m.h",
        "c2.ld.v.m.w",
        "c2.ld.s.h.u.p",
        "c2.ld.s.h.u",
        "c2.ld.s.h.p",
        "c2.ld.s.h",
        "c2.ld.s.w.p",
        "c2.ld.s.w",
        "c2.ld.v2g.b.u",
        "c2.ld.v2g.b",
        "c2.ld.v2g.h.u",
        "c2.ld.v2g.h",
        "c2.ld.v2g.w",
        "c2.st.v.b",
        "c2.st.v.h",
        "c2.st.v.w",
        "c2.st.v.m.b",
        "c2.st.v.m.h",
        "c2.st.v.m.w",
        "c2.st.s.h",
        "c2.st.s.h.p",
        "c2.st.s.w",
        "c2.st.s.w.p",
        "c2.st.g2v.b",
        "c2.st.g2v.h",
        "c2.st.g2v.w",
        "c2.ldi.s.h.u",
        "c2.ldi.s.h",
        "c2.ldi.s.w",
        "c2.ldi.c",
        "c2.ldi.v.b.u",
        "c2.ldi.v.b",
        "c2.ldi.v.h",
        "c2.ldi.v.w",
        "c2.ldi.v.m.b.u",
        "c2.ldi.v.m.b",
        "c2.ldi.v.m.h",
        "c2.ldi.v.m.w",
        "c2.ldi.v2g.b.u",
        "c2.ldi.v2g.b",
        "c2.ldi.v2g.h.u",
        "c2.ldi.v2g.h",
        "c2.ldi.v2g.w",
        "c2.sti.v.b",
        "c2.sti.v.h",
        "c2.sti.v.w",
        "c2.sti.v.m.b",
        "c2.sti.v.m.h",
        "c2.sti.v.m.w",
        "c2.sti.c",
        "c2.sti.s.h",
        "c2.sti.s.w",
        "c2.sti.g2v.b",
        "c2.sti.g2v.h",
        "c2.sti.g2v.w",
        "c2.vadds.h",
        "c2.vadds.w",
        "c2.vadds.p",
        "c2.vadds.h.mode6",
        "c2.vadds.h.mode2",
        "c2.vadds.w.mode6",
        "c2.vadds.w.mode2",
        "c2.vadds.p.mode6",
        "c2.vadds.p.mode2",
        "c2.vsubs.h",
        "c2.vsubs.h.sm",
        "c2.vsubs.h.abs",
        "c2.vsubs.h.abs.sm",
        "c2.vabs.h",
        "c2.vabs.h.sm",
        "c2.vsubs.w",
        "c2.vsubs.w.sm",
        "c2.vsubs.w.abs",
        "c2.vsubs.w.abs.sm",
        "c2.vabs.w",
        "c2.vabs.w.sm",
        "c2.vsubs.p",
        "c2.vsubs.p.sm",
        "c2.vsubs.p.abs",
        "c2.vsubs.p.abs.sm",
        "c2.vabs.p",
        "c2.vabs.p.sm",
        "c2.vmul.h",
        "c2.vmul.w",
        "c2.vneg.h",
        "c2.vneg.w",
        "c2.vneg.p",
        "c2.vshr.p",
        "c2.vshr.h",
        "c2.vshr.w",
        "c2.vshl.p",
        "c2.vshl.h",
        "c2.vshl.w",
        "c2.vclp",
        "c2.vclp.p",
        "c2.vclp.a",
        "c2.vclp.s",
        "c2.vclp.2",
        "c2.vclp.n",
        "c2.vclg.h.lt.and",
        "c2.vclg.h.lt.or",
        "c2.vclg.h.le.and",
        "c2.vclg.h.le.or",
        "c2.vclg.h.eq.and",
        "c2.vclg.h.eq.or",
        "c2.vclg.h.ge.and",
        "c2.vclg.h.ge.or",
        "c2.vclg.h.gt.and",
        "c2.vclg.h.gt.or",
        "c2.vclg.h.and",
        "c2.vclg.h.or",
        "c2.vclg.h.le",
        "c2.vclg.h.lt",
        "c2.vclg.h.ge",
        "c2.vclg.h.gt",
        "c2.vclg.w.lt.and",
        "c2.vclg.w.lt.or",
        "c2.vclg.w.le.and",
        "c2.vclg.w.le.or",
        "c2.vclg.w.eq.and",
        "c2.vclg.w.eq.or",
        "c2.vclg.w.ge.and",
        "c2.vclg.w.ge.or",
        "c2.vclg.w.gt.and",
        "c2.vclg.w.gt.or",
        "c2.vclg.w.and",
        "c2.vclg.w.or",
        "c2.vclg.w.le",
        "c2.vclg.w.lt",
        "c2.vclg.w.ge",
        "c2.vclg.w.gt",
        "c2.vclg.p.lt.and",
        "c2.vclg.p.lt.or",
        "c2.vclg.p.le.and",
        "c2.vclg.p.le.or",
        "c2.vclg.p.eq.and",
        "c2.vclg.p.eq.or",
        "c2.vclg.p.ge.and",
        "c2.vclg.p.ge.or",
        "c2.vclg.p.gt.and",
        "c2.vclg.p.gt.or",
        "c2.vclg.p.and",
        "c2.vclg.p.or",
        "c2.vclg.p.le",
        "c2.vclg.p.eq",
        "c2.vclg.p.ge",
        "c2.vclg.p.gt",
        "c2.vcmov.h.f",
        "c2.vcmov.h.t",
        "c2.vcmov.w.f",
        "c2.vcmov.w.t",
        "c2.lczero.z",
        "c2.lczero.nz.fw",
        "c2.lczero.nz.bw",
        "c2.vrnd.h",
        "c2.vrnd.w",
        "c2.vspas",
        "c2.vspel.mul.h",
        "c2.vspel.mul.w",
        "c2.vspel.adds",
        "c2.vspel.mac.h",
        "c2.vspel.mac.w",
        "c2.mmul.h",
        "c2.mmul.w",
        "c2.vmov",
        "c2.vmov.swin",
        "c2.vcopy", 
        "c2.vcmpr.h.eq",
        "c2.vcmpr.h.lt",
        "c2.vcmpr.h.le",
        "c2.vcmpr.h.gt",
        "c2.vcmpr.h.ge",
        "c2.vcmpr.w.eq",
        "c2.vcmpr.w.lt",
        "c2.vcmpr.w.le",
        "c2.vcmpr.w.gt",
        "c2.vcmpr.w.ge",
        "c2.sad",
        "c2.satd", 
        "c2.intra",
        "c2.intra.0.1.9.14.16",
        "c2.intra.2.3.8.10",
        "c2.intra.4",
        "c2.intra.5.11",
        "c2.intra.6",
        "c2.intra.7",
        "c2.intra.12.13",
        "c2.intra.15.17",
        "c2.mvsel.mode0",
        "c2.mvsel.mode1", 
        "c2.mvsel.mode2", 
        "c2.mvsel.mode345", 
        "c2.bcst.q",
        "c2.bcst.i",
        "c2.vlcs.dc",
        "c2.vlcs.ac",
        "c2.vlcs.wb",
        "c2.add.shl.g.i",
        "c2.add.shr.g.i",
        "c2.add.shl.g",
        "c2.add.shr.g",
        "c2.add.shl.r.h.i",
        "c2.add.shr.r.h.i",
        "c2.add.shl.r.w.i",
        "c2.add.shr.r.w.i",
        "c2.add.shl.r.h",
        "c2.add.shr.r.h",
        "c2.add.shl.r.w",
        "c2.add.shr.r.w",
        "c2.sub.g.abs.i",
        "c2.subs.g.i",
        "c2.sub.g.abs",
        "c2.subs.g",
        "c2.subs.r.h.i",
        "c2.subs.r.w.i",
        "c2.sub.r.abs.h.i",
        "c2.sub.r.abs.w.i",
        "c2.subs.r.h",
        "c2.subs.r.w",
        "c2.sub.r.abs.h",
        "c2.sub.r.abs.w",
        "c2.muls",
        "c2.mads",
        "c2.smads",
        "c2.min",
        "c2.max",
        "c2.cmov",
        "c2.mov.g",
        "c2.mov.r",
        "c2.mov.c.i",
        "c2.mov.c",
        "c2.mov.s.i",
        "c2.mov.s",
        "c2.clp",
        "c2.clp.i",
        "c2.chkrng",
        "c2.scond.r.h.wb.eq",
        "c2.scond.r.h.wb.lt",
        "c2.scond.r.h.wb.le",
        "c2.scond.r.h.wb.gt",
        "c2.scond.r.h.wb.ge",
        "c2.scond.r.wb.eq.i",
        "c2.scond.r.wb.lt.i",
        "c2.scond.r.wb.le.i",
        "c2.scond.r.wb.gt.i",
        "c2.scond.r.wb.ge.i",
        "c2.scond.r.w.wb.eq",
        "c2.scond.r.w.wb.lt",
        "c2.scond.r.w.wb.le",
        "c2.scond.r.w.wb.gt",
        "c2.scond.r.w.wb.ge",
        "c2.scond.r.w.wb.eq.i",
        "c2.scond.r.w.wb.lt.i",
        "c2.scond.r.w.wb.le.i",
        "c2.scond.r.w.wb.gt.i",
        "c2.scond.r.w.wb.ge.i",
        "c2.scond.r.h.eq",
        "c2.scond.r.h.lt",
        "c2.scond.r.h.le",
        "c2.scond.r.h.gt",
        "c2.scond.r.h.ge",
        "c2.scond.r.h.eq.i",
        "c2.scond.r.h.lt.i",
        "c2.scond.r.h.le.i",
        "c2.scond.r.h.gt.i",
        "c2.scond.r.h.ge.i",
        "c2.scond.r.w.eq",
        "c2.scond.r.w.lt",
        "c2.scond.r.w.le",
        "c2.scond.r.w.gt",
        "c2.scond.r.w.ge",
        "c2.scond.r.w.eq.i",
        "c2.scond.r.w.lt.i",
        "c2.scond.r.w.le.i",
        "c2.scond.r.w.gt.i",
        "c2.scond.r.w.ge.i",
        "c2.scond.eq",
        "c2.scond.lt",
        "c2.scond.le",
        "c2.scond.gt",
        "c2.scond.ge",
        "c2.scond.eq.i",
        "c2.scond.lt.i",
        "c2.scond.le.i",
        "c2.scond.gt.i",
        "c2.scond.ge.i",
        "c2.bop.ls",
        "c2.bop.rs",
        "c2.bop.and",
        "c2.bop.or",
        "c2.bop.xor",
        "c2.bop.ls.i",
        "c2.bop.rs.i",
        "c2.bop.and.i",
        "c2.bop.or.i",
        "c2.bop.xor.i",
        "c2.bop.andxor",
        "c2.bdep.l",
        "c2.bdep.m",
        "c2.bxtr.u.l",
        "c2.bxtr.s.l",
        "c2.bxtr.u.m",
        "c2.bxtr.s.m",
        "c2.bxtrr48",
        "c2.bxtrr48.i",
        "c2.sum4.c",
        "c2.sum4.g",
        "c2.sum4.sw",
        "c2.sum4.r",
        "c2.sum4.saddr",
        "c2.med", 
        "c2.gsums",
        "c2.wrap",
        "c2.clzob.zd", 
        "c2.clzob.od", 
        "c2.clzob.zd.i", 
        "c2.clzob.od.i", 
        "c2.thctrl.lock",
        "c2.thctrl.unlock",
        "c2.thctrl.deact",
        "c2.thctrl.act",
        "c2.thctrl.mode4", 
        "c2.thctrl.mode5",
        "c2.thctrl.mode6",
        "c2.thctrl.mode7",
        "c2.joint",
        "peripheral.rw.begin", 
        "peripheral.rw.end", 
        "c2.shor.l",
        "c2.shor.rl",
        "c2.shor.ra", 
        "c2.shsub.l",
        "c2.shsub.rl",
        "c2.shsub.ra",
        "c2.shadd.l",
        "c2.shadd.rl",
        "c2.shadd.ra",
        "c2.shor.l.i",
        "c2.shor.rl.i",
        "c2.shor.ra.i", 
        "c2.shsub.l.i",
        "c2.shsub.rl.i",
        "c2.shsub.ra.i",
        "c2.shadd.l.i",
        "c2.shadd.rl.i",
        "c2.shadd.ra.i",
        "c2.fork.m",
        "c2.fork.n", 
        // following instruction is a pseudo instruction used as
        // representive instruction when merging sl2 macro instruction 
        "c2.macro", 
#endif // TARG_SL2      

  "nop",
  "noop",
  //"add16"
  NULL);
}

Go to most recent revision | Compare with Previous | Blame | View Log