|
|
|
@ -560,7 +560,7 @@ public:
|
|
|
|
|
this->IntMaxType = TargetInfo::SignedLongLong;
|
|
|
|
|
this->Int64Type = TargetInfo::SignedLongLong;
|
|
|
|
|
this->SizeType = TargetInfo::UnsignedInt;
|
|
|
|
|
this->DescriptionString = "E-m:e-p:32:32-i64:64-n32:64";
|
|
|
|
|
this->DataLayoutString = "E-m:e-p:32:32-i64:64-n32:64";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -722,14 +722,14 @@ public:
|
|
|
|
|
if (Triple.getArch() == llvm::Triple::arm) {
|
|
|
|
|
// Handled in ARM's setABI().
|
|
|
|
|
} else if (Triple.getArch() == llvm::Triple::x86) {
|
|
|
|
|
this->DescriptionString = "e-m:e-p:32:32-i64:64-n8:16:32-S128";
|
|
|
|
|
this->DataLayoutString = "e-m:e-p:32:32-i64:64-n8:16:32-S128";
|
|
|
|
|
} else if (Triple.getArch() == llvm::Triple::x86_64) {
|
|
|
|
|
this->DescriptionString = "e-m:e-p:32:32-i64:64-n8:16:32:64-S128";
|
|
|
|
|
this->DataLayoutString = "e-m:e-p:32:32-i64:64-n8:16:32:64-S128";
|
|
|
|
|
} else if (Triple.getArch() == llvm::Triple::mipsel) {
|
|
|
|
|
// Handled on mips' setDescriptionString.
|
|
|
|
|
// Handled on mips' setDataLayoutString.
|
|
|
|
|
} else {
|
|
|
|
|
assert(Triple.getArch() == llvm::Triple::le32);
|
|
|
|
|
this->DescriptionString = "e-p:32:32-i64:64";
|
|
|
|
|
this->DataLayoutString = "e-p:32:32-i64:64";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -1459,7 +1459,7 @@ void PPCTargetInfo::getGCCRegAliases(const GCCRegAlias *&Aliases,
|
|
|
|
|
class PPC32TargetInfo : public PPCTargetInfo {
|
|
|
|
|
public:
|
|
|
|
|
PPC32TargetInfo(const llvm::Triple &Triple) : PPCTargetInfo(Triple) {
|
|
|
|
|
DescriptionString = "E-m:e-p:32:32-i64:64-n32";
|
|
|
|
|
DataLayoutString = "E-m:e-p:32:32-i64:64-n32";
|
|
|
|
|
|
|
|
|
|
switch (getTriple().getOS()) {
|
|
|
|
|
case llvm::Triple::Linux:
|
|
|
|
@ -1498,10 +1498,10 @@ public:
|
|
|
|
|
Int64Type = SignedLong;
|
|
|
|
|
|
|
|
|
|
if ((Triple.getArch() == llvm::Triple::ppc64le)) {
|
|
|
|
|
DescriptionString = "e-m:e-i64:64-n32:64";
|
|
|
|
|
DataLayoutString = "e-m:e-i64:64-n32:64";
|
|
|
|
|
ABI = "elfv2";
|
|
|
|
|
} else {
|
|
|
|
|
DescriptionString = "E-m:e-i64:64-n32:64";
|
|
|
|
|
DataLayoutString = "E-m:e-i64:64-n32:64";
|
|
|
|
|
ABI = "elfv1";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1544,7 +1544,7 @@ public:
|
|
|
|
|
PtrDiffType = SignedInt; // for http://llvm.org/bugs/show_bug.cgi?id=15726
|
|
|
|
|
LongLongAlign = 32;
|
|
|
|
|
SuitableAlign = 128;
|
|
|
|
|
DescriptionString = "E-m:o-p:32:32-f64:32:64-n32";
|
|
|
|
|
DataLayoutString = "E-m:o-p:32:32-f64:32:64-n32";
|
|
|
|
|
}
|
|
|
|
|
BuiltinVaListKind getBuiltinVaListKind() const override {
|
|
|
|
|
return TargetInfo::CharPtrBuiltinVaList;
|
|
|
|
@ -1558,7 +1558,7 @@ public:
|
|
|
|
|
: DarwinTargetInfo<PPC64TargetInfo>(Triple) {
|
|
|
|
|
HasAlignMac68kSupport = true;
|
|
|
|
|
SuitableAlign = 128;
|
|
|
|
|
DescriptionString = "E-m:o-i64:64-n32:64";
|
|
|
|
|
DataLayoutString = "E-m:o-i64:64-n32:64";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -1705,7 +1705,7 @@ public:
|
|
|
|
|
SizeType = TargetInfo::UnsignedInt;
|
|
|
|
|
PtrDiffType = TargetInfo::SignedInt;
|
|
|
|
|
IntPtrType = TargetInfo::SignedInt;
|
|
|
|
|
DescriptionString = "e-p:32:32-i64:64-v16:16-v32:32-n16:32:64";
|
|
|
|
|
DataLayoutString = "e-p:32:32-i64:64-v16:16-v32:32-n16:32:64";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -1716,7 +1716,7 @@ public:
|
|
|
|
|
SizeType = TargetInfo::UnsignedLong;
|
|
|
|
|
PtrDiffType = TargetInfo::SignedLong;
|
|
|
|
|
IntPtrType = TargetInfo::SignedLong;
|
|
|
|
|
DescriptionString = "e-i64:64-v16:16-v32:32-n16:32:64";
|
|
|
|
|
DataLayoutString = "e-i64:64-v16:16-v32:32-n16:32:64";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -1733,15 +1733,15 @@ static const unsigned AMDGPUAddrSpaceMap[] = {
|
|
|
|
|
// If you edit the description strings, make sure you update
|
|
|
|
|
// getPointerWidthV().
|
|
|
|
|
|
|
|
|
|
static const char *DescriptionStringR600 =
|
|
|
|
|
static const char *DataLayoutStringR600 =
|
|
|
|
|
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
|
|
|
|
|
"-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64";
|
|
|
|
|
|
|
|
|
|
static const char *DescriptionStringR600DoubleOps =
|
|
|
|
|
static const char *DataLayoutStringR600DoubleOps =
|
|
|
|
|
"e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
|
|
|
|
|
"-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64";
|
|
|
|
|
|
|
|
|
|
static const char *DescriptionStringSI =
|
|
|
|
|
static const char *DataLayoutStringSI =
|
|
|
|
|
"e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-p24:64:64"
|
|
|
|
|
"-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128"
|
|
|
|
|
"-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64";
|
|
|
|
@ -1775,13 +1775,13 @@ public:
|
|
|
|
|
: TargetInfo(Triple) {
|
|
|
|
|
|
|
|
|
|
if (Triple.getArch() == llvm::Triple::amdgcn) {
|
|
|
|
|
DescriptionString = DescriptionStringSI;
|
|
|
|
|
DataLayoutString = DataLayoutStringSI;
|
|
|
|
|
GPU = GK_SOUTHERN_ISLANDS;
|
|
|
|
|
hasFP64 = true;
|
|
|
|
|
hasFMAF = true;
|
|
|
|
|
hasLDEXPF = true;
|
|
|
|
|
} else {
|
|
|
|
|
DescriptionString = DescriptionStringR600;
|
|
|
|
|
DataLayoutString = DataLayoutStringR600;
|
|
|
|
|
GPU = GK_R600;
|
|
|
|
|
hasFP64 = false;
|
|
|
|
|
hasFMAF = false;
|
|
|
|
@ -1906,7 +1906,7 @@ public:
|
|
|
|
|
case GK_R700:
|
|
|
|
|
case GK_EVERGREEN:
|
|
|
|
|
case GK_NORTHERN_ISLANDS:
|
|
|
|
|
DescriptionString = DescriptionStringR600;
|
|
|
|
|
DataLayoutString = DataLayoutStringR600;
|
|
|
|
|
hasFP64 = false;
|
|
|
|
|
hasFMAF = false;
|
|
|
|
|
hasLDEXPF = false;
|
|
|
|
@ -1915,7 +1915,7 @@ public:
|
|
|
|
|
case GK_R700_DOUBLE_OPS:
|
|
|
|
|
case GK_EVERGREEN_DOUBLE_OPS:
|
|
|
|
|
case GK_CAYMAN:
|
|
|
|
|
DescriptionString = DescriptionStringR600DoubleOps;
|
|
|
|
|
DataLayoutString = DataLayoutStringR600DoubleOps;
|
|
|
|
|
hasFP64 = true;
|
|
|
|
|
hasFMAF = true;
|
|
|
|
|
hasLDEXPF = false;
|
|
|
|
@ -1923,7 +1923,7 @@ public:
|
|
|
|
|
case GK_SOUTHERN_ISLANDS:
|
|
|
|
|
case GK_SEA_ISLANDS:
|
|
|
|
|
case GK_VOLCANIC_ISLANDS:
|
|
|
|
|
DescriptionString = DescriptionStringSI;
|
|
|
|
|
DataLayoutString = DataLayoutStringSI;
|
|
|
|
|
hasFP64 = true;
|
|
|
|
|
hasFMAF = true;
|
|
|
|
|
hasLDEXPF = true;
|
|
|
|
@ -3606,7 +3606,7 @@ public:
|
|
|
|
|
LongDoubleWidth = 96;
|
|
|
|
|
LongDoubleAlign = 32;
|
|
|
|
|
SuitableAlign = 128;
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128";
|
|
|
|
|
SizeType = UnsignedInt;
|
|
|
|
|
PtrDiffType = SignedInt;
|
|
|
|
|
IntPtrType = SignedInt;
|
|
|
|
@ -3699,7 +3699,7 @@ public:
|
|
|
|
|
MaxVectorAlign = 256;
|
|
|
|
|
SizeType = UnsignedLong;
|
|
|
|
|
IntPtrType = SignedLong;
|
|
|
|
|
DescriptionString = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128";
|
|
|
|
|
DataLayoutString = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128";
|
|
|
|
|
HasAlignMac68kSupport = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -3714,9 +3714,9 @@ public:
|
|
|
|
|
DoubleAlign = LongLongAlign = 64;
|
|
|
|
|
bool IsWinCOFF =
|
|
|
|
|
getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF();
|
|
|
|
|
DescriptionString = IsWinCOFF
|
|
|
|
|
? "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
|
|
|
|
: "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32";
|
|
|
|
|
DataLayoutString = IsWinCOFF
|
|
|
|
|
? "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
|
|
|
|
|
: "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -3798,7 +3798,7 @@ public:
|
|
|
|
|
TLSSupported = false;
|
|
|
|
|
WCharType = UnsignedShort;
|
|
|
|
|
DoubleAlign = LongLongAlign = 64;
|
|
|
|
|
DescriptionString = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32";
|
|
|
|
|
DataLayoutString = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -3905,10 +3905,10 @@ public:
|
|
|
|
|
RegParmMax = 6;
|
|
|
|
|
|
|
|
|
|
// Pointers are 32-bit in x32.
|
|
|
|
|
DescriptionString = IsX32 ? "e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
: IsWinCOFF
|
|
|
|
|
? "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
: "e-m:e-i64:64-f80:128-n8:16:32:64-S128";
|
|
|
|
|
DataLayoutString = IsX32 ? "e-m:e-p:32:32-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
: IsWinCOFF
|
|
|
|
|
? "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
|
: "e-m:e-i64:64-f80:128-n8:16:32:64-S128";
|
|
|
|
|
|
|
|
|
|
// Use fpret only for long double.
|
|
|
|
|
RealTypeUsesObjCFPRet = (1 << TargetInfo::LongDouble);
|
|
|
|
@ -4058,7 +4058,7 @@ public:
|
|
|
|
|
llvm::Triple T = llvm::Triple(Triple);
|
|
|
|
|
if (T.isiOS())
|
|
|
|
|
UseSignedCharForObjCBool = false;
|
|
|
|
|
DescriptionString = "e-m:o-i64:64-f80:128-n8:16:32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:o-i64:64-f80:128-n8:16:32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -4176,24 +4176,24 @@ class ARMTargetInfo : public TargetInfo {
|
|
|
|
|
// Thumb1 add sp, #imm requires the immediate value be multiple of 4,
|
|
|
|
|
// so set preferred for small types to 32.
|
|
|
|
|
if (T.isOSBinFormatMachO()) {
|
|
|
|
|
DescriptionString =
|
|
|
|
|
DataLayoutString =
|
|
|
|
|
BigEndian ? "E-m:o-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
|
|
|
|
: "e-m:o-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64";
|
|
|
|
|
} else if (T.isOSWindows()) {
|
|
|
|
|
assert(!BigEndian && "Windows on ARM does not support big endian");
|
|
|
|
|
DescriptionString = "e"
|
|
|
|
|
"-m:w"
|
|
|
|
|
"-p:32:32"
|
|
|
|
|
"-i64:64"
|
|
|
|
|
"-v128:64:128"
|
|
|
|
|
"-a:0:32"
|
|
|
|
|
"-n32"
|
|
|
|
|
"-S64";
|
|
|
|
|
DataLayoutString = "e"
|
|
|
|
|
"-m:w"
|
|
|
|
|
"-p:32:32"
|
|
|
|
|
"-i64:64"
|
|
|
|
|
"-v128:64:128"
|
|
|
|
|
"-a:0:32"
|
|
|
|
|
"-n32"
|
|
|
|
|
"-S64";
|
|
|
|
|
} else if (T.isOSNaCl()) {
|
|
|
|
|
assert(!BigEndian && "NaCl on ARM does not support big endian");
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S128";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S128";
|
|
|
|
|
} else {
|
|
|
|
|
DescriptionString =
|
|
|
|
|
DataLayoutString =
|
|
|
|
|
BigEndian ? "E-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
|
|
|
|
: "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64";
|
|
|
|
|
}
|
|
|
|
@ -4227,12 +4227,12 @@ class ARMTargetInfo : public TargetInfo {
|
|
|
|
|
ZeroLengthBitfieldBoundary = 32;
|
|
|
|
|
|
|
|
|
|
if (T.isOSBinFormatMachO())
|
|
|
|
|
DescriptionString =
|
|
|
|
|
DataLayoutString =
|
|
|
|
|
BigEndian
|
|
|
|
|
? "E-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
|
|
|
|
|
: "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32";
|
|
|
|
|
else
|
|
|
|
|
DescriptionString =
|
|
|
|
|
DataLayoutString =
|
|
|
|
|
BigEndian
|
|
|
|
|
? "E-m:e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
|
|
|
|
|
: "e-m:e-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32";
|
|
|
|
@ -5009,7 +5009,7 @@ public:
|
|
|
|
|
TLSSupported = false;
|
|
|
|
|
WCharType = UnsignedShort;
|
|
|
|
|
DoubleAlign = LongLongAlign = 64;
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -5046,7 +5046,7 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class AArch64TargetInfo : public TargetInfo {
|
|
|
|
|
virtual void setDescriptionString() = 0;
|
|
|
|
|
virtual void setDataLayoutString() = 0;
|
|
|
|
|
static const TargetInfo::GCCRegAlias GCCRegAliases[];
|
|
|
|
|
static const char *const GCCRegNames[];
|
|
|
|
|
|
|
|
|
@ -5213,7 +5213,7 @@ public:
|
|
|
|
|
Crypto = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setDescriptionString();
|
|
|
|
|
setDataLayoutString();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -5369,11 +5369,11 @@ const Builtin::Info AArch64TargetInfo::BuiltinInfo[] = {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class AArch64leTargetInfo : public AArch64TargetInfo {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
if (getTriple().isOSBinFormatMachO())
|
|
|
|
|
DescriptionString = "e-m:o-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:o-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
else
|
|
|
|
|
DescriptionString = "e-m:e-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:e-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
@ -5389,9 +5389,9 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class AArch64beTargetInfo : public AArch64TargetInfo {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
assert(!getTriple().isOSBinFormatMachO());
|
|
|
|
|
DescriptionString = "E-m:e-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
DataLayoutString = "E-m:e-i64:64-i128:128-n32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
@ -5448,7 +5448,7 @@ class HexagonTargetInfo : public TargetInfo {
|
|
|
|
|
public:
|
|
|
|
|
HexagonTargetInfo(const llvm::Triple &Triple) : TargetInfo(Triple) {
|
|
|
|
|
BigEndian = false;
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-i1:32-i64:64-a:0-n32";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-i1:32-i64:64-a:0-n32";
|
|
|
|
|
|
|
|
|
|
// {} in inline assembly are packet specifiers, not assembly variant
|
|
|
|
|
// specifiers.
|
|
|
|
@ -5714,7 +5714,7 @@ void SparcTargetInfo::getGCCRegAliases(const GCCRegAlias *&Aliases,
|
|
|
|
|
class SparcV8TargetInfo : public SparcTargetInfo {
|
|
|
|
|
public:
|
|
|
|
|
SparcV8TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) {
|
|
|
|
|
DescriptionString = "E-m:e-p:32:32-i64:64-f128:64-n32-S64";
|
|
|
|
|
DataLayoutString = "E-m:e-p:32:32-i64:64-f128:64-n32-S64";
|
|
|
|
|
// NetBSD uses long (same as llvm default); everyone else uses int.
|
|
|
|
|
if (getTriple().getOS() == llvm::Triple::NetBSD) {
|
|
|
|
|
SizeType = UnsignedLong;
|
|
|
|
@ -5738,7 +5738,7 @@ public:
|
|
|
|
|
class SparcV8elTargetInfo : public SparcV8TargetInfo {
|
|
|
|
|
public:
|
|
|
|
|
SparcV8elTargetInfo(const llvm::Triple &Triple) : SparcV8TargetInfo(Triple) {
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-i64:64-f128:64-n32-S64";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-i64:64-f128:64-n32-S64";
|
|
|
|
|
BigEndian = false;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -5748,7 +5748,7 @@ class SparcV9TargetInfo : public SparcTargetInfo {
|
|
|
|
|
public:
|
|
|
|
|
SparcV9TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) {
|
|
|
|
|
// FIXME: Support Sparc quad-precision long double?
|
|
|
|
|
DescriptionString = "E-m:e-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "E-m:e-i64:64-n32:64-S128";
|
|
|
|
|
// This is an LP64 platform.
|
|
|
|
|
LongWidth = LongAlign = PointerWidth = PointerAlign = 64;
|
|
|
|
|
|
|
|
|
@ -5818,7 +5818,7 @@ public:
|
|
|
|
|
LongDoubleFormat = &llvm::APFloat::IEEEquad;
|
|
|
|
|
DefaultAlignForAttributeAligned = 64;
|
|
|
|
|
MinGlobalAlign = 16;
|
|
|
|
|
DescriptionString = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64";
|
|
|
|
|
DataLayoutString = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64";
|
|
|
|
|
MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
@ -5887,8 +5887,8 @@ public:
|
|
|
|
|
// If we use the vector ABI, vector types are 64-bit aligned.
|
|
|
|
|
if (HasVector) {
|
|
|
|
|
MaxVectorAlign = 64;
|
|
|
|
|
DescriptionString = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64"
|
|
|
|
|
"-v128:64-a:8:16-n32:64";
|
|
|
|
|
DataLayoutString = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64"
|
|
|
|
|
"-v128:64-a:8:16-n32:64";
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -5976,7 +5976,7 @@ validateAsmConstraint(const char *&Name,
|
|
|
|
|
IntPtrType = SignedInt;
|
|
|
|
|
PtrDiffType = SignedInt;
|
|
|
|
|
SigAtomicType = SignedLong;
|
|
|
|
|
DescriptionString = "e-m:e-p:16:16-i32:16:32-a:16-n8:16";
|
|
|
|
|
DataLayoutString = "e-m:e-p:16:16-i32:16:32-a:16-n8:16";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -6078,8 +6078,8 @@ validateAsmConstraint(const char *&Name,
|
|
|
|
|
FloatFormat = &llvm::APFloat::IEEEsingle;
|
|
|
|
|
DoubleFormat = &llvm::APFloat::IEEEsingle;
|
|
|
|
|
LongDoubleFormat = &llvm::APFloat::IEEEsingle;
|
|
|
|
|
DescriptionString = "E-p:32:32-i8:8:32-i16:16:32-i64:32"
|
|
|
|
|
"-f64:32-v64:32-v128:32-a:0:32-n32";
|
|
|
|
|
DataLayoutString = "E-p:32:32-i8:8:32-i16:16:32-i64:32"
|
|
|
|
|
"-f64:32-v64:32-v128:32-a:0:32-n32";
|
|
|
|
|
AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
|
|
|
|
|
UseAddrSpaceMapMangling = true;
|
|
|
|
|
}
|
|
|
|
@ -6124,10 +6124,10 @@ public:
|
|
|
|
|
RegParmMax = 5;
|
|
|
|
|
if (Triple.getArch() == llvm::Triple::bpfeb) {
|
|
|
|
|
BigEndian = true;
|
|
|
|
|
DescriptionString = "E-m:e-p:64:64-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "E-m:e-p:64:64-i64:64-n32:64-S128";
|
|
|
|
|
} else {
|
|
|
|
|
BigEndian = false;
|
|
|
|
|
DescriptionString = "e-m:e-p:64:64-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:e-p:64:64-i64:64-n32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
MaxAtomicPromoteWidth = 64;
|
|
|
|
|
MaxAtomicInlineWidth = 64;
|
|
|
|
@ -6167,7 +6167,7 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class MipsTargetInfoBase : public TargetInfo {
|
|
|
|
|
virtual void setDescriptionString() = 0;
|
|
|
|
|
virtual void setDataLayoutString() = 0;
|
|
|
|
|
|
|
|
|
|
static const Builtin::Info BuiltinInfo[];
|
|
|
|
|
std::string CPU;
|
|
|
|
@ -6455,7 +6455,7 @@ public:
|
|
|
|
|
IsNan2008 = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setDescriptionString();
|
|
|
|
|
setDataLayoutString();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -6563,8 +6563,8 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Mips32EBTargetInfo : public Mips32TargetInfoBase {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
DescriptionString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64";
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
DataLayoutString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
@ -6580,8 +6580,8 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Mips32ELTargetInfo : public Mips32TargetInfoBase {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
DescriptionString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64";
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
DataLayoutString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
@ -6721,11 +6721,11 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Mips64EBTargetInfo : public Mips64TargetInfoBase {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
if (ABI == "n32")
|
|
|
|
|
DescriptionString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
else
|
|
|
|
|
DescriptionString = "E-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "E-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -6741,11 +6741,11 @@ public:
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Mips64ELTargetInfo : public Mips64TargetInfoBase {
|
|
|
|
|
void setDescriptionString() override {
|
|
|
|
|
void setDataLayoutString() override {
|
|
|
|
|
if (ABI == "n32")
|
|
|
|
|
DescriptionString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
else
|
|
|
|
|
DescriptionString = "e-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:m-i8:8:32-i16:16:32-i64:64-n32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
public:
|
|
|
|
|
Mips64ELTargetInfo(const llvm::Triple &Triple)
|
|
|
|
@ -6848,8 +6848,7 @@ public:
|
|
|
|
|
NoAsmVariants = true;
|
|
|
|
|
LongWidth = LongAlign = PointerWidth = PointerAlign = 64;
|
|
|
|
|
MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
|
|
|
|
|
DescriptionString =
|
|
|
|
|
"e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128";
|
|
|
|
|
DataLayoutString = "e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
@ -6961,9 +6960,8 @@ namespace {
|
|
|
|
|
PointerWidth = PointerAlign = 32;
|
|
|
|
|
SizeType = TargetInfo::UnsignedInt;
|
|
|
|
|
PtrDiffType = IntPtrType = TargetInfo::SignedInt;
|
|
|
|
|
DescriptionString
|
|
|
|
|
= "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
|
|
|
|
"v96:128-v192:256-v256:256-v512:512-v1024:1024";
|
|
|
|
|
DataLayoutString = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
|
|
|
|
"v96:128-v192:256-v256:256-v512:512-v1024:1024";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -6977,8 +6975,8 @@ namespace {
|
|
|
|
|
PointerWidth = PointerAlign = 64;
|
|
|
|
|
SizeType = TargetInfo::UnsignedLong;
|
|
|
|
|
PtrDiffType = IntPtrType = TargetInfo::SignedLong;
|
|
|
|
|
DescriptionString = "e-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
|
|
|
|
"v96:128-v192:256-v256:256-v512:512-v1024:1024";
|
|
|
|
|
DataLayoutString = "e-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
|
|
|
|
"v96:128-v192:256-v256:256-v512:512-v1024:1024";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
@ -7001,8 +6999,8 @@ public:
|
|
|
|
|
WCharType = UnsignedChar;
|
|
|
|
|
WIntType = UnsignedInt;
|
|
|
|
|
UseZeroLengthBitfieldAlignment = true;
|
|
|
|
|
DescriptionString = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32"
|
|
|
|
|
"-f64:32-a:0:32-n32";
|
|
|
|
|
DataLayoutString = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32"
|
|
|
|
|
"-f64:32-a:0:32-n32";
|
|
|
|
|
}
|
|
|
|
|
void getTargetDefines(const LangOptions &Opts,
|
|
|
|
|
MacroBuilder &Builder) const override {
|
|
|
|
|