Commit d58f01ca by John Porto

Subzero. Adds x86-64 to the list of supported Subzero targets.

parent 8fa8b437
...@@ -178,6 +178,7 @@ SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA) ...@@ -178,6 +178,7 @@ SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)
SRCS = \ SRCS = \
IceAssembler.cpp \ IceAssembler.cpp \
IceAssemblerX8632.cpp \ IceAssemblerX8632.cpp \
IceAssemblerX8664.cpp \
IceBrowserCompileServer.cpp \ IceBrowserCompileServer.cpp \
IceCfg.cpp \ IceCfg.cpp \
IceCfgNode.cpp \ IceCfgNode.cpp \
...@@ -201,6 +202,7 @@ SRCS = \ ...@@ -201,6 +202,7 @@ SRCS = \
IceTargetLoweringARM32.cpp \ IceTargetLoweringARM32.cpp \
IceTargetLoweringMIPS32.cpp \ IceTargetLoweringMIPS32.cpp \
IceTargetLoweringX8632.cpp \ IceTargetLoweringX8632.cpp \
IceTargetLoweringX8664.cpp \
IceThreading.cpp \ IceThreading.cpp \
IceTimerTree.cpp \ IceTimerTree.cpp \
IceTranslator.cpp \ IceTranslator.cpp \
......
//===- subzero/src/IceAssemblerX8664.cpp ----------------------------------===//
//
// The Subzero Code Generator
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file implements the Assembler class for x86-64.
//
//===----------------------------------------------------------------------===//
#include "IceAssemblerX8664.h"
namespace Ice {
namespace X8664 {
void AssemblerX8664::alignFunction() {
llvm::report_fatal_error("Not yet implemented");
}
void AssemblerX8664::padWithNop(intptr_t) {
llvm::report_fatal_error("Not yet implemented");
}
SizeT AssemblerX8664::getBundleAlignLog2Bytes() const {
llvm::report_fatal_error("Not yet implemented");
}
const char *AssemblerX8664::getNonExecPadDirective() const {
llvm::report_fatal_error("Not yet implemented");
}
llvm::ArrayRef<uint8_t> AssemblerX8664::getNonExecBundlePadding() const {
llvm::report_fatal_error("Not yet implemented");
}
void AssemblerX8664::bindCfgNodeLabel(SizeT) {
llvm::report_fatal_error("Not yet implemented");
}
bool AssemblerX8664::fixupIsPCRel(FixupKind) const {
llvm::report_fatal_error("Not yet implemented");
}
} // namespace X8664
} // namespace Ice
//===- subzero/src/IceAssemberX8664.h - Assembler for x86-64 ----*- C++ -*-===// //===- subzero/src/IceAssemblerX8664.h - Assembler for x86-64 -*- C++ -*---===//
// //
// The Subzero Code Generator // The Subzero Code Generator
// //
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
// This file implements the Assembler class for x86-64.h. // This file implements the Assembler class for x86-64.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#define SUBZERO_SRC_ICEASSEMBLERX8664_H #define SUBZERO_SRC_ICEASSEMBLERX8664_H
#include "IceAssembler.h" #include "IceAssembler.h"
#include "IceDefs.h"
namespace Ice { namespace Ice {
namespace X8664 { namespace X8664 {
...@@ -25,36 +26,20 @@ class AssemblerX8664 final : public Assembler { ...@@ -25,36 +26,20 @@ class AssemblerX8664 final : public Assembler {
public: public:
explicit AssemblerX8664(bool use_far_branches = false) : Assembler() { explicit AssemblerX8664(bool use_far_branches = false) : Assembler() {
assert(!use_far_branches);
(void)use_far_branches;
llvm::report_fatal_error("Not yet implemented"); llvm::report_fatal_error("Not yet implemented");
} }
void alignFunction() override { ~AssemblerX8664() override = default;
llvm::report_fatal_error("Not yet implemented");
}
void padWithNop(intptr_t Padding) override {
llvm::report_fatal_error("Not yet implemented");
}
SizeT getBundleAlignLog2Bytes() const override { void alignFunction() override;
llvm::report_fatal_error("Not yet implemented"); void padWithNop(intptr_t Padding) override;
} SizeT getBundleAlignLog2Bytes() const override;
const char *getNonExecPadDirective() const override;
const char *getNonExecPadDirective() const override { llvm::ArrayRef<uint8_t> getNonExecBundlePadding() const override;
llvm::report_fatal_error("Not yet implemented"); void bindCfgNodeLabel(SizeT NodeNumber) override;
} bool fixupIsPCRel(FixupKind Kind) const override;
llvm::ArrayRef<uint8_t> getNonExecBundlePadding() const override {
llvm::report_fatal_error("Not yet implemented");
}
void bindCfgNodeLabel(SizeT NodeNumber) override {
llvm::report_fatal_error("Not yet implemented");
}
bool fixupIsPCRel(FixupKind Kind) const override {
llvm::report_fatal_error("Not yet implemented");
}
}; };
} // end of namespace X8664 } // end of namespace X8664
......
//===- subzero/src/IceTargetLoweringX8664.cpp - lowering for x86-64 -------===//
//
// The Subzero Code Generator
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Implements the Target Lowering for x86-64.
//
//===----------------------------------------------------------------------===//
#include "IceDefs.h"
#include "IceTargetLoweringX8664.h"
namespace Ice {
TargetX8664 *TargetX8664::create(Cfg *) {
llvm::report_fatal_error("Not yet implemented");
}
void TargetDataX8664::lowerGlobals(const VariableDeclarationList &,
const IceString &) {
llvm::report_fatal_error("Not yet implemented");
}
void TargetDataX8664::lowerConstants() {
llvm::report_fatal_error("Not yet implemented");
}
} // end of namespace Ice
//===- subzero/src/IceTargetLoweringX8664.h - x86-64 lowering ---*- C++ -*-===// //===- subzero/src/IceTargetLoweringX8664.h - lowering for x86-64 -*- C++ -*-=//
// //
// The Subzero Code Generator // The Subzero Code Generator
// //
...@@ -7,15 +7,16 @@ ...@@ -7,15 +7,16 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// //
// This file declares the TargetLoweringX8664 class, which // This file declares the TargetLoweringX8664 class, which implements the
// implements the TargetLowering interface for the x86-64 // TargetLowering interface for the X86 64-bit architecture.
// architecture.
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#ifndef SUBZERO_SRC_ICETARGETLOWERINGX8664_H #ifndef SUBZERO_SRC_ICETARGETLOWERINGX8664_H
#define SUBZERO_SRC_ICETARGETLOWERINGX8664_H #define SUBZERO_SRC_ICETARGETLOWERINGX8664_H
#include "IceDefs.h" #include "IceCfg.h"
#include "IceGlobalContext.h"
#include "IceTargetLowering.h" #include "IceTargetLowering.h"
namespace Ice { namespace Ice {
...@@ -26,9 +27,10 @@ class TargetX8664 : public TargetLowering { ...@@ -26,9 +27,10 @@ class TargetX8664 : public TargetLowering {
TargetX8664 &operator=(const TargetX8664 &) = delete; TargetX8664 &operator=(const TargetX8664 &) = delete;
public: public:
static TargetX8664 *create(Cfg *) { static TargetX8664 *create(Cfg *Func);
llvm::report_fatal_error("Not yet implemented");
} private:
explicit TargetX8664(Cfg *Func) : TargetLowering(Func) {}
}; };
class TargetDataX8664 : public TargetDataLowering { class TargetDataX8664 : public TargetDataLowering {
...@@ -37,9 +39,21 @@ class TargetDataX8664 : public TargetDataLowering { ...@@ -37,9 +39,21 @@ class TargetDataX8664 : public TargetDataLowering {
TargetDataX8664 &operator=(const TargetDataX8664 &) = delete; TargetDataX8664 &operator=(const TargetDataX8664 &) = delete;
public: public:
~TargetDataX8664() override = default;
static std::unique_ptr<TargetDataLowering> create(GlobalContext *Ctx) { static std::unique_ptr<TargetDataLowering> create(GlobalContext *Ctx) {
llvm::report_fatal_error("Not yet implemented"); return makeUnique<TargetDataX8664>(Ctx);
} }
void lowerGlobals(const VariableDeclarationList &Vars,
const IceString &SectionSuffix) override;
void lowerConstants() override;
private:
ENABLE_MAKE_UNIQUE;
explicit TargetDataX8664(GlobalContext *Ctx) : TargetDataLowering(Ctx) {}
}; };
class TargetHeaderX8664 : public TargetHeaderLowering { class TargetHeaderX8664 : public TargetHeaderLowering {
...@@ -48,11 +62,17 @@ class TargetHeaderX8664 : public TargetHeaderLowering { ...@@ -48,11 +62,17 @@ class TargetHeaderX8664 : public TargetHeaderLowering {
TargetHeaderX8664 &operator=(const TargetHeaderX8664 &) = delete; TargetHeaderX8664 &operator=(const TargetHeaderX8664 &) = delete;
public: public:
~TargetHeaderX8664() = default;
static std::unique_ptr<TargetHeaderLowering> create(GlobalContext *Ctx) { static std::unique_ptr<TargetHeaderLowering> create(GlobalContext *Ctx) {
llvm::report_fatal_error("Not yet implemented"); return makeUnique<TargetHeaderX8664>(Ctx);
} }
};
private:
ENABLE_MAKE_UNIQUE;
explicit TargetHeaderX8664(GlobalContext *Ctx) : TargetHeaderLowering(Ctx) {}
};
} // end of namespace Ice } // end of namespace Ice
#endif // SUBZERO_SRC_ICETARGETLOWERINGX8664_H #endif // SUBZERO_SRC_ICETARGETLOWERINGX8664_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment