summaryrefslogtreecommitdiff
path: root/test/builtins
AgeCommit message (Collapse)Author
2017-12-04These tests require x86 80-bit doubles. Mark them so.Sterling Augustine
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@319669 91177308-0d34-0410-b5e6-96231b3b80d8
2017-11-16[builtins][ARM] re-enable mulsc3_test.c on ArmPeter Smith
The mulsc3_test.c was marked as unsupported due to PR32457, the underlying cause of this PR was fixed in PR28164 so we can remove the unsupported as it is no longer needed. Differential Revision: https://reviews.llvm.org/D40076 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@318396 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-16[builtins] Remove one more missed not-androidVitaly Buka
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@313441 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-03These tests use 80-bit long doubles, which are x86 only. Mark them so.Sterling Augustine
This avoids having each new target need to mark them as unsupported. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@309973 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-02Use a more standard method to mark these tests as unsupported on powerpc64.Sterling Augustine
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@309892 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-28Add clear_cache implementation for ppc64. Fix buffer to meet ppc64 alignment.Sterling Augustine
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@309423 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-21Remove Bitrig: CompilerRT ChangesErich Keane
Bitrig code has been merged back to OpenBSD, thus the OS has been abandoned. Differential Revision: https://reviews.llvm.org/D35709 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@308798 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-30fix trivial typos, NFCHiroshi Inoue
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@306807 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25Add generic __bswap[ds]i2 implementationsDimitry Andric
Summary: In FreeBSD we needed to add generic implementations for `__bswapdi2` and `__bswapsi2`, since gcc 6.x for mips is emitting calls to these. See: https://reviews.freebsd.org/D10838 and https://reviews.freebsd.org/rS318601 The actual mips code generated for these generic C versions is pretty OK, as can be seen in the (FreeBSD) review. I checked over gcc sources, and it seems that it can emit these calls on more architectures, so maybe it's best to simply always add them to the compiler-rt builtins library. Reviewers: howard.hinnant, compnerd, petarj, emaste Reviewed By: compnerd, emaste Subscribers: mgorny, llvm-commits, arichardson Differential Revision: https://reviews.llvm.org/D33516 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@303866 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-04[compiler-rt][mips] Add support for quad precision builtins for mips64Simon Dardis
Match the builtins that GCC provides for IEEE754 quad precision on MIPS64. Also, enable building them with clang as PR20098 is resolved. Disable tests for xf and xc modes as MIPS doesn't support that mode in hardware or software. Reviewers: slthakur Differential Revision: https://reviews.llvm.org/D32794 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@302147 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-07[builtins] Remove stray quotes to fix check-builtins on non-Windows :(Reid Kleckner
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299790 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-07[builtins] Get the builtins tests passing on WindowsReid Kleckner
Many things were broken: - We stopped building most builtins on Windows in r261432 for reasons that are not at all clear to me. This essentially reverts that patch. - Fix %librt to expand to clang_rt.builtins-$arch.lib on Windows instead of libclang_rt.builtins-$arch.a. - Fix memory protection tests (trampoline, enable executable, clear cache) on Windows. One issue was that the MSVC incremental linker generates ILT thunks for functions with external linkage, so memcpying the functions into the executable stack buffer wasn't working. You can't memcpy an RIP-relative jump without fixing up the offset. - Disable tests that rely on C99 complex library functions when using the MSVC CRT, which isn't compatible with clang's C99 _Complex. In theory, these could all be separate patches, but it would not green the tests, so let's try for it all at once. Hopefully this fixes the clang-x64-ninja-win7 bot. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299780 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-06Add __ffssi2 implementation to compiler-rt builtinsDimitry Andric
Summary: During MIPS implementation work for FreeBSD, John Baldwin (jhb@FreeBSD.org) found that gcc 6.x emits calls to __ffssi2() when compiling libc and some userland programs in the base system. Add it to compiler-rt's builtins, based off of the existing __ffsdi2() implementation. Also update the CMake files and add a test case. Reviewers: howard.hinnant, weimingz, rengolin, compnerd Reviewed By: weimingz Subscribers: dberris, mgorny, llvm-commits, emaste Differential Revision: https://reviews.llvm.org/D31721 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299675 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-29[Builtins] Mark mulsc3_test as UNSUPPORTED for armhf; NFCWeiming Zhao
The same test fails on clang-cmake-armv7-a15-full biuld bot but passes the clang-cmake-thumbv7-a15-full. For now, we mark it as UNSUPPORTED for armhf target. Bug 32457 tracks it. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@299005 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-29[Compiler-RT][Builtins] Remove XFAIL for mulsc3; NFCWeiming Zhao
It was XFAILed in r298974. However, the problem was not exposed on the buildbot because hardfp flag was not passed during the test. We can fix the CMAKE to pass the same flag as building the lib to the RUN line to see if the problem is still there. For now, we remove the XFAIL. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298997 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-29[Builtin] Unxfail tests for armhfWeiming Zhao
Summary: Originally, a few tests fail for armhf target due to: 1) COMPILER_RT_ARMHF_TARGET was not set when building the lib 2) COMPILER_RT_ABI should not be defined as `__attribute__((pcs("aapcs")))` for armhf when building for both lib and tests This address https://bugs.llvm.org//show_bug.cgi?id=32261 mulsc3_test.c is a newly exposed issue, which will be addressed separately. Reviewers: rengolin, compnerd Reviewed By: compnerd Subscribers: aemerson, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D31448 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298974 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-27Reland "[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)"Weiming Zhao
Re-land of r298714 which got reverted in r298868. It looks like the current lit tests won't run for Apple. Possible reason is the libname is different. (need to update the base_lib variable of lit.cfg) git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298892 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-27Revert "[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)"Juergen Ributzka
This broke GreenDragon: http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/29505/consoleFull git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298868 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-24[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)Weiming Zhao
Summary: Original r297566 (https://reviews.llvm.org/D30802) is splitted into two parts. This part adds CMakefile/lit.cfg support. Reviewers: rengolin, compnerd, jroelofs, erik.pilkington Subscribers: srhines, dberris, mgorny Differential Revision: https://reviews.llvm.org/D31259 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298714 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-21[Builtin] Implement lit-test support (part 1 of 2: test cases update)Weiming Zhao
Original r297566 is splitted into two parts. This is part one, which adds "RUN" command for test cases. Unit/arm/call_apsr.S is updated to support thumb1. It also fixes a bug in arm/aeabi_uldivmod_test.c gcc_personality_test is XFAILED as the framework cannot handle it so far. cpu_model_test is also XFAILED for now as it is expected to return non-zero. TODO: A few tests are XFAILed for armhf and aarch64. We need further investigating. [1,2] Tracks the issue. [1] https://bugs.llvm.org//show_bug.cgi?id=32260 [2] https://bugs.llvm.org//show_bug.cgi?id=32261 Reviewers: rengolin, compnerd, jroelofs, erik.pilkington, arphaman Reviewed By: jroelofs Subscribers: jroelofs, aemerson, srhines, nemanjai, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D30802 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@298339 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-14[compiler-rt][builtins] __isOSVersionAtLeast should load CoreFoundationAlex Lorenz
symbols dynamically The CoreFoundation symbols uses by __isOSVersionAtLeast should be loaded at runtime to ensure that the programs that don't use @available won't have to be linked to CoreFoundation. The Clang frontend IRGen library will need to emit a CoreFoundation symbol when @available is used to ensure that programs that actually use @available are linked to CoreFoundation. rdar://31039554 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297760 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-14[Builtin][AArch64] Fix build errors of test casesWeiming Zhao
Summary: {mul,sub}tf3_test.c have build errors [1] because macro "COMPILER_RT_ABI" is defined in "int_lib.h", which should be included in test cases. [1] http://lab.llvm.org:8011/builders/clang-cmake-aarch64-39vma/builds/4861/steps/ninja%20check%201/logs/FAIL%3A%20Builtins-aarch64-linux%3A%3A%20multf3_test.c Reviewers: rengolin, sdmitriev, dschuff, compnerd, jroelofs Reviewed By: jroelofs Subscribers: llvm-commits, aemerson Differential Revision: https://reviews.llvm.org/D30872 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297697 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11Revert "[Builtin] Implement lit-test support"Weiming Zhao
Due to test failure of check-builtins for aarch64 and armhf. This reverts commit r297566. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297569 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-11[Builtin] Implement lit-test supportWeiming Zhao
Summary: This patch implements a initial support of lit test for builtins. Unit/arm/call_apsr.S is updated to support thumb1. It also fixes a bug in arm/aeabi_uldivmod_test.c gcc_personality_test is XFAILED as the framework cannot handle it so far. cpu_model_test is also XFAILED for now as it is expected to return non-zero. Reviewers: rengolin, compnerd, jroelofs, erik.pilkington, arphaman Reviewed By: jroelofs Subscribers: jroelofs, aemerson, srhines, nemanjai, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D30802 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297566 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-10[Builtin][ARM] Fix test case for uldivmodWeiming Zhao
Summary: the inline asm should set those clobbered registers. Reviewers: rengolin, compnerd, jroelofs Reviewed By: jroelofs Subscribers: aemerson, llvm-commits Differential Revision: https://reviews.llvm.org/D30811 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297487 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09Reapply r297382: "[compiler-rt][builtins] Add __isOSVersionAtLeast()"Erik Pilkington
Looks like the problem was a case-insensitive include of dispatch/dispatch.h. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297392 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09Revert "[compiler-rt][builtins] Add __isOSVersionAtLeast()"Erik Pilkington
This reverts r297382, it was causing build failures. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297388 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-09[compiler-rt][builtins] Add __isOSVersionAtLeast()Erik Pilkington
This predicate compares the host's marketing OS version to one passed as argument. Currently, only darwin targets are supported. This is done by parsing the SystemVersion.plist file. Also added in this patch is some lit testing infrastructure for builtins, which previously had none. This part of the patch was written by Alex Lorenz (with some minor modifications). This patch is part of a feature I proposed here: http://lists.llvm.org/pipermail/cfe-dev/2016-July/049851.html Differential revision: https://reviews.llvm.org/D30136 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@297382 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-15[Builtin][ARM] #ifdef ARM vfp tests and cpu_model_testsWeiming Zhao
Summary: Add in #ifdef to exclude cpu_model_test on non-X86 and *vfp_test on ARM targets without VFP support. This is consistent with other target-specific tests that print "Skipped" if not supported. Reviewers: rengolin, compnerd, asbirlea Reviewed By: compnerd Subscribers: llvm-commits, aemerson Differential Revision: https://reviews.llvm.org/D29882 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@295261 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-08[test] #ifdef new builtin tests for __arm__ platformMichal Gorny
Add an #if that excludes the newly added aeabi* tests on non-ARM platforms. This is consistent with other ARM tests, and aims to make running builtin tests easier. Lacking a proper infrastructure to run tests selectively, it is more convenient if we do not have to implement directory-platform exclusions and can just rely on tests compiling to no-op on other platforms. Differential Revision: https://reviews.llvm.org/D29708 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@294438 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-30[Bultin][ARM] Make aeabi_uldivmod and aeabi_ldivmod be Thumb1 compatibleWeiming Zhao
Summary: in aeabi_ldivmod and uldivmod, using r6 instead of r12 as the temp reg due to limitation of Thumb1 ISA. Now, all EABI sources are Thumb1 compatible. Also added test cases by reusing the test cases from divmodsi4_test.c, udivmodsi4_test and udivmoddi4_test.c Reviewers: rengolin, compnerd Reviewed By: rengolin Subscribers: javed.absar, aemerson, mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D29226 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@293527 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-21[test] Fix page address logic in clear_cache_testMichal Gorny
Fix the logic used to calculate page boundaries in clear_cache_test to use correct masks -- e.g. -4096 rather than -4095. The latter gives incorrect result since: -4095 -> 0xfffff001 -4096 -> 0xfffff000 (== ~4095) The issue went unnoticed so far because the array alignment caused the last bit not to be set. However, on 32-bit x86 no such alignment is enforced and the wrong page address caused the test to fail. Furthermore, obtain the page size from the system instead of hardcoding 4096. Differential Revision: https://reviews.llvm.org/D28849 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@292729 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-17[test] [builtins] Remove obsolete/UB tests in __fixuns?fdi basedMichal Gorny
Remove the failing tests for __fixunssfdi() and __fixunsdfdi() that relied on undefined (and most likely obsolete in terms of compiler-rt implementation behavior). Both tests presumed that 0x1.p+64 would be converted to 0xFFFFFFFFFFFFFFFFLL, that is the largest value in uint64 range. However, the C/C++ standards do not specify the behavior for converting a floating-point value to an integer of smaller range, and in this case both libgcc and compiler-rt implementations return 0 instead. Since the current behavior is correct with regards to standards and there is no good way of expressing 0xFFFFFFFFFFFFFFFFLL in single- or double-precision float, I've removed the failing test altogether. Differential Revision: https://reviews.llvm.org/D28146 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@292257 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-06[builtins] Implement __floattitf() & __floatuntitf()Michal Gorny
Implement the missing __floattitf() and __floatuntitf() functions, to convert 128-bit (unsigned) integers to quad-precision floating-point types. This is needed e.g. on AArch64 where 'long double' is a quad-precision type. The code is based on the existing code for __floattixf() and __floatuntixf(), updated to account for different bit field lengths of quad-precision float. The tests are also copied, with the rounding tests adjusted for longer significand. Differential Revision: https://reviews.llvm.org/D27898 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@291259 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-23[tests] Add missing "int_lib.h" includes and extend guardsMichal Gorny
Fix missing "int_lib.h" includes in ARM negdf2vfp and subdf3vfp tests. Additionally, extend the __arm__ guard to cover the builtin definition in the former. This is mostly intended to prevent build failures and allow those tests to be properly skipped on other targets. Differential Revision: https://reviews.llvm.org/D28078 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@290422 91177308-0d34-0410-b5e6-96231b3b80d8
2016-08-18[compiler-rt][tests] cpu_model_test.c test fails to compile if X86 is not ↵Oleg Ranevskyy
clang's default target Summary: test/builtins/Unit/cpu_model_test.c tests the X86 specific builtin `__builtin_cpu_supports`. It fails if the clang's default target is not X86. The proposed patch adds an additional requirement for the X86 target to the test, making lit ignore the test if the target is different. Reviewers: asbirlea Subscribers: dberris, llvm-commits Differential Revision: https://reviews.llvm.org/D23633 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@279071 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14Add runtime support for __cpu_model (__builtin_cpu_supports)Alina Sbirlea
Summary: This aims to add support for __cpu_model and address Bug 25510. It uses the code from lib/Support/Host.cpp for cpu detection, and creates __cpu_model with that info. Tested on OSX and built on Linux as well (though libgcc is the default). The use of "asm" required -std=gnu99, hence the cmake change. Corrections on better addressing this are welcome. Previously reverted, up for review again to iron out outstanding issues. Reviewers: llvm-commits, joerg, echristo, mehdi_amini Subscribers: mehdi_amini Differential Revision: http://reviews.llvm.org/D22181 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@275484 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-08Revert "Add runtime support for __cpu_model (__builtin_cpu_supports)"Alina Sbirlea
This reverts commit r274873 until additional fixes are resolved. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@274944 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-08Add runtime support for __cpu_model (__builtin_cpu_supports)Alina Sbirlea
Summary: This aims to add support for __cpu_model and address Bug 25510. It uses the code from lib/Support/Host.cpp for cpu detection, and creates __cpu_model with that info. Tested on OSX, it builts successfully, but the current version does *not* resolve Bug 25510. The __cpu_model symbol is present in the library but it only gets loaded with -all_load. This patch will not land until this issue is clarified. Built on Linux as well (though libgcc is the default). The use of "asm" required -std=gnu99, hence the cmake change. Corrections on better addressing this are welcome. Note: See additional comments on D20988 (committed as r271921). Reviewers: llvm-commits, joerg, echristo, mehdi_amini Subscribers: mehdi_amini Differential revision: http://reviews.llvm.org/D21033 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@274873 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-08Revert r274865-r274870Alina Sbirlea
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@274872 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-08Add default initialization. Add unit test.Alina Sbirlea
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@274867 91177308-0d34-0410-b5e6-96231b3b80d8
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