@@ -36,11 +36,9 @@ class CisaBinary;
3636class VISAKernelImpl ;
3737class VISAFunction ;
3838
39- #ifndef DLL_MODE
4039extern FILE *CISAin;
4140extern FILE *CISAout;
4241extern int CISAdebug;
43- #endif
4442
4543#include " VISABuilderAPIDefinition.h"
4644#include " visa_wa.h"
@@ -72,12 +70,17 @@ class CISA_IR_Builder : public VISABuilder
7270
7371 CISA_IR_Builder (CM_VISA_BUILDER_OPTION buildOption, int majorVersion, int minorVersion, PVISA_WA_TABLE pWaTable) : m_mem(4096 )
7472 {
73+ memset (&m_header, 0 , sizeof (m_header));
74+
7575 mBuildOption = buildOption;
7676 m_executionSatarted = false ;
7777 m_kernel_count = 0 ;
7878 m_function_count = 0 ;
79- m_majorVersion = majorVersion;
80- m_minorVersion = minorVersion;
79+
80+ m_header.major_version = majorVersion;
81+ m_header.minor_version = minorVersion;
82+ m_header.magic_number = COMMON_ISA_MAGIC_NUM;
83+
8184 m_cisaBinary = new (m_mem) CisaFramework::CisaBinary (&m_options);
8285 m_currentKernel = NULL ;
8386 m_pWaTable = pWaTable;
@@ -101,9 +104,10 @@ class CISA_IR_Builder : public VISABuilder
101104 return true ;
102105 }
103106
104- void closeCISAParsingFile () {fclose (CISAin);}
107+ void closeCISAParsingFile () { fclose (CISAin); }
105108
106109 #endif
110+
107111 /* *************START VISA BUILDER API*****************************/
108112
109113 static int CreateBuilder (CISA_IR_Builder *&builder,
@@ -125,18 +129,26 @@ class CISA_IR_Builder : public VISABuilder
125129 CM_BUILDER_API void SetOption (vISAOptions option, uint32_t val) { m_options.setOption (option, val); }
126130 CM_BUILDER_API void SetOption (vISAOptions option, const char *val) { m_options.setOption (option, val); }
127131
132+ // Used for inline asm code generation
133+ CM_BUILDER_API virtual int ParseVISAText (const std::string& visaHeader, const std::string& visaText, const std::string& visaTextFile);
134+ CM_BUILDER_API virtual int WriteVISAHeader ();
135+ CM_BUILDER_API std::stringstream& GetAsmTextStream () { return m_ssIsaAsm; }
136+ CM_BUILDER_API std::stringstream& GetAsmTextHeaderStream () { return m_ssIsaAsmHeader; }
137+ CM_BUILDER_API virtual VISAKernel* GetKernel ();
138+
128139 /* *************END VISA BUILDER API*************************/
129140
130141 string_pool_entry** branch_targets;
142+ common_isa_header m_header;
131143
132144 VISAKernelImpl *m_kernel;
133145 CisaFramework::CisaBinary *m_cisaBinary;
134146 VISAKernelImpl * get_kernel () { return m_kernel; }
135147
136148 void CISA_IR_setVersion (unsigned char major_ver, unsigned char minor_ver)
137149 {
138- m_majorVersion = major_ver;
139- m_minorVersion = minor_ver;
150+ m_header. major_version = major_ver;
151+ m_header. minor_version = minor_ver;
140152 }
141153
142154 Common_ISA_Input_Class get_input_class (Common_ISA_Var_Class var_class);
@@ -754,6 +766,8 @@ class CISA_IR_Builder : public VISABuilder
754766 void setTestName (std::string name) { testName = name; }
755767
756768 Options m_options;
769+ std::stringstream m_ssIsaAsm;
770+ std::stringstream m_ssIsaAsmHeader;
757771
758772 void setupNativeRelocs (unsigned int , const BasicRelocEntry*);
759773 NativeRelocs* getNativeRelocs (bool createIfNULL = true )
@@ -778,8 +792,6 @@ class CISA_IR_Builder : public VISABuilder
778792
779793 unsigned int m_kernel_count;
780794 unsigned int m_function_count;
781- int m_majorVersion;
782- int m_minorVersion;
783795
784796 std::list<VISAKernelImpl *> m_kernels;
785797 // keeps track of functions for stitching purposes, after compilation.
@@ -803,4 +815,5 @@ class CISA_IR_Builder : public VISABuilder
803815 void * gtpin_init = nullptr ;
804816};
805817extern _THREAD CISA_IR_Builder * pCisaBuilder;
818+
806819#endif
0 commit comments