Skip to content

Commit b09ee68

Browse files
committed
[PowerPC] Update data layout aligment of i128 to 16
1 parent 6c23894 commit b09ee68

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ class LLVM_LIBRARY_VISIBILITY PS3PPUTargetInfo : public OSTargetInfo<Target> {
473473
this->IntMaxType = TargetInfo::SignedLongLong;
474474
this->Int64Type = TargetInfo::SignedLongLong;
475475
this->SizeType = TargetInfo::UnsignedInt;
476-
this->resetDataLayout("E-m:e-p:32:32-Fi64-i64:64-n32:64");
476+
this->resetDataLayout("E-m:e-p:32:32-Fi64-i64:64-i128:128-n32:64");
477477
}
478478
};
479479

clang/lib/Basic/Targets/PPC.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -403,11 +403,11 @@ class LLVM_LIBRARY_VISIBILITY PPC32TargetInfo : public PPCTargetInfo {
403403
PPC32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
404404
: PPCTargetInfo(Triple, Opts) {
405405
if (Triple.isOSAIX())
406-
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-n32");
406+
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-i128:128-n32");
407407
else if (Triple.getArch() == llvm::Triple::ppcle)
408-
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-n32");
408+
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
409409
else
410-
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-n32");
410+
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
411411

412412
switch (getTriple().getOS()) {
413413
case llvm::Triple::Linux:
@@ -462,12 +462,12 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
462462

463463
if (Triple.isOSAIX()) {
464464
// TODO: Set appropriate ABI for AIX platform.
465-
DataLayout = "E-m:a-Fi64-i64:64-n32:64";
465+
DataLayout = "E-m:a-Fi64-i64:64-i128:128-n32:64";
466466
LongDoubleWidth = 64;
467467
LongDoubleAlign = DoubleAlign = 32;
468468
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
469469
} else if ((Triple.getArch() == llvm::Triple::ppc64le)) {
470-
DataLayout = "e-m:e-Fn32-i64:64-n32:64";
470+
DataLayout = "e-m:e-Fn32-i64:64-i128:128-n32:64";
471471
ABI = "elfv2";
472472
} else {
473473
DataLayout = "E-m:e";
@@ -478,7 +478,7 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
478478
ABI = "elfv1";
479479
DataLayout += "-Fi64";
480480
}
481-
DataLayout += "-i64:64-n32:64";
481+
DataLayout += "-i64:64-i128:128-n32:64";
482482
}
483483

484484
if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() || Triple.isMusl()) {

llvm/lib/IR/AutoUpgrade.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5559,7 +5559,7 @@ std::string llvm::UpgradeDataLayoutString(StringRef DL, StringRef TT) {
55595559
return Res;
55605560
}
55615561

5562-
if (T.isSPARC() || (T.isMIPS64() && !DL.contains("m:m"))) {
5562+
if (T.isSPARC() || (T.isMIPS64() && !DL.contains("m:m")) || T.isPPC()) {
55635563
// Mips64 with o32 ABI did not add "-i128:128".
55645564
// Add "-i128:128"
55655565
std::string I64 = "-i64:64";

llvm/lib/Target/PowerPC/PPCTargetMachine.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ static std::string getDataLayoutString(const Triple &T) {
188188
// documentation are wrong; these are correct (i.e. "what gcc does").
189189
Ret += "-i64:64";
190190

191+
// Alignment for 128 bit integers.
192+
Ret += "-i128:128";
193+
191194
// PPC64 has 32 and 64 bit registers, PPC32 has only 32 bit ones.
192195
if (is64Bit)
193196
Ret += "-n32:64";

0 commit comments

Comments
 (0)