Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: src/IceTargetLowering.cpp

Issue 1075363002: Add a basic TargetARM32 skeleton which knows nothing. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: remove comments Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceTargetLowering.h ('k') | src/IceTargetLoweringARM32.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceTargetLowering.cpp
diff --git a/src/IceTargetLowering.cpp b/src/IceTargetLowering.cpp
index 39d27fe213551d14f26081886882dcd74a5fd2ab..93b48844f41f828673964af1e2164a8fd21a30f4 100644
--- a/src/IceTargetLowering.cpp
+++ b/src/IceTargetLowering.cpp
@@ -15,12 +15,14 @@
//
//===----------------------------------------------------------------------===//
+#include "assembler_arm32.h"
#include "assembler_ia32.h"
#include "IceCfg.h" // setError()
#include "IceCfgNode.h"
#include "IceOperand.h"
#include "IceRegAlloc.h"
#include "IceTargetLowering.h"
+#include "IceTargetLoweringARM32.h"
#include "IceTargetLoweringX8632.h"
namespace Ice {
@@ -62,34 +64,33 @@ Inst *LoweringContext::getLastInserted() const {
}
TargetLowering *TargetLowering::createLowering(TargetArch Target, Cfg *Func) {
- // These statements can be #ifdef'd to specialize the code generator
- // to a subset of the available targets. TODO: use CRTP.
- if (Target == Target_X8632)
- return TargetX8632::create(Func);
-#if 0
- if (Target == Target_X8664)
- return IceTargetX8664::create(Func);
- if (Target == Target_ARM32)
- return IceTargetARM32::create(Func);
- if (Target == Target_ARM64)
- return IceTargetARM64::create(Func);
-#endif
+#define SUBZERO_TARGET(X) \
+ if (Target == Target_##X) \
+ return Target##X::create(Func);
+#include "llvm/Config/SZTargets.def"
+
Func->setError("Unsupported target");
return nullptr;
}
TargetLowering::TargetLowering(Cfg *Func)
: Func(Func), Ctx(Func->getContext()), HasComputedFrame(false),
- CallsReturnsTwice(false), StackAdjustment(0), Context(),
- SnapshotStackAdjustment(0) {}
+ CallsReturnsTwice(false), StackAdjustment(0), NextLabelNumber(0),
+ Context(), SnapshotStackAdjustment(0) {}
std::unique_ptr<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.
+ // TODO(jvoung): use SZTargets.def (rename AssemblerX86 -> AssemblerX8632),
+ // and make the namespaces consistent.
if (Target == Target_X8632)
return std::unique_ptr<Assembler>(new x86::AssemblerX86());
- Func->setError("Unsupported target");
+
+ if (Target == Target_ARM32)
+ return std::unique_ptr<Assembler>(new AssemblerARM32());
+
+ Func->setError("Unsupported target assembler");
return nullptr;
}
@@ -229,22 +230,24 @@ void TargetLowering::regAlloc(RegAllocKind Kind) {
LinearScan.scan(RegMask, Ctx->getFlags().shouldRandomizeRegAlloc());
}
+InstCall *TargetLowering::makeHelperCall(const IceString &Name, Variable *Dest,
+ SizeT MaxSrcs) {
+ const bool HasTailCall = false;
+ Constant *CallTarget = Ctx->getConstantExternSym(Name);
+ InstCall *Call =
+ InstCall::create(Func, MaxSrcs, Dest, CallTarget, HasTailCall);
+ return Call;
+}
+
std::unique_ptr<TargetDataLowering>
TargetDataLowering::createLowering(GlobalContext *Ctx) {
- // These statements can be #ifdef'd to specialize the code generator
- // to a subset of the available targets. TODO: use CRTP.
TargetArch Target = Ctx->getFlags().getTargetArch();
- if (Target == Target_X8632)
- return std::unique_ptr<TargetDataLowering>(TargetDataX8632::create(Ctx));
-#if 0
- if (Target == Target_X8664)
- return std::unique_ptr<TargetDataLowering>(TargetDataX8664::create(Ctx));
- if (Target == Target_ARM32)
- return std::unique_ptr<TargetDataLowering>(TargetDataARM32::create(Ctx));
- if (Target == Target_ARM64)
- return std::unique_ptr<TargetDataLowering>(TargetDataARM64::create(Ctx));
-#endif
- llvm_unreachable("Unsupported target");
+#define SUBZERO_TARGET(X) \
+ if (Target == Target_##X) \
+ return std::unique_ptr<TargetDataLowering>(TargetData##X::create(Ctx));
+#include "llvm/Config/SZTargets.def"
+
+ llvm_unreachable("Unsupported target data lowering");
return nullptr;
}
« no previous file with comments | « src/IceTargetLowering.h ('k') | src/IceTargetLoweringARM32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698