1
0
mirror of https://github.com/google/cpu_features.git synced 2025-04-28 07:23:37 +02:00

Updating documentation part 1.

This commit is contained in:
Guillaume Chatelet 2018-02-09 17:04:20 +01:00
parent 6395af0fc6
commit 8818e6ac6e
2 changed files with 50 additions and 0 deletions

View File

@ -3,6 +3,15 @@
A cross-platform C library to retrieve CPU features (such as available A cross-platform C library to retrieve CPU features (such as available
instructions) at runtime. instructions) at runtime.
## Table of Contents
- [Design Rationale](#rationale)
- [Code samples](#codesample)
- [What's supported](#support)
- [License](#license)
- [Build with cmake](#cmake)
<a name="rationale"></a>
## Design Rationale ## Design Rationale
- **Simple to use.** See the snippets below for examples. - **Simple to use.** See the snippets below for examples.
@ -18,6 +27,7 @@ instructions) at runtime.
`malloc`, `memcpy`, and `memcmp`. `malloc`, `memcpy`, and `memcmp`.
- **Unit tested.** - **Unit tested.**
<a name="codesample"></a>
### Checking features at runtime ### Checking features at runtime
Here's a simple example that executes a codepath if the CPU supports both the Here's a simple example that executes a codepath if the CPU supports both the
@ -94,6 +104,7 @@ static const bool has_fast_avx = info.features.avx && uarch != INTEL_SNB;
This feature is currently available only for x86 microarchitectures. This feature is currently available only for x86 microarchitectures.
<a name="support"></a>
## What's supported ## What's supported
| | x86 | ARM | AArch64 | MIPS | POWER | | | x86 | ARM | AArch64 | MIPS | POWER |
@ -116,3 +127,14 @@ This feature is currently available only for x86 microarchitectures.
implemented efficiently in hardware (e.g. AVX on Sandybridge). Exposing the implemented efficiently in hardware (e.g. AVX on Sandybridge). Exposing the
microarchitecture allows the client to reject particular microarchitectures. microarchitecture allows the client to reject particular microarchitectures.
<a name="license"></a>
## License
The cpu_features library is licensed under the terms of the Apache license.
See [LICENSE](LICENSE) for more information.
<a name="cmake"></a>
## Build with CMake
Please check the [CMake build instructions](cmake/README.md)

28
cmake/README.md Normal file
View File

@ -0,0 +1,28 @@
# CMake build instructions
## Recommended usage : Incorporating cpu_features into a CMake project
For API / ABI compatibility reasons, it is recommended to build and use
cpu_features in a subdirectory of your project or as an embedded dependency.
This is similar to the recommended usage of the googletest framework
( https://github.com/google/googletest/blob/master/googletest/README.md )
Build and use step-by-step
1- Download cpu_features and copy it in a sub-directory in your project.
or add cpu_features as a git-submodule in your project
2- You can then use the cmake command `add_subdirectory()` to include
cpu_features directly and use the `cpu_features` target in your project.
3- Add the `cpu_features` target to the `target_link_libraries()` section of
your executable or of your library.
## Enabling tests
CMake default options for cpu_features is Release built type with tests
disabled. To enable testing set cmake `BUILD_TESTING` variable to `ON`,
[.travis.yml](../.travis.yml) and [appveyor.yml](../appveyor.yml) have up to
date examples.