mirror of
https://github.com/intel/llvm.git
synced 2026-02-08 17:28:30 +08:00
Add a little endian variant of TCE.
llvm-svn: 287112
This commit is contained in:
@@ -7210,8 +7210,11 @@ public:
|
||||
FloatFormat = &llvm::APFloat::IEEEsingle;
|
||||
DoubleFormat = &llvm::APFloat::IEEEsingle;
|
||||
LongDoubleFormat = &llvm::APFloat::IEEEsingle;
|
||||
resetDataLayout("E-p:32:32-i8:8:32-i16:16:32-i64:32"
|
||||
"-f64:32-v64:32-v128:32-a:0:32-n32");
|
||||
resetDataLayout("E-p:32:32:32-i1:8:8-i8:8:32-"
|
||||
"i16:16:32-i32:32:32-i64:32:32-"
|
||||
"f32:32:32-f64:32:32-v64:32:32-"
|
||||
"v128:32:32-v256:32:32-v512:32:32-"
|
||||
"v1024:32:32-a0:0:32-n32");
|
||||
AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
|
||||
UseAddrSpaceMapMangling = true;
|
||||
}
|
||||
@@ -7239,6 +7242,31 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class TCELETargetInfo : public TCETargetInfo {
|
||||
public:
|
||||
TCELETargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
|
||||
: TCETargetInfo(Triple, Opts) {
|
||||
BigEndian = false;
|
||||
|
||||
resetDataLayout("e-p:32:32:32-i1:8:8-i8:8:32-"
|
||||
"i16:16:32-i32:32:32-i64:32:32-"
|
||||
"f32:32:32-f64:32:32-v64:32:32-"
|
||||
"v128:32:32-v256:32:32-v512:32:32-"
|
||||
"v1024:32:32-a0:0:32-n32");
|
||||
|
||||
}
|
||||
|
||||
virtual void getTargetDefines(const LangOptions &Opts,
|
||||
MacroBuilder &Builder) const {
|
||||
DefineStd(Builder, "tcele", Opts);
|
||||
Builder.defineMacro("__TCE__");
|
||||
Builder.defineMacro("__TCE_V1__");
|
||||
Builder.defineMacro("__TCELE__");
|
||||
Builder.defineMacro("__TCELE_V1__");
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class BPFTargetInfo : public TargetInfo {
|
||||
public:
|
||||
BPFTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
|
||||
@@ -8627,6 +8655,9 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple,
|
||||
case llvm::Triple::tce:
|
||||
return new TCETargetInfo(Triple, Opts);
|
||||
|
||||
case llvm::Triple::tcele:
|
||||
return new TCELETargetInfo(Triple, Opts);
|
||||
|
||||
case llvm::Triple::x86:
|
||||
if (Triple.isOSDarwin())
|
||||
return new DarwinI386TargetInfo(Triple, Opts);
|
||||
|
||||
@@ -8251,6 +8251,7 @@ const TargetCodeGenInfo &CodeGenModule::getTargetCodeGenInfo() {
|
||||
}
|
||||
|
||||
case llvm::Triple::tce:
|
||||
case llvm::Triple::tcele:
|
||||
return SetCGInfo(new TCETargetCodeGenInfo(Types));
|
||||
|
||||
case llvm::Triple::x86: {
|
||||
|
||||
@@ -3618,6 +3618,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
|
||||
case llvm::Triple::tce:
|
||||
TC = new toolchains::TCEToolChain(*this, Target, Args);
|
||||
break;
|
||||
case llvm::Triple::tcele:
|
||||
TC = new toolchains::TCELEToolChain(*this, Target, Args);
|
||||
break;
|
||||
case llvm::Triple::hexagon:
|
||||
TC = new toolchains::HexagonToolChain(*this, Target, Args);
|
||||
break;
|
||||
|
||||
@@ -3435,6 +3435,13 @@ bool TCEToolChain::isPIEDefault() const { return false; }
|
||||
|
||||
bool TCEToolChain::isPICDefaultForced() const { return false; }
|
||||
|
||||
TCELEToolChain::TCELEToolChain(const Driver &D, const llvm::Triple& Triple,
|
||||
const ArgList &Args)
|
||||
: TCEToolChain(D, Triple, Args) {
|
||||
}
|
||||
|
||||
TCELEToolChain::~TCELEToolChain() {}
|
||||
|
||||
// CloudABI - CloudABI tool chain which can call ld(1) directly.
|
||||
|
||||
CloudABI::CloudABI(const Driver &D, const llvm::Triple &Triple,
|
||||
|
||||
@@ -1074,6 +1074,14 @@ public:
|
||||
bool isPICDefaultForced() const override;
|
||||
};
|
||||
|
||||
/// Toolchain for little endian TCE cores.
|
||||
class LLVM_LIBRARY_VISIBILITY TCELEToolChain : public TCEToolChain {
|
||||
public:
|
||||
TCELEToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
const llvm::opt::ArgList &Args);
|
||||
~TCELEToolChain() override;
|
||||
};
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain {
|
||||
public:
|
||||
MSVCToolChain(const Driver &D, const llvm::Triple &Triple,
|
||||
|
||||
Reference in New Issue
Block a user