fp.isa revision 2573
112157Sandreas.sandberg@arm.com// -*- mode:c++ -*-
212157Sandreas.sandberg@arm.com
312157Sandreas.sandberg@arm.com////////////////////////////////////////////////////////////////////
412157Sandreas.sandberg@arm.com//
512157Sandreas.sandberg@arm.com// Floating Point operate instructions
612157Sandreas.sandberg@arm.com//
712157Sandreas.sandberg@arm.com
812157Sandreas.sandberg@arm.comoutput header {{
912157Sandreas.sandberg@arm.com        /**
1012157Sandreas.sandberg@arm.com         * Base class for FP operations.
1112157Sandreas.sandberg@arm.com         */
1212157Sandreas.sandberg@arm.com        class FPOp : public MipsStaticInst
1312157Sandreas.sandberg@arm.com        {
1412157Sandreas.sandberg@arm.com                protected:
1512157Sandreas.sandberg@arm.com
1612157Sandreas.sandberg@arm.com                /// Constructor
1712157Sandreas.sandberg@arm.com                FPOp(const char *mnem, MachInst _machInst, OpClass __opClass) : MipsStaticInst(mnem, _machInst, __opClass)
1812157Sandreas.sandberg@arm.com                {
1912157Sandreas.sandberg@arm.com                }
2012157Sandreas.sandberg@arm.com
2112157Sandreas.sandberg@arm.com                std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
2212157Sandreas.sandberg@arm.com        };
2312157Sandreas.sandberg@arm.com}};
2412157Sandreas.sandberg@arm.com
2512157Sandreas.sandberg@arm.comoutput decoder {{
2612157Sandreas.sandberg@arm.com        std::string FPOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
2712157Sandreas.sandberg@arm.com        {
2812157Sandreas.sandberg@arm.com                return "Disassembly of integer instruction\n";
2912157Sandreas.sandberg@arm.com        }
3012157Sandreas.sandberg@arm.com}};
3112157Sandreas.sandberg@arm.com
3212157Sandreas.sandberg@arm.com
3312157Sandreas.sandberg@arm.com// Primary format for float operate instructions:
3412157Sandreas.sandberg@arm.comdef format FloatOp(code, *flags) {{
3512157Sandreas.sandberg@arm.com        iop = InstObjParams(name, Name, 'MipsStaticInst', CodeBlock(code), flags)
3612157Sandreas.sandberg@arm.com        header_output = BasicDeclare.subst(iop)
3712157Sandreas.sandberg@arm.com        decoder_output = BasicConstructor.subst(iop)
3812157Sandreas.sandberg@arm.com        decode_block = BasicDecode.subst(iop)
3912157Sandreas.sandberg@arm.com        exec_output = BasicExecute.subst(iop)
4012157Sandreas.sandberg@arm.com}};
4112157Sandreas.sandberg@arm.com
4212157Sandreas.sandberg@arm.com// Primary format for float64 operate instructions:
4312157Sandreas.sandberg@arm.comdef format Float64Op(code, *flags) {{
4412157Sandreas.sandberg@arm.com        iop = InstObjParams(name, Name, 'MipsStaticInst', CodeBlock(code), flags)
4512157Sandreas.sandberg@arm.com        header_output = BasicDeclare.subst(iop)
4612157Sandreas.sandberg@arm.com        decoder_output = BasicConstructor.subst(iop)
4712157Sandreas.sandberg@arm.com        decode_block = BasicDecode.subst(iop)
4812161Sandreas.sandberg@arm.com        exec_output = BasicExecute.subst(iop)
4912161Sandreas.sandberg@arm.com}};
5012157Sandreas.sandberg@arm.com