diff options
author | Alon Zakai <alonzakai@gmail.com> | 2014-01-07 17:51:52 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2014-01-07 17:51:52 -0800 |
commit | 6c302d79abf0fa9a7819ed5a31c49d02be8dc8a4 (patch) | |
tree | cc7fe1f4b8b27f4a31d74a89543c41d3eb43f45b /lib/Target/JSBackend/JSBackend.cpp | |
parent | 1f526e71d9eda3515d0d80f0589424eb193f3283 (diff) |
emit simd signal in metadata
Diffstat (limited to 'lib/Target/JSBackend/JSBackend.cpp')
-rw-r--r-- | lib/Target/JSBackend/JSBackend.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Target/JSBackend/JSBackend.cpp b/lib/Target/JSBackend/JSBackend.cpp index cef52e313d..f09a4063ec 100644 --- a/lib/Target/JSBackend/JSBackend.cpp +++ b/lib/Target/JSBackend/JSBackend.cpp @@ -102,13 +102,13 @@ namespace { std::map<std::string, unsigned> IndexedFunctions; // name -> index FunctionTableMap FunctionTables; // sig => list of functions std::vector<std::string> GlobalInitializers; + bool UsesSIMD; #include "CallHandlers.h" public: static char ID; - explicit JSWriter(formatted_raw_ostream &o) : - ModulePass(ID), Out(o), UniqueNum(0) {} + explicit JSWriter(formatted_raw_ostream &o) : ModulePass(ID), Out(o), UniqueNum(0), UsesSIMD(false) {} virtual const char *getPassName() const { return "JavaScript backend"; } @@ -802,7 +802,8 @@ std::string JSWriter::getValueAsCastParenStr(const Value* V, AsmCast sign) { bool JSWriter::generateSIMDInstruction(const std::string &iName, const Instruction *I, raw_string_ostream& Code) { #define CHECK_VECTOR(VT) \ assert(VT->getElementType()->getPrimitiveSizeInBits() == 32); \ - assert(VT->getNumElements() == 4); + assert(VT->getNumElements() == 4); \ + UsesSIMD = true; if (VectorType *VT = dyn_cast<VectorType>(I->getType())) { // vector-producing instructions @@ -1578,7 +1579,10 @@ void JSWriter::printModuleBody() { } Out << "\"" + GlobalInitializers[i] + "\""; } - Out << "]"; + Out << "],"; + + Out << "\"simd\": "; + Out << (UsesSIMD ? "1" : "0"); Out << "\n}\n"; } |