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:
parent
6395af0fc6
commit
8818e6ac6e
22
README.md
22
README.md
@ -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
28
cmake/README.md
Normal 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.
|
Loading…
x
Reference in New Issue
Block a user