Name |
Date |
Size |
#Lines |
LOC |
||
---|---|---|---|---|---|---|
.. | - | - | ||||
math/ | H | - | - | 99,930 | 86,574 | |
networking/ | H | - | - | 986 | 766 | |
string/ | H | - | - | 9,668 | 7,112 | |
.gitignore | H A D | 06-Jul-2021 | 27 | 4 | 3 | |
LICENSE | H A D | 09-Jun-2023 | 13.2 KiB | 250 | 204 | |
MAINTAINERS | H A D | 10-Jan-2025 | 229 | 10 | 9 | |
Makefile | H A D | 10-Jan-2025 | 2.1 KiB | 101 | 60 | |
README | H A D | 10-Jan-2025 | 3.5 KiB | 88 | 72 | |
README.contributors | H A D | 09-Jun-2023 | 2.1 KiB | 45 | 38 | |
config.mk.dist | H A D | 10-Jan-2025 | 4.4 KiB | 150 | 124 | |
contributor-agreement.pdf | HD | 06-Jul-2021 | 102.2 KiB |
README
1Arm Optimized Routines 2---------------------- 3 4This repository contains implementations of library functions 5provided by Arm. The outbound license is available under a dual 6license, at the user’s election, as reflected in the LICENSE file. 7Contributions to this project are accepted, but Contributors have 8to sign an Assignment Agreement, please follow the instructions in 9contributor-agreement.pdf. This is needed so upstreaming code 10to projects that require copyright assignment is possible. Further 11contribution requirements are documented in README.contributors of 12the appropriate subdirectory. 13 14Regular quarterly releases are tagged as vYY.MM, the latest 15release is v25.01. 16 17Source code layout: 18 19build/ - build directory (created by make). 20math/ - math subproject sources for generic scalar 21 subroutines and sources shared with 22 subdirectories of math/. 23 All math routines should meet the quality 24 requirements stated in math/README.contributors, 25 routines that fail to do so are located in an 26 experimental/ directory. 27math/aarch64/ - math subproject AArch64-specific sources 28 and sources shared with subdirectories. 29math/aarch64/advsimd - AdvSIMD-specific math sources. 30math/aarch64/experimental - Experimental math sources do not 31 meet quality requirements stated in 32 math/README.contributors. 33math/aarch64/sve - SVE-specific math sources. 34math/include/ - math library public headers. 35math/test/ - math test and benchmark related sources. 36math/tools/ - tools used for designing the algorithms. 37networking/ - networking subproject sources. 38networking/include/ - networking library public headers. 39networking/test/ - networking test and benchmark related sources. 40string/ - string routines subproject sources. 41 All string routines should meet the quality 42 requirements stated in string/README.contributors, 43 routines that fail to do so are located in an 44 experimental/ directory. 45string/<arch> - <arch>-specific string routines sources for 46 <arch>=aarch64, and arm. 47string/aarch64/experimental - Experimental string routines which 48 may not be fully optimized yet. 49string/include/ - string library public headers. 50string/test/ - string test and benchmark related sources. 51 52The steps to build the target libraries and run the tests: 53 54cp config.mk.dist config.mk 55# edit config.mk if necessary ... 56make 57make check 58 59Or building outside of the source directory: 60 61ln -s path/to/src/Makefile Makefile 62cp path/to/src/config.mk.dist config.mk 63echo 'srcdir = path/to/src' >> config.mk 64# further edits to config.mk 65make 66make check 67 68Or building and testing the math subproject only: 69 70make all-math 71make check-math 72 73Note on compiler compability/requirement: 74 75SVE routines are always built by default - this means that on AArch64 76GCC >= 10 or LLVM >= 5 are always required for SVE ACLE compatibility. 77There is no explicit check for compatible compiler, therefore the SVE 78routines will fail to build if CC is too old. 79 80The test system requires libmpfr and libmpc. 81For example on debian linux they can be installed as: 82 83sudo apt-get install libmpfr-dev libmpc-dev 84 85For cross build, CROSS_COMPILE should be set in config.mk and EMULATOR 86should be set for cross testing (e.g. using qemu-user or remote access 87to a target machine), see the examples in config.mk.dist. 88
README.contributors
1GENERIC CONTRIBUTION GUIDELINES 2=============================== 3 41. Sub-projects are maintained independently and thus have independent 5 contribution rules. If there exists a README.contributors in the 6 sub-directory to which the contribution is made, it must be followed. 7 82. Legal: 9 - Contributors who are not employed by Arm must sign an Assignment Agreement. 10 See contributor-agreement.pdf. 11 - All code must be copyright owned by Arm Limited and the appropriate 12 copyright notice and license identifier must be present in every source 13 file. 14 153. Build: 16 - Build should only depend on GNU make and posix utilities (shell, awk, sed, 17 etc) and on a C toolchain. 18 - Build should pass with the default configuration (see config.mk.dist) 19 and other supported configurations, with both gcc and clang based 20 toolchains. (The build should not depend on a recent toolchain, the use 21 of a new feature should be possible to disable.) 22 - Currently there is no automated configuration, target specific configuration 23 should be done via make variables in config.mk. This is the user interface 24 to the build system, so it should be documented in sufficient detail and 25 kept reasonably stable. 26 274. Testing: 28 - On aarch64 the tests must pass. If the code may behave differently under 29 some supported configurations (e.g. CFLAGS) those should be tested. 30 - New symbols are expected to have new associated test code and ideally 31 benchmark code too. 32 334. Commits: 34 - Commit message should be descriptive and should not refer to Arm internal 35 information (such as Jira tickets, or internal discussions). Non-obvious 36 decisions should be recorded or explained in the commit message if they are 37 not explained in source comments. 38 - Ideally tools and scripts used to write the code should be added to the 39 repository or at least mentioned in the commit. 40 - Logically independent changes should not be mixed into the same commit. 41 425. Style: 43 - Unless otherwise required differently by the sub-project, follow the 44 clang-format tool using the style from the gcc contrib/ directory. 45