diff options
-rw-r--r-- | src/jsifier.js | 8 | ||||
-rw-r--r-- | src/parseTools.js | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/jsifier.js b/src/jsifier.js index 0b46a3e6..cb80e303 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1303,6 +1303,14 @@ function JSify(data, functionsOnly, givenFunctions) { } function loadHandler(item) { var value = finalizeLLVMParameter(item.pointer); + if (item.valueType[item.valueType.length-1] === '>') { + // vector load + var base = getVectorBaseType(item.type); + return base + '32x4(' + makeGetValue(value, 0, base, 0, item.unsigned, 0, item.align) + ',' + + makeGetValue(value, 4, base, 0, item.unsigned, 0, item.align) + ',' + + makeGetValue(value, 8, base, 0, item.unsigned, 0, item.align) + ',' + + makeGetValue(value, 12, base, 0, item.unsigned, 0, item.align) + ')'; + } var impl = item.ident ? getVarImpl(item.funcData, item.ident) : VAR_EMULATED; switch (impl) { case VAR_NATIVIZED: { diff --git a/src/parseTools.js b/src/parseTools.js index eb2b2210..9b497aff 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -324,6 +324,10 @@ function countNormalArgs(type, out, legalized) { return ret; } +function getVectorBaseType(type) { + return type.substring(type.indexOf(' x ') + 3, type.length-1); +} + function addIdent(token) { token.ident = token.text; return token; |