1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
#include <string>
#include <sstream>
#include <assert.h>
#include <iostream>
#include "fpconfig.hh"
#include "extrasrc/fptypes.hh"
#include "grammar.hh"
#include "opcodename.hh"
using namespace FPoptimizer_Grammar;
using namespace FUNCTIONPARSERTYPES;
const std::string FP_GetOpcodeName(FPoptimizer_Grammar::SpecialOpcode opcode, bool pad)
{
#if 1
/* Symbolic meanings for the opcodes? */
const char* p = 0;
switch( opcode )
{
case NumConstant: p = "NumConstant"; break;
case ParamHolder: p = "ParamHolder"; break;
case SubFunction: p = "SubFunction"; break;
}
std::ostringstream tmp;
//if(!p) std::cerr << "o=" << opcode << "\n";
assert(p);
tmp << p;
if(pad) while(tmp.str().size() < 12) tmp << ' ';
return tmp.str();
#else
/* Just numeric meanings */
std::ostringstream tmp;
tmp << opcode;
if(pad) while(tmp.str().size() < 5) tmp << ' ';
return tmp.str();
#endif
}
const std::string FP_GetOpcodeName(FUNCTIONPARSERTYPES::OPCODE opcode, bool pad)
{
#if 1
/* Symbolic meanings for the opcodes? */
const char* p = 0;
switch(opcode)
{
case cAbs: p = "cAbs"; break;
case cAcos: p = "cAcos"; break;
case cAcosh: p = "cAcosh"; break;
case cArg: p = "cArg"; break;
case cAsin: p = "cAsin"; break;
case cAsinh: p = "cAsinh"; break;
case cAtan: p = "cAtan"; break;
case cAtan2: p = "cAtan2"; break;
case cAtanh: p = "cAtanh"; break;
case cCbrt: p = "cCbrt"; break;
case cCeil: p = "cCeil"; break;
case cConj: p = "cConj"; break;
case cCos: p = "cCos"; break;
case cCosh: p = "cCosh"; break;
case cCot: p = "cCot"; break;
case cCsc: p = "cCsc"; break;
case cExp: p = "cExp"; break;
case cExp2: p = "cExp2"; break;
case cFloor: p = "cFloor"; break;
case cHypot: p = "cHypot"; break;
case cIf: p = "cIf"; break;
case cImag: p = "cImag"; break;
case cInt: p = "cInt"; break;
case cLog: p = "cLog"; break;
case cLog2: p = "cLog2"; break;
case cLog10: p = "cLog10"; break;
case cMax: p = "cMax"; break;
case cMin: p = "cMin"; break;
case cPolar: p = "cPolar"; break;
case cPow: p = "cPow"; break;
case cReal: p = "cReal"; break;
case cSec: p = "cSec"; break;
case cSin: p = "cSin"; break;
case cSinh: p = "cSinh"; break;
case cSqrt: p = "cSqrt"; break;
case cTan: p = "cTan"; break;
case cTanh: p = "cTanh"; break;
case cTrunc: p = "cTrunc"; break;
case cImmed: p = "cImmed"; break;
case cJump: p = "cJump"; break;
case cNeg: p = "cNeg"; break;
case cAdd: p = "cAdd"; break;
case cSub: p = "cSub"; break;
case cMul: p = "cMul"; break;
case cDiv: p = "cDiv"; break;
case cMod: p = "cMod"; break;
case cEqual: p = "cEqual"; break;
case cNEqual: p = "cNEqual"; break;
case cLess: p = "cLess"; break;
case cLessOrEq: p = "cLessOrEq"; break;
case cGreater: p = "cGreater"; break;
case cGreaterOrEq: p = "cGreaterOrEq"; break;
case cNot: p = "cNot"; break;
case cAnd: p = "cAnd"; break;
case cOr: p = "cOr"; break;
case cDeg: p = "cDeg"; break;
case cRad: p = "cRad"; break;
case cFCall: p = "cFCall"; break;
case cPCall: p = "cPCall"; break;
#ifdef FP_SUPPORT_OPTIMIZER
case cFetch: p = "cFetch"; break;
case cPopNMov: p = "cPopNMov"; break;
case cLog2by: p = "cLog2by"; break;
case cNop: p = "cNop"; break;
#endif
case cSinCos: p = "cSinCos"; break;
case cSinhCosh: p = "cSinhCosh"; break;
case cAbsNot: p = "cAbsNot"; break;
case cAbsNotNot: p = "cAbsNotNot"; break;
case cAbsAnd: p = "cAbsAnd"; break;
case cAbsOr: p = "cAbsOr"; break;
case cAbsIf: p = "cAbsIf"; break;
case cDup: p = "cDup"; break;
case cInv: p = "cInv"; break;
case cSqr: p = "cSqr"; break;
case cRDiv: p = "cRDiv"; break;
case cRSub: p = "cRSub"; break;
case cNotNot: p = "cNotNot"; break;
case cRSqrt: p = "cRSqrt"; break;
case VarBegin: p = "VarBegin"; break;
}
std::ostringstream tmp;
//if(!p) std::cerr << "o=" << opcode << "\n";
assert(p);
tmp << p;
if(pad) while(tmp.str().size() < 12) tmp << ' ';
return tmp.str();
#else
/* Just numeric meanings */
std::ostringstream tmp;
tmp << opcode;
if(pad) while(tmp.str().size() < 5) tmp << ' ';
return tmp.str();
#endif
}
|