summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/builtins/assembly.h
Commit message (Collapse)AuthorAgeFilesLines
* Implement __aeabi_c{d,f}{cmpeq,cmple,rcmple}.Josh Gao2015-08-211-0/+9
| | | | | | | | | | | | 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
* builtins: cleanup constant data section selectionSaleem Abdulrasool2014-12-101-1/+4
| | | | | | | | | | Each of the object formats use a different directive for selecting the constant section. Use a macro to avoid the duplication across a number of files. Also correct a small macro mismatch on the Windows case (HIDDEN_DIRECTIVE -> HIDDEN). Patch by Vadim Chugunov! llvm-svn: 223910
* builtins: add missed change from previous commitSaleem Abdulrasool2014-10-071-1/+1
| | | | | | | The macro rework was missing a trailing SEPARATOR for the .thumb_func, resulting in assembly failures. llvm-svn: 219183
* builtins: rework use of DEFINE_COMPILERRT_THUMB_FUNCTIONSaleem Abdulrasool2014-10-071-8/+4
| | | | | | | | | | | | | | | This is simply to help clarity of the code. The functions are built as thumb only if Thumb2 is available (__ARM_ARCH_ISA_THUMB == 2). Sink the selection into the location of the definition and make DEFINE_COMPILERRT_THUMB_FUNCTION always define a thumb function while DEFINE_COMPILERRT_FUNCTION always selects the default. Since the .thumb_func directive is always available (at least on Linux, Windows, and BSD), sinking the macro right into the macro works just as well. No functional change intended. llvm-svn: 219182
* Try harder to fix ARM/Linux after r219040.Bob Wilson2014-10-041-1/+6
| | | | llvm-svn: 219066
* Attempt to fix ARM/Linux after r219040.Bob Wilson2014-10-041-1/+1
| | | | llvm-svn: 219064
* Fix the armv7 thumb builtins on darwinSteven Wu2014-10-041-0/+12
| | | | | | | | | | The arm builtins converted into thumb in r213481 are not working on darwin. On apple platforms, .thumb_func directive is required to generated correct symbols for thumb functions. <rdar://problem/18523605> llvm-svn: 219040
* builtins: remove definition of __ARM_ARCHSaleem Abdulrasool2014-09-191-27/+0
| | | | | | | | __ARM_ARCH is part of the ACLE specification. At least clang and GCC have supported this part of the ACLE for some time now. Let the compiler provide the proper definition for the macro rather than try to guess it. llvm-svn: 218095
* builtins: make ARM compilation with GAS work againSaleem Abdulrasool2014-07-271-0/+6
| | | | | | | | | | The LLVM IAS seems to accept wide instructions for add and sub in ARM mode even though it is not permitted. This uses a macro to ensure that the wide modifier is only applied when building in THUMB mode. This repairs building with GCC/GAS in ARM mode. llvm-svn: 214046
* builtins: move macro definitions into assembly.hSaleem Abdulrasool2014-07-271-0/+8
| | | | | | | The macro definitions are shared across multiple files. Define them once in the assembly.h header rather than redefining it in each file. llvm-svn: 214045
* Revert r213467, it breaks non-thumb mode.Joerg Sonnenberger2014-07-201-13/+1
| | | | llvm-svn: 213479
* ARM: fix division in some casesSaleem Abdulrasool2014-07-201-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | For ARM cores that are ARMv6T2+ but not ARMv7ve or ARMv7-r and not an updated ARMv7-a that has the idiv extension (chips with clz but not idiv), an incorrect jump would be calculated due to the preference to thumb instructions over ARM. Rather than computing the target at runtime, use a jumptable instead. This trades a bit of storage for performance. The overhead is 32-bytes for each of the three routines, but avoid the calculation of the offset. Because clz was introduced in ARMv6T2 and idiv in certain versions of ARMv7, the non-clz, non-idiv case implies a target which does not support Thumb-2, and thus we cannot use Thumb on those targets (as it is unlikely that the assembly will assemble). Take the opportunity to refactor the IT block macros into assembly.h rather than redefining them in the TUs where they are used. Existing tests cover the full change already, so no new tests are added. This effectively reverts SVN r213309. llvm-svn: 213467
* builtins: assembly routines are not staticSaleem Abdulrasool2014-06-211-1/+1
| | | | | | | | | Storage Class 3 is static storage. These symbols need to be marked as external (storage class 2) so that they can be referenced. Note that this external is not the same as ELF "external" visibility, which is indicated by DLL Storage Class (i.e. __declspec(dllexport) or __declspec(dllimport)). llvm-svn: 211428
* assembly: support symbol definitions for COFFSaleem Abdulrasool2014-05-181-1/+10
| | | | | | | | | Extend the function definition macros further to support COFF object emission. The function definition in COFF includes the type and storage class in the symbol definition context. This is needed to make the assembly routines possible to be built for COFF environments (i.e. Windows). llvm-svn: 209095
* assembly: rework HIDDEN_DIRECTIVE to accomodate COFFSaleem Abdulrasool2014-05-181-5/+5
| | | | | | | | Rename the HIDDEN_DIRECTIVE macro to HIDDEN and give it a parameter providing the name of the symbol to be given hidden visibility. This makes the macros more amenable to COFF. llvm-svn: 209094
* clang-format assembly.hSaleem Abdulrasool2014-05-161-75/+74
| | | | | | Reformat assembly.h with clang-format. NFC. llvm-svn: 208950
* Move .subsections_via_symbols directives into DEFINE_COMPILERRT_PRIVATE_FUNCTIONJonathan Roelofs2014-05-121-0/+2
| | | | llvm-svn: 208603
* Move original compiler-rt functions (libgcc replacement) to lib/builtins ↵Alexey Samsonov2014-02-141-0/+136
directory llvm-svn: 201393
OpenPOWER on IntegriCloud