Compare commits
1 Commits
main
...
foot-backe
Author | SHA1 | Date | |
---|---|---|---|
644ff9745e |
@ -103,6 +103,7 @@ add_clang_library(clangBasic
|
|||||||
Targets/BPF.cpp
|
Targets/BPF.cpp
|
||||||
Targets/CSKY.cpp
|
Targets/CSKY.cpp
|
||||||
Targets/DirectX.cpp
|
Targets/DirectX.cpp
|
||||||
|
Targets/Foot.cpp
|
||||||
Targets/Hexagon.cpp
|
Targets/Hexagon.cpp
|
||||||
Targets/Lanai.cpp
|
Targets/Lanai.cpp
|
||||||
Targets/LoongArch.cpp
|
Targets/LoongArch.cpp
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "Targets/BPF.h"
|
#include "Targets/BPF.h"
|
||||||
#include "Targets/CSKY.h"
|
#include "Targets/CSKY.h"
|
||||||
#include "Targets/DirectX.h"
|
#include "Targets/DirectX.h"
|
||||||
|
#include "Targets/Foot.h"
|
||||||
#include "Targets/Hexagon.h"
|
#include "Targets/Hexagon.h"
|
||||||
#include "Targets/Lanai.h"
|
#include "Targets/Lanai.h"
|
||||||
#include "Targets/LoongArch.h"
|
#include "Targets/LoongArch.h"
|
||||||
@ -122,6 +123,9 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
|
|||||||
case llvm::Triple::xcore:
|
case llvm::Triple::xcore:
|
||||||
return std::make_unique<XCoreTargetInfo>(Triple, Opts);
|
return std::make_unique<XCoreTargetInfo>(Triple, Opts);
|
||||||
|
|
||||||
|
case llvm::Triple::foot:
|
||||||
|
return std::make_unique<FootTargetInfo>(Triple, Opts);
|
||||||
|
|
||||||
case llvm::Triple::hexagon:
|
case llvm::Triple::hexagon:
|
||||||
if (os == llvm::Triple::Linux &&
|
if (os == llvm::Triple::Linux &&
|
||||||
Triple.getEnvironment() == llvm::Triple::Musl)
|
Triple.getEnvironment() == llvm::Triple::Musl)
|
||||||
|
57
clang/lib/Basic/Targets/Foot.cpp
Normal file
57
clang/lib/Basic/Targets/Foot.cpp
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include "Foot.h"
|
||||||
|
|
||||||
|
#include "clang/Basic/MacroBuilder.h"
|
||||||
|
|
||||||
|
static const char* FootDataLayoutStr =
|
||||||
|
"e-"
|
||||||
|
"p:16:32-"
|
||||||
|
"n8:16:32-"
|
||||||
|
"i64:64:64-i32:32:32-i16:16:32-"
|
||||||
|
"f32:32:32-"
|
||||||
|
"v32:32:32";
|
||||||
|
|
||||||
|
namespace clang {
|
||||||
|
namespace targets {
|
||||||
|
|
||||||
|
FootTargetInfo::FootTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
|
||||||
|
: TargetInfo(Triple) {
|
||||||
|
resetDataLayout(FootDataLayoutStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FootTargetInfo::getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const
|
||||||
|
{
|
||||||
|
Builder.defineMacro("__foot__");
|
||||||
|
}
|
||||||
|
|
||||||
|
SmallVector<Builtin::InfosShard> FootTargetInfo::getTargetBuiltins() const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
TargetInfo::BuiltinVaListKind FootTargetInfo::getBuiltinVaListKind() const
|
||||||
|
{
|
||||||
|
return BuiltinVaListKind::VoidPtrBuiltinVaList;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FootTargetInfo::validateAsmConstraint(const char *&Name, ConstraintInfo &info) const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string_view FootTargetInfo::getClobbers() const
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayRef<const char *> FootTargetInfo::getGCCRegNames() const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayRef<TargetInfo::GCCRegAlias> FootTargetInfo::getGCCRegAliases() const
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace targets
|
||||||
|
} // namespace clang
|
27
clang/lib/Basic/Targets/Foot.h
Normal file
27
clang/lib/Basic/Targets/Foot.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef CLANG_LIB_BASIC_TARGETS_FOOT_FOOT_H
|
||||||
|
#define CLANG_LIB_BASIC_TARGETS_FOOT_FOOT_H
|
||||||
|
|
||||||
|
#include "clang/Basic/TargetInfo.h"
|
||||||
|
|
||||||
|
namespace clang {
|
||||||
|
namespace targets {
|
||||||
|
|
||||||
|
class LLVM_LIBRARY_VISIBILITY FootTargetInfo : public TargetInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FootTargetInfo(const llvm::Triple &Triple, const TargetOptions &);
|
||||||
|
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override;
|
||||||
|
SmallVector<Builtin::InfosShard> getTargetBuiltins() const override;
|
||||||
|
BuiltinVaListKind getBuiltinVaListKind() const override;
|
||||||
|
bool validateAsmConstraint(const char *&Name, ConstraintInfo &info) const override;
|
||||||
|
std::string_view getClobbers() const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ArrayRef<const char *> getGCCRegNames() const override;
|
||||||
|
ArrayRef<GCCRegAlias> getGCCRegAliases() const override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace targets
|
||||||
|
} // namespace clang
|
||||||
|
|
||||||
|
#endif // CLANG_LIB_BASIC_TARGETS_FOOT_FOOT_H
|
@ -533,6 +533,7 @@ set(LLVM_ALL_TARGETS
|
|||||||
ARM
|
ARM
|
||||||
AVR
|
AVR
|
||||||
BPF
|
BPF
|
||||||
|
Foot
|
||||||
Hexagon
|
Hexagon
|
||||||
Lanai
|
Lanai
|
||||||
LoongArch
|
LoongArch
|
||||||
|
@ -60,6 +60,7 @@ public:
|
|||||||
bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
|
bpfeb, // eBPF or extended BPF or 64-bit BPF (big endian)
|
||||||
csky, // CSKY: csky
|
csky, // CSKY: csky
|
||||||
dxil, // DXIL 32-bit DirectX bytecode
|
dxil, // DXIL 32-bit DirectX bytecode
|
||||||
|
foot, // foot: foot
|
||||||
hexagon, // Hexagon: hexagon
|
hexagon, // Hexagon: hexagon
|
||||||
loongarch32, // LoongArch (32-bit): loongarch32
|
loongarch32, // LoongArch (32-bit): loongarch32
|
||||||
loongarch64, // LoongArch (64-bit): loongarch64
|
loongarch64, // LoongArch (64-bit): loongarch64
|
||||||
|
17
llvm/lib/Target/Foot/CMakeLists.txt
Normal file
17
llvm/lib/Target/Foot/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
add_llvm_component_group(Foot)
|
||||||
|
|
||||||
|
add_llvm_target(FootCodeGen
|
||||||
|
FootTargetMachine.cpp
|
||||||
|
|
||||||
|
LINK_COMPONENTS
|
||||||
|
FootDesc
|
||||||
|
FootInfo
|
||||||
|
CodeGen
|
||||||
|
Support
|
||||||
|
|
||||||
|
ADD_TO_COMPONENT
|
||||||
|
Foot
|
||||||
|
)
|
||||||
|
|
||||||
|
add_subdirectory(MCTargetDesc)
|
||||||
|
add_subdirectory(TargetInfo)
|
12
llvm/lib/Target/Foot/FootTargetInfo.h
Normal file
12
llvm/lib/Target/Foot/FootTargetInfo.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#ifndef LLVM_LIB_TARGET_FOOT_TARGETINFO_FOOTTARGETINFO_H
|
||||||
|
#define LLVM_LIB_TARGET_FOOT_TARGETINFO_FOOTTARGETINFO_H
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
|
||||||
|
class Target;
|
||||||
|
|
||||||
|
Target &getTheFootTarget();
|
||||||
|
|
||||||
|
} // namespace llvm
|
||||||
|
|
||||||
|
#endif // LLVM_LIB_TARGET_FOOT_TARGETINFO_FOOTTARGETINFO_H
|
32
llvm/lib/Target/Foot/FootTargetMachine.cpp
Normal file
32
llvm/lib/Target/Foot/FootTargetMachine.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "FootTargetMachine.h"
|
||||||
|
#include "FootTargetInfo.h"
|
||||||
|
#include "llvm/MC/TargetRegistry.h"
|
||||||
|
using namespace llvm;
|
||||||
|
|
||||||
|
static const char* FootDataLayoutStr =
|
||||||
|
"e-"
|
||||||
|
"p:16:32-"
|
||||||
|
"n8:16:32-"
|
||||||
|
"i64:64:64-i32:32:32-i16:16:32-"
|
||||||
|
"f32:32:32-"
|
||||||
|
"v32:32:32";
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
|
||||||
|
FootTargetMachine::FootTargetMachine(const Target &T, const Triple &TT,
|
||||||
|
StringRef CPU, StringRef FS,
|
||||||
|
const TargetOptions &Options,
|
||||||
|
std::optional<Reloc::Model> RM,
|
||||||
|
std::optional<CodeModel::Model> CM,
|
||||||
|
CodeGenOptLevel OL,
|
||||||
|
bool JIT)
|
||||||
|
: CodeGenTargetMachineImpl(T, FootDataLayoutStr, TT, CPU, FS, Options, RM ? *RM : Reloc::Static, CM ? *CM : CodeModel::Small, OL) {}
|
||||||
|
|
||||||
|
FootTargetMachine::~FootTargetMachine() = default;
|
||||||
|
|
||||||
|
} // namespace llvm
|
||||||
|
|
||||||
|
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeFootTarget()
|
||||||
|
{
|
||||||
|
RegisterTargetMachine<FootTargetMachine> X(getTheFootTarget());
|
||||||
|
}
|
22
llvm/lib/Target/Foot/FootTargetMachine.h
Normal file
22
llvm/lib/Target/Foot/FootTargetMachine.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef LLVM_LIB_TARGET_FOOT_FOOTTARGETMACHINE_H
|
||||||
|
#define LLVM_LIB_TARGET_FOOT_FOOTTARGETMACHINE_H
|
||||||
|
|
||||||
|
#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
|
||||||
|
class FootTargetMachine : public CodeGenTargetMachineImpl {
|
||||||
|
public:
|
||||||
|
FootTargetMachine(const Target &T, const Triple &TT,
|
||||||
|
StringRef CPU, StringRef FS,
|
||||||
|
const TargetOptions &Options,
|
||||||
|
std::optional<Reloc::Model> RM,
|
||||||
|
std::optional<CodeModel::Model> CM,
|
||||||
|
CodeGenOptLevel OL,
|
||||||
|
bool JIT);
|
||||||
|
~FootTargetMachine() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace llvm
|
||||||
|
|
||||||
|
#endif // LLVM_LIB_TARGET_FOOT_FOOTTARGETMACHINE_H
|
9
llvm/lib/Target/Foot/MCTargetDesc/CMakeLists.txt
Normal file
9
llvm/lib/Target/Foot/MCTargetDesc/CMakeLists.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
add_llvm_component_library(LLVMFootDesc
|
||||||
|
FootTargetDesc.cpp
|
||||||
|
|
||||||
|
LINK_COMPONENTS
|
||||||
|
Support
|
||||||
|
|
||||||
|
ADD_TO_COMPONENT
|
||||||
|
Foot
|
||||||
|
)
|
5
llvm/lib/Target/Foot/MCTargetDesc/FootTargetDesc.cpp
Normal file
5
llvm/lib/Target/Foot/MCTargetDesc/FootTargetDesc.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "llvm/Support/Compiler.h"
|
||||||
|
|
||||||
|
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeFootTargetMC()
|
||||||
|
{
|
||||||
|
}
|
10
llvm/lib/Target/Foot/TargetInfo/CMakeLists.txt
Normal file
10
llvm/lib/Target/Foot/TargetInfo/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
add_llvm_component_library(LLVMFootInfo
|
||||||
|
FootTargetInfo.cpp
|
||||||
|
|
||||||
|
LINK_COMPONENTS
|
||||||
|
Support
|
||||||
|
MC
|
||||||
|
|
||||||
|
ADD_TO_COMPONENT
|
||||||
|
Foot
|
||||||
|
)
|
16
llvm/lib/Target/Foot/TargetInfo/FootTargetInfo.cpp
Normal file
16
llvm/lib/Target/Foot/TargetInfo/FootTargetInfo.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "FootTargetInfo.h"
|
||||||
|
#include "llvm/MC/TargetRegistry.h"
|
||||||
|
using namespace llvm;
|
||||||
|
|
||||||
|
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeFootTargetInfo() {
|
||||||
|
RegisterTarget<Triple::foot, /*HasJIT=*/ false> X(
|
||||||
|
getTheFootTarget(), /*Name=*/"foot",
|
||||||
|
/*Desc=*/"Foot target",
|
||||||
|
/*BackendName=*/"Foot"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Target &llvm::getTheFootTarget() {
|
||||||
|
static Target TheFootTarget;
|
||||||
|
return TheFootTarget;
|
||||||
|
}
|
@ -39,6 +39,7 @@ StringRef Triple::getArchTypeName(ArchType Kind) {
|
|||||||
case bpfel: return "bpfel";
|
case bpfel: return "bpfel";
|
||||||
case csky: return "csky";
|
case csky: return "csky";
|
||||||
case dxil: return "dxil";
|
case dxil: return "dxil";
|
||||||
|
case foot: return "foot";
|
||||||
case hexagon: return "hexagon";
|
case hexagon: return "hexagon";
|
||||||
case hsail64: return "hsail64";
|
case hsail64: return "hsail64";
|
||||||
case hsail: return "hsail";
|
case hsail: return "hsail";
|
||||||
@ -198,6 +199,8 @@ StringRef Triple::getArchTypePrefix(ArchType Kind) {
|
|||||||
case mips64:
|
case mips64:
|
||||||
case mips64el: return "mips";
|
case mips64el: return "mips";
|
||||||
|
|
||||||
|
case foot: return "foot";
|
||||||
|
|
||||||
case hexagon: return "hexagon";
|
case hexagon: return "hexagon";
|
||||||
|
|
||||||
case amdgcn: return "amdgcn";
|
case amdgcn: return "amdgcn";
|
||||||
@ -464,6 +467,7 @@ Triple::ArchType Triple::getArchTypeForLLVMName(StringRef Name) {
|
|||||||
.Case("riscv64", riscv64)
|
.Case("riscv64", riscv64)
|
||||||
.Case("riscv32be", riscv32be)
|
.Case("riscv32be", riscv32be)
|
||||||
.Case("riscv64be", riscv64be)
|
.Case("riscv64be", riscv64be)
|
||||||
|
.Case("foot", foot)
|
||||||
.Case("hexagon", hexagon)
|
.Case("hexagon", hexagon)
|
||||||
.Case("sparc", sparc)
|
.Case("sparc", sparc)
|
||||||
.Case("sparcel", sparcel)
|
.Case("sparcel", sparcel)
|
||||||
@ -611,6 +615,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {
|
|||||||
.Case("riscv64", Triple::riscv64)
|
.Case("riscv64", Triple::riscv64)
|
||||||
.Case("riscv32be", Triple::riscv32be)
|
.Case("riscv32be", Triple::riscv32be)
|
||||||
.Case("riscv64be", Triple::riscv64be)
|
.Case("riscv64be", Triple::riscv64be)
|
||||||
|
.Case("foot", Triple::foot)
|
||||||
.Case("hexagon", Triple::hexagon)
|
.Case("hexagon", Triple::hexagon)
|
||||||
.Cases("s390x", "systemz", Triple::systemz)
|
.Cases("s390x", "systemz", Triple::systemz)
|
||||||
.Case("sparc", Triple::sparc)
|
.Case("sparc", Triple::sparc)
|
||||||
@ -940,6 +945,7 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) {
|
|||||||
case Triple::aarch64:
|
case Triple::aarch64:
|
||||||
case Triple::aarch64_32:
|
case Triple::aarch64_32:
|
||||||
case Triple::arm:
|
case Triple::arm:
|
||||||
|
case Triple::foot:
|
||||||
case Triple::thumb:
|
case Triple::thumb:
|
||||||
case Triple::x86:
|
case Triple::x86:
|
||||||
case Triple::x86_64:
|
case Triple::x86_64:
|
||||||
@ -1681,6 +1687,7 @@ unsigned Triple::getArchPointerBitWidth(llvm::Triple::ArchType Arch) {
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case llvm::Triple::avr:
|
case llvm::Triple::avr:
|
||||||
|
case llvm::Triple::foot:
|
||||||
case llvm::Triple::msp430:
|
case llvm::Triple::msp430:
|
||||||
return 16;
|
return 16;
|
||||||
|
|
||||||
@ -1801,6 +1808,7 @@ Triple Triple::get32BitArchVariant() const {
|
|||||||
case Triple::armeb:
|
case Triple::armeb:
|
||||||
case Triple::csky:
|
case Triple::csky:
|
||||||
case Triple::dxil:
|
case Triple::dxil:
|
||||||
|
case Triple::foot:
|
||||||
case Triple::hexagon:
|
case Triple::hexagon:
|
||||||
case Triple::hsail:
|
case Triple::hsail:
|
||||||
case Triple::kalimba:
|
case Triple::kalimba:
|
||||||
@ -1871,6 +1879,7 @@ Triple Triple::get64BitArchVariant() const {
|
|||||||
case Triple::avr:
|
case Triple::avr:
|
||||||
case Triple::csky:
|
case Triple::csky:
|
||||||
case Triple::dxil:
|
case Triple::dxil:
|
||||||
|
case Triple::foot:
|
||||||
case Triple::hexagon:
|
case Triple::hexagon:
|
||||||
case Triple::kalimba:
|
case Triple::kalimba:
|
||||||
case Triple::lanai:
|
case Triple::lanai:
|
||||||
@ -1958,6 +1967,7 @@ Triple Triple::getBigEndianArchVariant() const {
|
|||||||
case Triple::amdil:
|
case Triple::amdil:
|
||||||
case Triple::avr:
|
case Triple::avr:
|
||||||
case Triple::dxil:
|
case Triple::dxil:
|
||||||
|
case Triple::foot:
|
||||||
case Triple::hexagon:
|
case Triple::hexagon:
|
||||||
case Triple::hsail64:
|
case Triple::hsail64:
|
||||||
case Triple::hsail:
|
case Triple::hsail:
|
||||||
@ -2071,6 +2081,7 @@ bool Triple::isLittleEndian() const {
|
|||||||
case Triple::bpfel:
|
case Triple::bpfel:
|
||||||
case Triple::csky:
|
case Triple::csky:
|
||||||
case Triple::dxil:
|
case Triple::dxil:
|
||||||
|
case Triple::foot:
|
||||||
case Triple::hexagon:
|
case Triple::hexagon:
|
||||||
case Triple::hsail64:
|
case Triple::hsail64:
|
||||||
case Triple::hsail:
|
case Triple::hsail:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user