diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2014-01-16 16:43:19 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2014-01-16 16:43:19 +0000 |
| commit | 497332c05f2b46a0603e373022f3587c6d860dfd (patch) | |
| tree | 0f996d78192f4e296107140f67ad0a591b2d895e | |
| parent | 5a1a81841a11c9fdfc1b72faa2ffc20245bcbf78 (diff) | |
| download | bcm5719-llvm-497332c05f2b46a0603e373022f3587c6d860dfd.tar.gz bcm5719-llvm-497332c05f2b46a0603e373022f3587c6d860dfd.zip | |
SPARCv9 implements long double as an IEEE quad.
llvm-svn: 199399
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 6 | ||||
| -rw-r--r-- | clang/test/CodeGen/sparcv9-abi.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 629b540a14e..65864cd1d03 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -4532,6 +4532,12 @@ public: UIntMaxType = UnsignedLong; } Int64Type = IntMaxType; + + // The SPARCv8 System V ABI has long double 128-bits in size, but 64-bit + // aligned. The SPARCv9 SCD 2.4.1 says 16-byte aligned. + LongDoubleWidth = 128; + LongDoubleAlign = 128; + LongDoubleFormat = &llvm::APFloat::IEEEquad; } virtual void getTargetDefines(const LangOptions &Opts, diff --git a/clang/test/CodeGen/sparcv9-abi.c b/clang/test/CodeGen/sparcv9-abi.c index 4ba4be852fe..d4fff81ab6e 100644 --- a/clang/test/CodeGen/sparcv9-abi.c +++ b/clang/test/CodeGen/sparcv9-abi.c @@ -18,6 +18,9 @@ long long f_int_3(long long x) { return x; } // CHECK-LABEL: define signext i8 @f_int_4(i8 signext %x) char f_int_4(char x) { return x; } +// CHECK-LABEL: define fp128 @f_ld(fp128 %x) +long double f_ld(long double x) { return x; } + // Small structs are passed in registers. struct small { int *a, *b; |

