forked from OSchip/llvm-project
[PowerPC] Allow -mfloat128 option for VSX targets
Targets with VSX feature but without native float128 instructions can
also use that type with supplementary libcalls. We don't enable it by
default now because Glibc assumes long double and float128 can be
implicitly converted in between, which is not available under default
'ibmlongdouble' semantics in clang.
This commit partly relands cbd93ce
.
This commit is contained in:
parent
9c4292a59d
commit
d771cf2775
|
@ -561,9 +561,9 @@ bool PPCTargetInfo::initFeatureMap(
|
|||
if (!ppcUserFeaturesCheck(Diags, FeaturesVec))
|
||||
return false;
|
||||
|
||||
if (!(ArchDefs & ArchDefinePwr9) && (ArchDefs & ArchDefinePpcgr) &&
|
||||
if (!(ArchDefs & ArchDefinePwr7) && (ArchDefs & ArchDefinePpcgr) &&
|
||||
llvm::is_contained(FeaturesVec, "+float128")) {
|
||||
// We have __float128 on PPC but not power 9 and above.
|
||||
// We have __float128 on PPC but not pre-VSX targets.
|
||||
Diags.Report(diag::err_opt_not_valid_with_opt) << "-mfloat128" << CPU;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -2,13 +2,17 @@
|
|||
// RUN: -mcpu=pwr9 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=HASF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mcpu=power9 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=HASF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mcpu=pwr8 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=HASF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mcpu=pwr7 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=HASF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=HASF128
|
||||
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mcpu=pwr8 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=NOF128
|
||||
// RUN: -mcpu=pwr6 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=NOF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mcpu=pwr7 -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=NOF128
|
||||
// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
|
||||
// RUN: -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=NOF128
|
||||
// RUN: -mno-vsx -mfloat128 %s 2>&1 | FileCheck %s --check-prefix=NOF128
|
||||
|
||||
#ifdef __FLOAT128__
|
||||
static_assert(false, "__float128 enabled");
|
||||
|
|
Loading…
Reference in New Issue