aboutsummaryrefslogtreecommitdiff
path: root/decuda_to_ptxplus/decudaInst.h
diff options
context:
space:
mode:
authorJimmy Kwa <[email protected]>2010-10-28 12:07:29 -0800
committerJimmy Kwa <[email protected]>2010-10-28 12:07:29 -0800
commit0586c55d7688f492d5264cb9299cf00ff73d3df7 (patch)
treeef1ecc58933398e333f16dc56915bdffc64ef422 /decuda_to_ptxplus/decudaInst.h
parent0efd3c00f5611bfa82b01d87d175122388d621cc (diff)
used p4 integrate to copy decuda_to_ptxplus into the distribtion folder. Edited baseline_ptxplus.config so the ptxplus regression runs properly.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7942]
Diffstat (limited to 'decuda_to_ptxplus/decudaInst.h')
-rw-r--r--decuda_to_ptxplus/decudaInst.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/decuda_to_ptxplus/decudaInst.h b/decuda_to_ptxplus/decudaInst.h
new file mode 100644
index 0000000..a1f0a8e
--- /dev/null
+++ b/decuda_to_ptxplus/decudaInst.h
@@ -0,0 +1,66 @@
+#include "stringList.h"
+#include <assert.h>
+
+class decudaInst
+{
+
+private:
+ //instruction data
+ char* m_label; //instruction label
+ char* m_predicate; //instruction predicate
+ char* m_base; //instruction mnemonic
+ stringList* m_baseModifiers; //base modifiers
+ stringList* m_typeModifiers; //operand types
+ stringList* m_operands; //operands
+ stringList* m_predicateModifiers; //predicate modifiers
+
+
+ int m_opPerCycle; // stores operations per cycle count for current instruction
+
+ //next instruction in linked list
+ //direction is m_listStart to m_listEnd
+ decudaInst* m_nextDecudaInst;
+
+ // print instruction unmodified
+ void printDefaultPtx();
+ void printBaseModifiers();
+ void printTypeModifiers();
+ void printOperands();
+ void printLabel();
+ void printPredicate();
+
+public:
+ //constructor
+ decudaInst();
+
+ //accessors
+ char* getBase();
+ stringList* getOperands();
+ stringList* getBaseModifiers();
+ stringList* getTypeModifiers();
+ decudaInst* getNextDecudaInst();
+
+ int getOpPerCycle() const { return m_opPerCycle; }
+
+ bool isEntryStart(); // true if start of an entry
+
+ //mutators
+ void setBase(char* setBaseValue);
+ void addBaseModifier(char* addBaseMod);
+ void addTypeModifier(char* addTypeMod);
+ void addOperand(char* addOp);
+ void setPredicate(char* setPredicateValue);
+ void addPredicateModifier(char* addPredicateMod);
+ void setLabel(char* setLabelValue);
+
+ void setNextDecudaInst(decudaInst* setDecudaInstValue);
+
+ //print representation
+ bool printHeaderInst();
+ bool printHeaderInst2();
+ void printDecudaInst();
+ void printNewPtx();
+ void printHeaderPtx();
+ //TODO: translate to New PTX and print
+
+};