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)
SRCS = \
IceAssembler.cpp \
IceAssemblerX8632.cpp \
IceAssemblerX8664.cpp \
IceBrowserCompileServer.cpp \
IceCfg.cpp \
IceCfgNode.cpp \
......@@ -201,6 +202,7 @@ SRCS = \
IceTargetLoweringARM32.cpp \
IceTargetLoweringMIPS32.cpp \
IceTargetLoweringX8632.cpp \
IceTargetLoweringX8664.cpp \
IceThreading.cpp \
IceTimerTree.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
//
......@@ -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 @@
#define SUBZERO_SRC_ICEASSEMBLERX8664_H
#include "IceAssembler.h"
#include "IceDefs.h"
namespace Ice {
namespace X8664 {
......@@ -25,36 +26,20 @@ class AssemblerX8664 final : public Assembler {
public:
explicit AssemblerX8664(bool use_far_branches = false) : Assembler() {
assert(!use_far_branches);
(void)use_far_branches;
llvm::report_fatal_error("Not yet implemented");
}
void alignFunction() override {
llvm::report_fatal_error("Not yet implemented");
}
void padWithNop(intptr_t Padding) override {
llvm::report_fatal_error("Not yet implemented");
}
~AssemblerX8664() override = default;
SizeT getBundleAlignLog2Bytes() const override {
llvm::report_fatal_error("Not yet implemented");
}
const char *getNonExecPadDirective() const override {
llvm::report_fatal_error("Not yet implemented");
}
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");
}
void alignFunction() override;
void padWithNop(intptr_t Padding) override;
SizeT getBundleAlignLog2Bytes() const override;
const char *getNonExecPadDirective() const override;
llvm::ArrayRef<uint8_t> getNonExecBundlePadding() const override;
void bindCfgNodeLabel(SizeT NodeNumber) override;
bool fixupIsPCRel(FixupKind Kind) const override;
};
} // 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
//
......@@ -7,15 +7,16 @@
//
//===----------------------------------------------------------------------===//
//
// This file declares the TargetLoweringX8664 class, which
// implements the TargetLowering interface for the x86-64
// architecture.
// This file declares the TargetLoweringX8664 class, which implements the
// TargetLowering interface for the X86 64-bit architecture.
//
//===----------------------------------------------------------------------===//
#ifndef SUBZERO_SRC_ICETARGETLOWERINGX8664_H
#define SUBZERO_SRC_ICETARGETLOWERINGX8664_H
#include "IceDefs.h"
#include "IceCfg.h"
#include "IceGlobalContext.h"
#include "IceTargetLowering.h"
namespace Ice {
......@@ -26,9 +27,10 @@ class TargetX8664 : public TargetLowering {
TargetX8664 &operator=(const TargetX8664 &) = delete;
public:
static TargetX8664 *create(Cfg *) {
llvm::report_fatal_error("Not yet implemented");
}
static TargetX8664 *create(Cfg *Func);
private:
explicit TargetX8664(Cfg *Func) : TargetLowering(Func) {}
};
class TargetDataX8664 : public TargetDataLowering {
......@@ -37,9 +39,21 @@ class TargetDataX8664 : public TargetDataLowering {
TargetDataX8664 &operator=(const TargetDataX8664 &) = delete;
public:
~TargetDataX8664() override = default;
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 {
......@@ -48,11 +62,17 @@ class TargetHeaderX8664 : public TargetHeaderLowering {
TargetHeaderX8664 &operator=(const TargetHeaderX8664 &) = delete;
public:
~TargetHeaderX8664() = default;
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
#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