High-performance, architecture-aware implementations of common library functions for Arm processors.
This repository offers a collection of optimized implementations of various library functions tailored for Arm processors. Whether you are developing for embedded systems, mobile devices, or high-performance computing, these routines are designed to maximize efficiency and performance on Arm platforms.
Note
Arm is a registered trademark of Arm Limited (or its subsidiaries or affiliates).
Here is a quick overview of the repository's layout:
build/
: Directory created by the build process.fp/
: Floating-point basic arithmetic sources.math/
: Elementary math subproject sources.networking/
: Networking subproject sources.string/
: String routines subproject sources.
To build and test the routines in all sub-projects:
-
Clone the repository:
git clone https://github.com/ARM-software/optimized-routines.git cd optimized-routines
-
Set up the build configuration:
cp config.mk.dist config.mk # Edit config.mk as needed
-
Build and test:
make make check
Building and Testing a single subproject:
In order to build a single subproject <sub>
use the following commands
make all-<sub>
make check-<sub>
Alternatively, the config.mk
file can be updated to specify a list of
sub-projects.
Cross-Building:
For cross-building, set CROSS_COMPILE
in config.mk
and define EMULATOR
for cross-testing (e.g., using qemu-user
or remote access to a target
machine). Refer to examples in config.mk.dist
.
This project is licensed under a dual license, allowing you to choose between:
- MIT License
- Apache License 2.0 with LLVM Exceptions
For full details, please refer to the LICENSE file.
We welcome contributions from the community! To contribute:
-
Sign the Contributor Assignment Agreement:
Please follow the instructions in contributor-agreement.pdf. This step is necessary to allow upstreaming code to projects that require copyright assignment.
-
Review Contribution Guidelines:
Please refer to the main CONTRIBUTING.md for our general contribution guidelines.
Each subdirectory may have its own
README.md
file detailing specific contribution requirements. Please review these guidelines before submitting your contributions.Each subdirectory has its own maintainers, please refer to MAINTAINERS.md for a list of maintainers to contact.
Regular biannual releases are tagged as vYY.MM
. All release are available at
https://github.com/ARM-software/optimized-routines/releases.
For updates and discussions:
- GitHub Issues: Report bugs or request features.
- Pull Requests: Contribute code and improvements.
Thank you for your interest in the Arm Optimized Routines project. We look forward to your contributions and feedback!