summaryrefslogtreecommitdiff
path: root/test/builtins
AgeCommit message (Collapse)Author
2015-11-22Add a generic version of __divtc3.c for long double complex division.Joerg Sonnenberger
Mark the unit test as applying to all platforms. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@253831 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-22Use cabsl for long double, not cabs.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@253829 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05[compiler-rt][aarch64] New tests for 128-bit floating-point builtins, fixes ↵Sergey Dmitrouk
of tests and __fixuint Summary: The following tests for 128-bit floating-point type behaved in a strange way, thought it were bugs, but seem to be mistakes in tests: * `fixtfsi` test checked for `0x80000001` as a value returned for number less than can be represented, while `LONG_MIN` should be returned on saturation; * `fixunstfdi` wasn't enabled for AArch64, only for PPC, but there is nothing PPC specific in that test; * `multf3` tried to underflow multiplication by producing result with 16383 exponent, while there are still 112 bits of fraction plus implicit bit, so resultant exponent should be 16497. Tests for some other builtins didn't exist: * `fixtfdi` * `fixtfti` * `fixunstfti` They were made by copying similar files and adjusting for wider types and adding/removing some reasonable/extra checks. Also `__fixuint` seems to have off by one error, updated tests to catch this case. Reviewers: rengolin, zatrazz, howard.hinnant, t.p.northover, jmolloy, enefaim Subscribers: aemerson, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D14187 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@252180 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-21Implement __aeabi_c{d,f}{cmpeq,cmple,rcmple}.Josh Gao
Summary: Implement more missing ARM EABI runtime functions. Reviewers: rengolin, compnerd Subscribers: pirama, srhines, danalbert, aemerson, llvm-commits Differential Revision: http://reviews.llvm.org/D12089 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@245648 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-18Implement __aeabi_{f,d}rsub.Dan Albert
Summary: Implement the missing ARM EABI functions _aeabi_frsub and __aeabi_drsub. Reviewers: rengolin, compnerd Subscribers: pirama, srhines, danalbert, aemerson, llvm-commits Differential Revision: http://reviews.llvm.org/D12088 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@245321 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-18[compiler-rt] Add AArch64 to CMake configuration and several missing builtinsSergey Dmitrouk
Summary: Currently CMake doesn't build builtins for AArch64 and if one does this anyway it's likely that at least `__multc3`, `__floatditf` and `__floatunditf` will be missing. There is actually more builtins to add, but these come from different libc implementations, thus providing them makes compiler-rt for AArch64 good enough at least for basic usage. Builtins implementation were originally taken from FreeBSD project: * [[ https://reviews.freebsd.org/D2173 | __multc3 ]] * [[ https://reviews.freebsd.org/D2174 | __floatditf and __floatunditf ]] Until they have been tested to find mistakes in `__float*` functions. `__floatditf` was based on `__floatsitf`, which had the same mistakes (fixed it in r243746). Version of the builtins in this patch are fixed and complemented with basic tests. Additionally they were tested via GCC's torture (this is what revealed these issues). P.S. Ed (author of FreeBSD patches) asked for feedback on the list some time ago (here [[ http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-March/084064.html | here ]]) and got no response, but it seems to be worth adding these builtins as is and extracting common part later. Reviewers: howard.hinnant, t.p.northover, jmolloy, enefaim, rengolin, zatrazz Subscribers: asl, emaste, samsonov, aemerson, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D11679 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@245296 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-31Fix __floatsitf() for negative inputSergey Dmitrouk
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
2015-06-23Fix incorrect truncation at the overflow boundaryPirama Arumuga Nainar
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
2015-06-12[builtins] Hide long double fp_test.h helpers if it's not fp128.Ahmed Bougacha
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
2015-05-12[Builtins] Implement half-precision conversions.Ahmed Bougacha
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
2015-04-24Add COMPILER_RT_ABI attribute to declarations of builtin functions in unittestsDerek Schuff
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
2015-03-11Refactor float to integer conversion to share the same code.Joerg Sonnenberger
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
2015-03-08Avoid warnings on !PowerPCJoerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@231609 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-08Don't produce warnings on !PowerPC.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@231608 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-05tests: correct builtins test if built under -mthumb on ARMSaleem Abdulrasool
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
2014-09-16Implement floatsitf, floatunstfsi, which performJoerg Sonnenberger
(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
2014-06-19Provide mul for IEEE quad. From GuanHong Liu.Joerg Sonnenberger
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
2014-06-19Provide add and sub for IEEE quad. From GuanHong Liu.Joerg Sonnenberger
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
2014-05-30Implement __divtf3 for IEEE quad precision.Joerg Sonnenberger
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
2014-05-29Add __extenddftf2 and __extendsftf2 for IEEE quad precision.Joerg Sonnenberger
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
2014-05-29Implement __trunctfdf2 and __trunctfsf2 for IEEE quad precision.Joerg Sonnenberger
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
2014-04-01Add support for IEEE754 quad precision comparison functions.Joerg Sonnenberger
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
2014-03-18Use CRT_HAS_128BIT.Joerg Sonnenberger
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204182 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-14Move tests for BlocksRuntime and builtins to corresponding directories under ↵Alexey Samsonov
test/ git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@201396 91177308-0d34-0410-b5e6-96231b3b80d8