Skip to content

Commit 1d65696

Browse files
committed
[PowerPC] Update data layout aligment of i128 to 16
1 parent c6897ca commit 1d65696

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
@@ -404,11 +404,11 @@ class LLVM_LIBRARY_VISIBILITY PPC32TargetInfo : public PPCTargetInfo {
404404
PPC32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
405405
: PPCTargetInfo(Triple, Opts) {
406406
if (Triple.isOSAIX())
407-
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-n32");
407+
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-i128:128-n32");
408408
else if (Triple.getArch() == llvm::Triple::ppcle)
409-
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-n32");
409+
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
410410
else
411-
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-n32");
411+
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
412412

413413
switch (getTriple().getOS()) {
414414
case llvm::Triple::Linux:
@@ -463,12 +463,12 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
463463

464464
if (Triple.isOSAIX()) {
465465
// TODO: Set appropriate ABI for AIX platform.
466-
DataLayout = "E-m:a-Fi64-i64:64-n32:64";
466+
DataLayout = "E-m:a-Fi64-i64:64-i128:128-n32:64";
467467
LongDoubleWidth = 64;
468468
LongDoubleAlign = DoubleAlign = 32;
469469
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
470470
} else if ((Triple.getArch() == llvm::Triple::ppc64le)) {
471-
DataLayout = "e-m:e-Fn32-i64:64-n32:64";
471+
DataLayout = "e-m:e-Fn32-i64:64-i128:128-n32:64";
472472
ABI = "elfv2";
473473
} else {
474474
DataLayout = "E-m:e";
@@ -479,7 +479,7 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
479479
ABI = "elfv1";
480480
DataLayout += "-Fi64";
481481
}
482-
DataLayout += "-i64:64-n32:64";
482+
DataLayout += "-i64:64-i128:128-n32:64";
483483
}
484484

485485
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
@@ -183,6 +183,9 @@ static std::string getDataLayoutString(const Triple &T) {
183183
// documentation are wrong; these are correct (i.e. "what gcc does").
184184
Ret += "-i64:64";
185185

186+
// Alignment for 128 bit integers.
187+
Ret += "-i128:128";
188+
186189
// PPC64 has 32 and 64 bit registers, PPC32 has only 32 bit ones.
187190
if (is64Bit)
188191
Ret += "-n32:64";

0 commit comments

Comments
 (0)