aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-01-30 15:40:42 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2017-02-01 11:52:40 +0000
commit835f8a90387c8d62e7ab262d23e3ab103aa6d133 (patch)
treeb697ebf83658dc8cb198526bc85d8ba38c83cf35 /src/qml/jit
parent9d890a575ce32f97d0b4a9272198e35d047cd3f6 (diff)
Allow selecting armv7 as target architecture in qmlcachegen
Change-Id: I36e8f95e83ea3de6553145efc762e3bc46f60071 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit')
-rw-r--r--src/qml/jit/qv4isel_masm.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp
index 58fafc4cd5..b1134d2bec 100644
--- a/src/qml/jit/qv4isel_masm.cpp
+++ b/src/qml/jit/qv4isel_masm.cpp
@@ -1667,9 +1667,32 @@ namespace QV4 { namespace JIT {
template class Q_QML_EXPORT InstructionSelection<>;
template class Q_QML_EXPORT ISelFactory<>;
#if defined(V4_BOOTSTRAP) && CPU(X86_64)
-using ARMv7CrossAssembler = QV4::JIT::Assembler<AssemblerTargetConfiguration<JSC::MacroAssemblerARMv7, NoOperatingSystemSpecialization>>;
-template class Q_QML_EXPORT InstructionSelection<ARMv7CrossAssembler>;
-template class Q_QML_EXPORT ISelFactory<ARMv7CrossAssembler>;
+
+Q_QML_EXPORT QV4::EvalISelFactory *createISelForArchitecture(const QString &architecture)
+{
+ using ARMv7CrossAssembler = QV4::JIT::Assembler<AssemblerTargetConfiguration<JSC::MacroAssemblerARMv7, NoOperatingSystemSpecialization>>;
+
+ if (architecture == QLatin1String("armv7"))
+ return new ISelFactory<ARMv7CrossAssembler>;
+
+ QString hostArch;
+#if CPU(ARM_THUMB2)
+ hostArch = QStringLiteral("armv7");
+#elif CPU(ARM64)
+ hostArch = QStringLiteral("armv8");
+#elif CPU(MIPS)
+ hostArch = QStringLiteral("mips");
+#elif CPU(X86)
+ hostArch = QStringLiteral("x86");
+#elif CPU(X86_64)
+ hostArch = QStringLiteral("x86_64");
+#endif
+ if (!hostArch.isEmpty() && architecture == hostArch)
+ return new ISelFactory<>;
+
+ return nullptr;
+}
+
#endif
} }
QT_END_NAMESPACE