Age | Commit message (Collapse) | Author |
|
Negative numbers were handled properly initially, but got broken
during addressing review, so none of them did actually work. Issues:
* Wrong negation.
* Wrong exponent calculation.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@243746 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This patch fixes incorrect truncation when the input wider value is
exactly 2^dstBits. For that value, the overflow to infinity is not
correctly handled. The fix is to replace a strict '>' with '>='.
Currently,
__truncdfsf2(340282366900000000000000000000000000000.0) returns infinity
__truncdfsf2(340282366920938463463374607431768211456.0) returns 0
__truncdfsf2(400000000000000000000000000000000000000.0) returns infinity
Likewise, __truncdfhf2 and __truncsfhf2 (and consequently gnu_f2h_ieee)
are discontinuous at 65536.0.
This patch adds tests for all three cases, along with adding a missing
header include to fp_test.h.
Reviewers: joerg, ab, srhines
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10594
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@240450 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Like we do for the various __*tf* tests, check that long double is the
128bit type we expect directly in the header. The latter is now used by
unrelated tests (__*hf* since r237161), and those tests will break for
no reason if uint128_t doesn't exist, and long double isn't fp128.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@239630 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Mostly uninteresting, except:
- in __extendXfYf2, when checking if the number is normal, the old
code relied on the unsignedness of src_rep_t, which is a problem
when sizeof(src_rep_t) < sizeof(int): the result gets promoted to
int, the signedness of which breaks the comparison.
I added an explicit cast; it shouldn't affect other types.
- we can't pass __fp16, so src_t and src_rep_t are the same.
- the gnu_*_ieee symbols are simply duplicated definitions, as aliases
are problematic on mach-o (where only weak aliases are supported;
that's not what we want).
Differential Revision: http://reviews.llvm.org/D9693
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@237161 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Summary:
This makes their local declarations match their definitions for ARM targets,
where they have a different calling convention.
This really only affects functions that use floating point types (since the
runtime functions use soft-float, and some targets may default to hard-float)
but it seemed good to make it uniform and do the int-only ones too.
Differential Revision: http://reviews.llvm.org/D9062
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@235722 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
80bit Intel/PPC long double is excluded due to lacking support
for the abstraction. Consistently provide saturation logic.
Extend to long double on 128bit IEEE extended platforms.
Initial patch with test cases from GuanHong Liu.
Reviewed by Steve Canon.
Differential Revision: http://reviews.llvm.org/D2804
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@231965 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@231609 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@231608 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
The clear_cache and enable_execute_stack tests attempt to memcpy the definition
of a function into a buffer before executing the function. The problem with
this approach is that on some targets (ARM with thumb mode compilation, MIPS
with MIPS16 codegen or uMIPS), you would use a pointer which is incorrect (it
would be off-by-one) due to the ISA selection being encoded into the address.
This ensures that the function address is retrieved correctly in all cases.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@225215 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
(signed/unsigned)integer to quad-precision conversion.
Submitted by GuanHong Liu.
Differential Revision: http://reviews.llvm.org/D2805
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@217901 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Differential Revision: http://reviews.llvm.org/D2799
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@211313 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Differential Revision: http://reviews.llvm.org/D2798
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@211312 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Patch by: GuanHong Liu
Differential Revision: http://reviews.llvm.org/D2800
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@209886 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Patch by: GuanHong Liu
Differential Revision: http://reviews.llvm.org/D2802
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@209783 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
Patch by: GuanHong Liu
Differential Revision: http://reviews.llvm.org/D2803
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@209782 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
From GuanHong Liu.
Differential Revision: http://llvm-reviews.chandlerc.com/D2797
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@205312 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204182 91177308-0d34-0410-b5e6-96231b3b80d8
|
|
test/
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@201396 91177308-0d34-0410-b5e6-96231b3b80d8
|