summaryrefslogtreecommitdiffstats
path: root/compiler-rt/test/builtins/Unit
Commit message (Collapse)AuthorAgeFilesLines
...
* [Builtin] Unxfail tests for armhfWeiming Zhao2017-03-2923-44/+2
| | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 298974
* Reland "[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)"Weiming Zhao2017-03-272-0/+92
| | | | | | | | | 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) llvm-svn: 298892
* Revert "[Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)"Juergen Ributzka2017-03-272-92/+0
| | | | | | This broke GreenDragon: http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/29505/consoleFull llvm-svn: 298868
* [Compiler-rt][Builtins] Implement lit-test support (part 2 of 2)Weiming Zhao2017-03-242-0/+92
| | | | | | | | | | | | | | 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 llvm-svn: 298714
* [Builtin] Implement lit-test support (part 1 of 2: test cases update)Weiming Zhao2017-03-21192-7/+306
| | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 298339
* [Builtin][AArch64] Fix build errors of test casesWeiming Zhao2017-03-142-0/+2
| | | | | | | | | | | | | | | | | 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 llvm-svn: 297697
* Revert "[Builtin] Implement lit-test support"Weiming Zhao2017-03-11194-319/+7
| | | | | | | Due to test failure of check-builtins for aarch64 and armhf. This reverts commit r297566. llvm-svn: 297569
* [Builtin] Implement lit-test supportWeiming Zhao2017-03-11194-7/+319
| | | | | | | | | | | | | | | | | | | 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 llvm-svn: 297566
* [Builtin][ARM] Fix test case for uldivmodWeiming Zhao2017-03-101-0/+1
| | | | | | | | | | | | | | 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 llvm-svn: 297487
* [Builtin][ARM] #ifdef ARM vfp tests and cpu_model_testsWeiming Zhao2017-02-1535-68/+75
| | | | | | | | | | | | | | | | | 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 llvm-svn: 295261
* [test] #ifdef new builtin tests for __arm__ platformMichal Gorny2017-02-083-0/+18
| | | | | | | | | | | | | 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 llvm-svn: 294438
* [Bultin][ARM] Make aeabi_uldivmod and aeabi_ldivmod be Thumb1 compatibleWeiming Zhao2017-01-303-0/+20785
| | | | | | | | | | | | | | | | | | 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 llvm-svn: 293527
* [test] Fix page address logic in clear_cache_testMichal Gorny2017-01-211-2/+14
| | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 292729
* [test] [builtins] Remove obsolete/UB tests in __fixuns?fdi basedMichal Gorny2017-01-172-5/+0
| | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 292257
* [builtins] Implement __floattitf() & __floatuntitf()Michal Gorny2017-01-062-0/+433
| | | | | | | | | | | | | | | | 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 llvm-svn: 291259
* [tests] Add missing "int_lib.h" includes and extend guardsMichal Gorny2016-12-232-1/+3
| | | | | | | | | | | 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 llvm-svn: 290422
* [compiler-rt][tests] cpu_model_test.c test fails to compile if X86 is not ↵Oleg Ranevskyy2016-08-181-0/+2
| | | | | | | | | | | | | | | | | | 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 llvm-svn: 279071
* Add runtime support for __cpu_model (__builtin_cpu_supports)Alina Sbirlea2016-07-141-0/+19
| | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 275484
* Revert "Add runtime support for __cpu_model (__builtin_cpu_supports)"Alina Sbirlea2016-07-081-19/+0
| | | | | | This reverts commit r274873 until additional fixes are resolved. llvm-svn: 274944
* Add runtime support for __cpu_model (__builtin_cpu_supports)Alina Sbirlea2016-07-081-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 274873
* Revert r274865-r274870Alina Sbirlea2016-07-081-19/+0
| | | | llvm-svn: 274872
* Add default initialization. Add unit test.Alina Sbirlea2016-07-081-0/+19
| | | | llvm-svn: 274867
* Add a generic version of __divtc3.c for long double complex division.Joerg Sonnenberger2015-11-221-10/+1
| | | | | | Mark the unit test as applying to all platforms. llvm-svn: 253831
* Use cabsl for long double, not cabs.Joerg Sonnenberger2015-11-221-1/+1
| | | | llvm-svn: 253829
* [compiler-rt][aarch64] New tests for 128-bit floating-point builtins, fixes ↵Sergey Dmitrouk2015-11-0512-5/+279
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 252180
* Implement __aeabi_c{d,f}{cmpeq,cmple,rcmple}.Josh Gao2015-08-216-0/+406
| | | | | | | | | | | | 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 llvm-svn: 245648
* Implement __aeabi_{f,d}rsub.Dan Albert2015-08-182-0/+94
| | | | | | | | | | | | 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 llvm-svn: 245321
* [compiler-rt] Add AArch64 to CMake configuration and several missing builtinsSergey Dmitrouk2015-08-183-2/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 245296
* Fix __floatsitf() for negative inputSergey Dmitrouk2015-07-311-0/+2
| | | | | | | | | 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. llvm-svn: 243746
* Fix incorrect truncation at the overflow boundaryPirama Arumuga Nainar2015-06-234-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 240450
* [builtins] Hide long double fp_test.h helpers if it's not fp128.Ahmed Bougacha2015-06-121-0/+12
| | | | | | | | | 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. llvm-svn: 239630
* [Builtins] Implement half-precision conversions.Ahmed Bougacha2015-05-124-0/+378
| | | | | | | | | | | | | | | | | 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 llvm-svn: 237161
* Add COMPILER_RT_ABI attribute to declarations of builtin functions in unittestsDerek Schuff2015-04-24131-133/+159
| | | | | | | | | | | | | | 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 llvm-svn: 235722
* Refactor float to integer conversion to share the same code.Joerg Sonnenberger2015-03-112-0/+129
| | | | | | | | | | | | | 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 llvm-svn: 231965
* Avoid warnings on !PowerPCJoerg Sonnenberger2015-03-081-1/+2
| | | | llvm-svn: 231609
* Don't produce warnings on !PowerPC.Joerg Sonnenberger2015-03-083-3/+6
| | | | llvm-svn: 231608
* tests: correct builtins test if built under -mthumb on ARMSaleem Abdulrasool2015-01-052-11/+28
| | | | | | | | | | | 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. llvm-svn: 225215
* Implement floatsitf, floatunstfsi, which performJoerg Sonnenberger2014-09-162-0/+113
| | | | | | | | | | (signed/unsigned)integer to quad-precision conversion. Submitted by GuanHong Liu. Differential Revision: http://reviews.llvm.org/D2805 llvm-svn: 217901
* Provide mul for IEEE quad. From GuanHong Liu.Joerg Sonnenberger2014-06-191-0/+95
| | | | | | Differential Revision: http://reviews.llvm.org/D2799 llvm-svn: 211313
* Provide add and sub for IEEE quad. From GuanHong Liu.Joerg Sonnenberger2014-06-192-0/+155
| | | | | | Differential Revision: http://reviews.llvm.org/D2798 llvm-svn: 211312
* Implement __divtf3 for IEEE quad precision.Joerg Sonnenberger2014-05-301-0/+94
| | | | | | | Patch by: GuanHong Liu Differential Revision: http://reviews.llvm.org/D2800 llvm-svn: 209886
* Add __extenddftf2 and __extendsftf2 for IEEE quad precision.Joerg Sonnenberger2014-05-292-0/+165
| | | | | | | Patch by: GuanHong Liu Differential Revision: http://reviews.llvm.org/D2802 llvm-svn: 209783
* Implement __trunctfdf2 and __trunctfsf2 for IEEE quad precision.Joerg Sonnenberger2014-05-292-0/+151
| | | | | | | Patch by: GuanHong Liu Differential Revision: http://reviews.llvm.org/D2803 llvm-svn: 209782
* Add support for IEEE754 quad precision comparison functions.Joerg Sonnenberger2014-04-018-0/+822
| | | | | | | | From GuanHong Liu. Differential Revision: http://llvm-reviews.chandlerc.com/D2797 llvm-svn: 205312
* Use CRT_HAS_128BIT.Joerg Sonnenberger2014-03-1835-104/+104
| | | | llvm-svn: 204182
* Move tests for BlocksRuntime and builtins to corresponding directories under ↵Alexey Samsonov2014-02-14158-0/+166558
test/ llvm-svn: 201396
OpenPOWER on IntegriCloud