aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/JSBackend/JSBackend.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-01-07 17:51:52 -0800
committerAlon Zakai <alonzakai@gmail.com>2014-01-07 17:51:52 -0800
commit6c302d79abf0fa9a7819ed5a31c49d02be8dc8a4 (patch)
treecc7fe1f4b8b27f4a31d74a89543c41d3eb43f45b /lib/Target/JSBackend/JSBackend.cpp
parent1f526e71d9eda3515d0d80f0589424eb193f3283 (diff)
emit simd signal in metadata
Diffstat (limited to 'lib/Target/JSBackend/JSBackend.cpp')
-rw-r--r--lib/Target/JSBackend/JSBackend.cpp12
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";
}