at.dms.kjc.spacetime
Class TraceIRtoC

java.lang.Object
  extended by at.dms.kjc.KjcEmptyVisitor
      extended by at.dms.kjc.SLIREmptyVisitor
          extended by at.dms.kjc.common.ToCCommon
              extended by at.dms.kjc.common.ToC
                  extended by at.dms.kjc.spacetime.TraceIRtoC
All Implemented Interfaces:
Constants, CodeGenerator, KjcVisitor, SLIRVisitor

public class TraceIRtoC
extends ToC

This class returns the c code (a string) for a given raw tile


Field Summary
static String DUMMY_VOLATILE
          a var name used to receive data from the dram on the compute proc over the gdn that is not needed but only generated because we have cache-line sized transfers from drams.
static String DYNMSGHEADER
          the name of the var that holds the dynamic message header
 
Fields inherited from class at.dms.kjc.common.ToC
isInit, method
 
Fields inherited from class at.dms.kjc.common.ToCCommon
alternatePrintsForTiming, hasBoolType, lastLeft, p, printPostfixMap, printPrefixMap
 
Fields inherited from interface at.dms.kjc.Constants
CMP_VERSION, JAV_CLASS, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_THIS, JAV_THROWABLE, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LE, OPE_LNOT, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BIT, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_SHORT, TID_VECTOR, TID_VOID, VECTOR_EMPTY
 
Fields inherited from interface at.dms.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INLINE, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_EXCEPTIONS, ATT_GENERIC, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_SOURCEFILE, ATT_SYNTHETIC, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Constructor Summary
TraceIRtoC()
           
TraceIRtoC(ComputeNode tile)
           
 
Method Summary
 void createCCode()
          The entry point to create C code for a RawTile
static String getNetRegsDecls()
           
 void pushClass(CType tapeType, JExpression val)
           
 void visitAssignmentExpression(JAssignmentExpression self, JExpression left, JExpression right)
          prints an assignment expression
 void visitForStatement(JForStatement self, JStatement init, JExpression cond, JStatement incr, JStatement body)
          prints a for statement
 void visitInlineAssembly(InlineAssembly self, String[] asm, String[] input, String[] clobber)
          prints InlineAssembly code
 void visitMethodCallExpression(JMethodCallExpression self, JExpression prefix, String ident, JExpression[] args)
          prints a method call expression
 void visitMethodDeclaration(JMethodDeclaration self, int modifiers, CType returnType, String ident, JFormalParameter[] parameters, CClassType[] exceptions, JBlock body)
          prints a method declaration
 void visitPeekExpression(SIRPeekExpression self, CType tapeType, JExpression num)
          Visits a peek expression.
 void visitPopExpression(SIRPopExpression self, CType tapeType)
          Visits a pop expression.
 void visitPrintStatement(SIRPrintStatement self, JExpression exp)
          Process a Print statment, table driven to allow several backends Deals with the problem of string concatenation in Java not translating to our output languages C or C++
 void visitPushExpression(SIRPushExpression self, CType tapeType, JExpression val)
          Visits a push expression.
 void visitRegReceiverStatement(SIRRegReceiverStatement self, JExpression portal, SIRStream receiver, JMethodDeclaration[] methods)
          Visits a register-receiver statement.
 void visitRegSenderStatement(SIRRegSenderStatement self, String fn, SIRLatency latency)
          Visits a register-sender statement.
 void visitVariableDefinition(JVariableDefinition self, int modifiers, CType type, String ident, JExpression expr)
          prints a variable declaration statement
 
