OpenADFortTk (basic)
src/xaif2whirl/XlateStmt.h
Go to the documentation of this file.
00001 // -*-Mode: C++;-*-
00002 // $Header: /Volumes/cvsrep/developer/OpenADFortTk/src/xaif2whirl/XlateStmt.h,v 1.2 2006/05/12 16:12:24 utke Exp $
00003 
00004 #ifndef XlateStmt_INCLUDED_h
00005 #define XlateStmt_INCLUDED_h
00006 
00007 #include <iostream>
00008 
00009 #include "xercesc/dom/DOMDocument.hpp"
00010 
00011 #include "Open64IRInterface/Open64BasicTypes.h"
00012 
00013 #include "PUXlationContext.h"
00014 
00015 namespace xaif2whirl {
00016 
00017   class XlateStmt { 
00018 
00019   public: 
00020 
00021     static WN* translateStmt(const DOMElement* stmt, 
00022                              PUXlationContext& ctxt); 
00023 
00029     static WN* translateAssignmentSimple(const DOMElement* stmt, 
00030                                          PUXlationContext& ctxt);
00031 
00032     static WN* patchWNStmt(WN* wn, PUXlationContext& ctxt);
00033 
00034   private: 
00035 
00036     static WN* xlate_Assignment(const DOMElement* elem, 
00037                                 PUXlationContext& ctxt);
00038 
00039     static WN* xlate_AssignmentLHS(const DOMElement* elem, 
00040                                    PUXlationContext& ctxt);
00041 
00042     static WN* xlate_AssignmentRHS(const DOMElement* elem, 
00043                                    PUXlationContext& ctxt);
00044 
00045     static WN* xlate_SubroutineCall(const DOMElement* elem, 
00046                                     PUXlationContext& ctxt);
00047 
00048     static WN* xlate_InlinableSubroutineCall(const DOMElement* elem, 
00049                                              PUXlationContext& ctxt);
00050 
00054     static WN* xlate_DerivativePropagator(const DOMElement* elem, 
00055                                           PUXlationContext& ctxt);
00056 
00057     static WN* xlate_SetDeriv(const DOMElement* elem, 
00058                               PUXlationContext& ctxt);
00059 
00060     static WN* xlate_SetNegDeriv(const DOMElement* elem,
00061                                  PUXlationContext& ctxt);
00062 
00063     static WN* xlate_IncDeriv(const DOMElement* elem,
00064                               PUXlationContext& ctxt);
00065 
00066     static WN* xlate_DecDeriv(const DOMElement* elem,
00067                               PUXlationContext& ctxt);
00068 
00069     static WN* xlate_ZeroDeriv(const DOMElement* elem, 
00070                                PUXlationContext& ctxt);
00076     static WN* xlate_Saxpy(const DOMElement* elem,
00077                            PUXlationContext& ctxt, 
00078                            bool saxpy);
00079 
00080     static void patchWN_IO(WN* wn, 
00081                            PUXlationContext& ctxt);
00082 
00083     static void patchWN_IO_cray(WN* wn, 
00084                                 PUXlationContext& ctxt);
00085 
00086     static void patchWN_IO_ITEM_list(WN* wn, 
00087                                      PUXlationContext& ctxt);
00088 
00089     static WN* createAssignment(WN* lhs, WN* rhs);
00090 
00091     static WN* createAssignment(ST* lhs, WN_OFFSET oset, WN* rhs);
00092 
00093     static WN* createZeroConst(TYPE_ID ty);
00094 
00095     static WN* createOpenADInline(const char* fname, std::vector<WN*>& args);
00096 
00097   }; 
00098 }
00099 
00100 #endif 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines