Fixed some back slash crap when stringify the simulator c++ files
authorBenjamin Segovia <segovia.benjamin@gmail.com>
Tue, 10 Apr 2012 09:57:48 +0000 (02:57 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 10 Aug 2012 23:16:14 +0000 (16:16 -0700)
backend/src/CMakeLists.txt
backend/src/backend/sim/sim_vector_str.cpp
backend/src/backend/sim/simulator_str.cpp
backend/src/backend/sim_context.cpp

index eca4d44..7ee1714 100644 (file)
@@ -11,8 +11,8 @@ foreach (to_stringify_file ${TO_STRINGIFY_FILES})
     COMMAND echo "\\\#include ${string_header}" >> ${output_file}
     COMMAND echo "namespace gbe {" >> ${output_file}
     COMMAND echo "std::string ${to_stringify_file}_str = " >> ${output_file}
-    # Yeah!!! welcome to quote hell!
-    COMMAND cat ${input_file} | sed 's/\\\"/\\\\\\\"/g' | awk '{ printf \(\"\\"%s\\\\n\\"\\n\", $$0\) }' >> ${output_file}
+    # Yeah!!! welcome to back slash hell
+    COMMAND cat ${input_file} |sed 's/\\\\/\\\\\\\\/g' | sed 's/\\\"/\\\\\\\"/g' | awk '{ printf \(\"\\"%s\\\\n\\"\\n\", $$0\) }' >> ${output_file}
     COMMAND echo "\;" >> ${output_file}
     COMMAND echo "}" >> ${output_file}
     COMMAND echo "" >> ${output_file}
index 87ff6de..4d981ea 100644 (file)
@@ -44,8 +44,8 @@ std::string sim_vector_str =
 " */\n"
 "\n"
 "/**\n"
-" * \file sim_vector.h\n"
-" * \author Benjamin Segovia <benjamin.segovia@intel.com>\n"
+" * \\file sim_vector.h\n"
+" * \\author Benjamin Segovia <benjamin.segovia@intel.com>\n"
 " *\n"
 " * c++ class helper for the simulator\n"
 " */\n"
@@ -170,19 +170,19 @@ std::string sim_vector_str =
 "}\n"
 "\n"
 "/* Vector instructions that use sse* */\n"
-"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, INTRINSIC_NAME, FN, FN0, FN1)\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i)\\n"
-"    dst.m[i] = FN(INTRINSIC_NAME(FN0(v0.m[i]), FN1(v1.m[i])));\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\n"
-"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\n"
-"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\n"
+"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, INTRINSIC_NAME, FN, FN0, FN1)\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i)\\\n"
+"    dst.m[i] = FN(INTRINSIC_NAME(FN0(v0.m[i]), FN1(v1.m[i])));\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\\n"
+"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\\n"
+"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\\n"
 "}\n"
 "VEC_OP(simd_dw<vectorNum>, simd_dw<vectorNum>, ADD_F, _mm_add_ps, ID, ID, ID);\n"
 "VEC_OP(simd_dw<vectorNum>, simd_dw<vectorNum>, SUB_F, _mm_sub_ps, ID, ID, ID);\n"
@@ -205,42 +205,42 @@ std::string sim_vector_str =
 "#undef VEC_OP\n"
 "\n"
 "/* Vector integer operations that we can get by switching argument order */\n"
-"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, INTRINSIC_NAME, FN, FN0, FN1)\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i)\\n"
-"    dst.m[i] = _mm_xor_ps(FN(INTRINSIC_NAME(FN1(v0.m[i]), FN0(v1.m[i]))), alltrue.v);\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\n"
-"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\n"
-"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\n"
+"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, INTRINSIC_NAME, FN, FN0, FN1)\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i)\\\n"
+"    dst.m[i] = _mm_xor_ps(FN(INTRINSIC_NAME(FN1(v0.m[i]), FN0(v1.m[i]))), alltrue.v);\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\\n"
+"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\\n"
+"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\\n"
 "}\n"
 "VEC_OP(simd_m<vectorNum>, simd_dw<vectorNum>, GE_S32, _mm_cmplt_epi32, SI2PS, PS2SI, PS2SI);\n"
 "VEC_OP(simd_m<vectorNum>, simd_dw<vectorNum>, LE_S32, _mm_cmpgt_epi32, SI2PS, PS2SI, PS2SI);\n"
 "#undef VEC_OP\n"
 "\n"
 "/* Vector binary integer operations that require C */\n"
-"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, OP, FIELD)\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i) {\\n"
-"    cast_dw c0(v0.m[i]), c1(v1.m[i]), d;\\n"
-"    for (uint32_t j = 0; j < 4; ++j)\\n"
-"      d.FIELD[j] = c0.FIELD[j] OP c1.FIELD[j];\\n"
-"    dst.m[i] = d.v;\\n"
-"  }\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\n"
-"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\n"
-"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\n"
+"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, OP, FIELD)\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i) {\\\n"
+"    cast_dw c0(v0.m[i]), c1(v1.m[i]), d;\\\n"
+"    for (uint32_t j = 0; j < 4; ++j)\\\n"
+"      d.FIELD[j] = c0.FIELD[j] OP c1.FIELD[j];\\\n"
+"    dst.m[i] = d.v;\\\n"
+"  }\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\\n"
+"  NAME(dst, v0, simd_dw<vectorNum>(v1));\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\\n"
+"  NAME(dst, simd_dw<vectorNum>(v0), v1);\\\n"
 "}\n"
 "VEC_OP(simd_dw<vectorNum>, simd_dw<vectorNum>, MUL_S32, *, s);\n"
 "VEC_OP(simd_dw<vectorNum>, simd_dw<vectorNum>, DIV_S32, /, s);\n"
@@ -251,33 +251,33 @@ std::string sim_vector_str =
 "#undef VEC_OP\n"
 "\n"
 "/* Vector compare vectors that require C */\n"
-"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, OP, FIELD)\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i) {\\n"
-"    cast_dw c0(v0.m[i]), c1(v1.m[i]), d;\\n"
-"    for (uint32_t j = 0; j < 4; ++j)\\n"
-"      d.u[j] = (c0.FIELD[j] OP c1.FIELD[j]) ? ~0u : 0u;\\n"
-"    dst.m[i] = d.v;\\n"
-"  }\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i) {\\n"
-"    cast_dw c0(v0.m[i]), d;\\n"
-"    for (uint32_t j = 0; j < 4; ++j)\\n"
-"      d.u[j] = (c0.FIELD[j] OP v1.FIELD) ? ~0u : 0u;\\n"
-"    dst.m[i] = d.v;\\n"
-"  }\\n"
-"}\\n"
-"template <uint32_t vectorNum>\\n"
-"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\n"
-"  for (uint32_t i = 0; i < vectorNum; ++i) {\\n"
-"    cast_dw c1(v1.m[i]), d;\\n"
-"    for (uint32_t j = 0; j < 4; ++j)\\n"
-"      d.u[j] = (v0.FIELD OP c1.FIELD[j]) ? ~0u : 0u;\\n"
-"    dst.m[i] = d.v;\\n"
-"  }\\n"
+"#define VEC_OP(DST_TYPE, SRC_TYPE, NAME, OP, FIELD)\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const SRC_TYPE &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i) {\\\n"
+"    cast_dw c0(v0.m[i]), c1(v1.m[i]), d;\\\n"
+"    for (uint32_t j = 0; j < 4; ++j)\\\n"
+"      d.u[j] = (c0.FIELD[j] OP c1.FIELD[j]) ? ~0u : 0u;\\\n"
+"    dst.m[i] = d.v;\\\n"
+"  }\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const SRC_TYPE &v0, const scalar_dw &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i) {\\\n"
+"    cast_dw c0(v0.m[i]), d;\\\n"
+"    for (uint32_t j = 0; j < 4; ++j)\\\n"
+"      d.u[j] = (c0.FIELD[j] OP v1.FIELD) ? ~0u : 0u;\\\n"
+"    dst.m[i] = d.v;\\\n"
+"  }\\\n"
+"}\\\n"
+"template <uint32_t vectorNum>\\\n"
+"INLINE void NAME(DST_TYPE &dst, const scalar_dw &v0, const SRC_TYPE &v1) {\\\n"
+"  for (uint32_t i = 0; i < vectorNum; ++i) {\\\n"
+"    cast_dw c1(v1.m[i]), d;\\\n"
+"    for (uint32_t j = 0; j < 4; ++j)\\\n"
+"      d.u[j] = (v0.FIELD OP c1.FIELD[j]) ? ~0u : 0u;\\\n"
+"    dst.m[i] = d.v;\\\n"
+"  }\\\n"
 "}\n"
 "VEC_OP(simd_m<vectorNum>, simd_dw<vectorNum>, LE_U32, <=, u);\n"
 "VEC_OP(simd_m<vectorNum>, simd_dw<vectorNum>, LT_U32, <, u);\n"
index 695c65f..ec2b637 100644 (file)
@@ -44,8 +44,8 @@ std::string simulator_str =
 " */\n"
 "\n"
 "/**\n"
-" * \file simulator.h\n"
-" * \author Benjamin Segovia <benjamin.segovia@intel.com>\n"
+" * \\file simulator.h\n"
+" * \\author Benjamin Segovia <benjamin.segovia@intel.com>\n"
 " *\n"
 " * C interface for the gen simulator\n"
 " */\n"
index 7a5d57c..57edb3d 100644 (file)
@@ -39,6 +39,7 @@ namespace gbe
   }
 
   extern std::string simulator_str;
+  extern std::string sim_vector_str;
 
   void SimContext::emitCode(void) {
     SimKernel *simKernel = static_cast<SimKernel*>(this->kernel);
@@ -50,6 +51,7 @@ namespace gbe
     std::ofstream ostream;
     ostream.open(srcName);
     ostream << simulator_str << std::endl;
+    ostream << sim_vector_str << std::endl;
     ostream << "#include <stdint.h>\n";
     ostream << "extern \"C\" void " << name
             << "(gbe_simulator sim, uint32_t thread, uint32_t group_x, uint32_t group_y, uint32_t group_z)" << std::endl