Methods inherited from class at.dms.kjc.common.ToC
clear, declareInitializedArray, isDeclOnly, passParentheses, setDeclOnly, visitArgs, visitArrayAccessExpression, visitArrayInitializer, visitArrayLengthExpression, visitBinaryExpression, visitBitwiseExpression, visitBooleanLiteral, visitByteLiteral, visitCharLiteral, visitConstructorCall, visitCreatePortalExpression, visitDoubleLiteral, visitFieldDeclaration, visitFieldExpression, visitFloatLiteral, visitFormalParameters, visitIfStatement, visitInitStatement, visitInterfaceTable, visitIntLiteral, visitLatency, visitLatencyMax, visitLatencyRange, visitLatencySet, visitLongLiteral, visitMessageStatement, visitNameExpression, visitNullLiteral, visitRelationalExpression, visitShortLiteral, visitStringLiteral, visitSuperExpression, visitSwitchGroup, visitSwitchLabel, visitThisExpression
 
Methods inherited from class at.dms.kjc.common.ToCCommon
getPrinter, makeArrayStrings, makeString, printDecl, printExp, printLParen, printRParen, printType, splitForPrint, visitBitwiseComplementExpression, visitBlockStatement, visitBreakStatement, visitCastExpression, visitClassExpression, visitCompoundAssignmentExpression, visitCompoundStatement, visitCompoundStatement, visitConditionalExpression, visitContinueStatement, visitDoStatement, visitEmittedTextExpression, visitEmptyStatement, visitEqualityExpression, visitExpressionListStatement, visitExpressionStatement, visitLabeledStatement, visitLocalVariableExpression, visitLogicalComplementExpression, visitMarker, visitParenthesedExpression, visitPostfixExpression, visitPrefixExpression, visitReturnStatement, visitShiftExpression, visitSwitchStatement, visitTypeDeclarationStatement, visitTypeNameExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitUnaryPromoteExpression, visitVariableDeclarationStatement, visitWhileStatement
 
Methods inherited from class at.dms.kjc.SLIREmptyVisitor
visitDynamicToken, visitFileReader, visitFileWriter, visitFunctionPointer, visitIdentity, visitMainFunction, visitNode, visitPortal, visitRangeExpression, visitRegisterReceiver, visitSetBodyOfFeedback, visitSetChild, visitSetDecode, visitSetDelay, visitSetEncode, visitSetJoiner, visitSetLoopOfFeedback, visitSetParallelStream, visitSetPeek, visitSetPop, visitSetPush, visitSetSplitter, visitSetStreamType, visitSetTape, visitSetWork, visitVectorLiteral, visitWorkEntry, visitWorkExit
 
Methods inherited from class at.dms.kjc.KjcEmptyVisitor
visitArgs, visitCatchClause, visitClassBody, visitClassDeclaration, visitClassImport, visitComment, visitComments, visitCompilationUnit, visitConstructorDeclaration, visitInnerClassDeclaration, visitInstanceofExpression, visitInterfaceDeclaration, visitJavadoc, visitNewArrayExpression, visitPackageImport, visitPackageName, visitQualifiedAnonymousCreation, visitQualifiedInstanceCreation, visitSynchronizedStatement, visitThrowStatement, visitTryCatchStatement, visitTryFinallyStatement, visitUnqualifiedAnonymousCreation, visitUnqualifiedInstanceCreation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface at.dms.kjc.common.CodeGenerator
getPrinter
 

Field Detail

DYNMSGHEADER

public static final String DYNMSGHEADER
the name of the var that holds the dynamic message header

See Also:
Constant Field Values

DUMMY_VOLATILE

public static final String DUMMY_VOLATILE
a var name used to receive data from the dram on the compute proc over the gdn that is not needed but only generated because we have cache-line sized transfers from drams.

See Also:
Constant Field Values
Constructor Detail

TraceIRtoC

public TraceIRtoC(ComputeNode tile)

TraceIRtoC

public TraceIRtoC()
Method Detail

createCCode

public void createCCode()
The entry point to create C code for a RawTile


getNetRegsDecls

public static String getNetRegsDecls()

visitForStatement

public void visitForStatement(JForStatement self,
                              JStatement init,
                              JExpression cond,
                              JStatement incr,
                              JStatement body)
prints a for statement

Specified by:
visitForStatement in interface KjcVisitor
Overrides:
visitForStatement in class ToCCommon

