Add initial integrated assembler w/ some Xmm ops.
Add a flag to use the integrated assembler.
Handle simple XMM binary op instructions as an initial example of how
instructions might be handled. This tests fixups in a very limited sense --
Track buffer locations of fixups for floating point immediates.
Patchset one shows the original dart assembler code (revision 39313), so that
it can be diffed.
BUG=none
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/574133002
diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp
index 3bae591..f663155 100644
--- a/src/IceTargetLowering.cpp
+++ b/src/IceTargetLowering.cpp
@@ -15,6 +15,7 @@
//
//===----------------------------------------------------------------------===//
+#include "assembler_ia32.h"
#include "IceCfg.h" // setError()
#include "IceCfgNode.h"
#include "IceOperand.h"
@@ -97,6 +98,15 @@
return NULL;
}
+Assembler *TargetLowering::createAssembler(TargetArch Target, Cfg *Func) {
+ // These statements can be #ifdef'd to specialize the assembler
+ // to a subset of the available targets. TODO: use CRTP.
+ if (Target == Target_X8632)
+ return new x86::AssemblerX86();
+ Func->setError("Unsupported target");
+ return NULL;
+}
+
void TargetLowering::doAddressOpt() {
if (llvm::isa<InstLoad>(*Context.getCur()))
doAddressOptLoad();