visitVariableDefinition

public void visitVariableDefinition(JVariableDefinition self,
                                    int modifiers,
                                    CType type,
                                    String ident,
                                    JExpression expr)
prints a variable declaration statement

Specified by:
visitVariableDefinition in interface KjcVisitor
Overrides:
visitVariableDefinition in class KjcEmptyVisitor

visitMethodDeclaration

public void visitMethodDeclaration(JMethodDeclaration self,
                                   int modifiers,
                                   CType returnType,
                                   String ident,
                                   JFormalParameter[] parameters,
                                   CClassType[] exceptions,
                                   JBlock body)
prints a method declaration

Specified by:
visitMethodDeclaration in interface KjcVisitor
Overrides:
visitMethodDeclaration in class KjcEmptyVisitor

visitAssignmentExpression

public void visitAssignmentExpression(JAssignmentExpression self,
                                      JExpression left,
                                      JExpression right)
prints an assignment expression

Specified by:
visitAssignmentExpression in interface KjcVisitor
Overrides:
visitAssignmentExpression in class KjcEmptyVisitor

visitMethodCallExpression

public void visitMethodCallExpression(JMethodCallExpression self,
                                      JExpression prefix,
                                      String ident,
                                      JExpression[] args)
prints a method call expression

Specified by:
visitMethodCallExpression in interface KjcVisitor
Overrides:
visitMethodCallExpression in class KjcEmptyVisitor

visitPeekExpression

public void visitPeekExpression(SIRPeekExpression self,
                                CType tapeType,
                                JExpression num)
Description copied from class: SLIREmptyVisitor
Visits a peek expression.

Specified by:
visitPeekExpression in interface SLIRVisitor
Overrides:
visitPeekExpression in class SLIREmptyVisitor

visitPopExpression

public void visitPopExpression(SIRPopExpression self,
                               CType tapeType)
Description copied from class: SLIREmptyVisitor
Visits a pop expression.

Specified by:
visitPopExpression in interface SLIRVisitor
Overrides:
visitPopExpression in class SLIREmptyVisitor

visitPrintStatement

public void visitPrintStatement(SIRPrintStatement self,
                                JExpression exp)
Description copied from class: ToCCommon
Process a Print statment, table driven to allow several backends Deals with the problem of string concatenation in Java not translating to our output languages C or C++

Specified by:
visitPrintStatement in interface SLIRVisitor
Overrides:
visitPrintStatement in class ToCCommon

pushClass

public void pushClass(CType tapeType,
                      JExpression val)

visitPushExpression

public void visitPushExpression(SIRPushExpression self,
                                CType tapeType,
                                JExpression val)
Description copied from class: SLIREmptyVisitor
Visits a push expression.

Specified by:
visitPushExpression in interface SLIRVisitor
Overrides:
visitPushExpression in class SLIREmptyVisitor

visitRegReceiverStatement

public void visitRegReceiverStatement(SIRRegReceiverStatement self,
                                      JExpression portal,
                                      SIRStream receiver,
                                      JMethodDeclaration[] methods)
Description copied from class: SLIREmptyVisitor
Visits a register-receiver statement.

Specified by:
visitRegReceiverStatement in interface SLIRVisitor
Overrides:
visitRegReceiverStatement in class SLIREmptyVisitor

visitRegSenderStatement

public void visitRegSenderStatement(SIRRegSenderStatement self,
                                    String fn,
                                    SIRLatency latency)
Description copied from class: SLIREmptyVisitor
Visits a register-sender statement.

Specified by:
visitRegSenderStatement in interface SLIRVisitor
Overrides:
visitRegSenderStatement in class SLIREmptyVisitor

visitInlineAssembly

public void visitInlineAssembly(InlineAssembly self,
                                String[] asm,
                                String[] input,
                                String[] clobber)
prints InlineAssembly code

Overrides:
visitInlineAssembly in class SLIREmptyVisitor