Skip to content

Commit 23db0f2

Browse files
authored
Documentation Tree view overhaul + various fixes in doxygen
1 parent 5abea74 commit 23db0f2

File tree

124 files changed

+461
-601
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+461
-601
lines changed

doc/Doxyfile

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,8 @@ RECURSIVE = YES
535535

536536
EXCLUDE = ../include/eve/detail/function/tmp \
537537
../include/eve/module/real/ \
538-
../include/eve/detail/
538+
../include/eve/detail/ \
539+
../include/eve/module/algo/algo/array_utils.hpp
539540

540541
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
541542
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -877,22 +878,6 @@ TREEVIEW_WIDTH = 250
877878

878879
EXT_LINKS_IN_WINDOW = NO
879880
FORMULA_FONTSIZE = 10
880-
881-
# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
882-
# generated for formulas are transparent PNGs. Transparent PNGs are not
883-
# supported properly for IE 6.0, but are supported on all modern browsers.
884-
#
885-
# Note that when changing this option you need to delete any form_*.png files in
886-
# the HTML output directory before the changes have effect.
887-
# The default value is: YES.
888-
# This tag requires that the tag GENERATE_HTML is set to YES.
889-
890-
FORMULA_TRANSPARENT = YES
891-
892-
# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
893-
# to create new LaTeX commands to be used in formulas as building blocks. See
894-
# the section "Including formulas" for details.
895-
896881
FORMULA_MACROFILE =
897882

898883
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
File renamed without changes.

doc/layout.xml

Lines changed: 89 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,98 @@
33
<!-- Navigation index tabs for HTML output -->
44
<navindex>
55
<tab type="mainpage" visible="yes" title=""/>
6-
<tab type="pages" visible="yes" title="" intro=""/>
7-
<tab type="modules" visible="yes" title="" intro=""/>
8-
<tab type="namespaces" visible="yes" title="">
9-
<tab type="namespacelist" visible="yes" title="" intro=""/>
10-
<tab type="namespacemembers" visible="yes" title="" intro=""/>
6+
<tab type="usergroup" visible="yes" title="Tutorials">
7+
<tab type="user" url="@ref setup" title="Quick-Start"/>
8+
<tab type="usergroup" visible="yes" title="SIMD 101">
9+
<tab type="user" url="@ref intro-01" title="Basic Operations"/>
10+
<tab type="user" url="@ref intro-02" title="Algorithms"/>
11+
<tab type="user" url="@ref intro-03" title="Tuples"/>
12+
<tab type="user" url="@ref intro-04" title="Data Structures"/>
13+
</tab>
14+
<tab type="usergroup" visible="yes" title="Specific Idioms">
15+
<tab type="user" url="@ref conditional" title="Conditional Operations"/>
16+
<tab type="user" url="@ref freqscale" title="Frequency Scaling"/>
17+
</tab>
18+
<tab type="usergroup" visible="yes" title="Advanced Topics">
19+
<tab type="user" url="@ref inter-with-native" title="Interaction with native code"/>
20+
<tab type="user" url="@ref multiarch" title="Handling Multiple Architecture Targets"/>
21+
</tab>
1122
</tab>
12-
<tab type="concepts" visible="yes" title="">
13-
</tab>
14-
<tab type="interfaces" visible="yes" title="">
15-
<tab type="interfacelist" visible="yes" title="" intro=""/>
16-
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
17-
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
18-
</tab>
19-
<tab type="classes" visible="yes" title="">
20-
<tab type="classlist" visible="yes" title="" intro=""/>
21-
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
22-
<tab type="hierarchy" visible="yes" title="" intro=""/>
23-
<tab type="classmembers" visible="yes" title="" intro=""/>
24-
</tab>
25-
<tab type="structs" visible="yes" title="">
26-
<tab type="structlist" visible="yes" title="" intro=""/>
27-
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
28-
</tab>
29-
<tab type="exceptions" visible="yes" title="">
30-
<tab type="exceptionlist" visible="yes" title="" intro=""/>
31-
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
32-
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
23+
24+
<tab type="usergroup" visible="yes" title="Reference Documentation">
25+
<tab type="user" url="@ref eve" title="EVE Namespace"/>
26+
<tab type="usergroup" visible="yes" title="Main API">
27+
<tab type="usergroup" title="SIMD Abstractions">
28+
<tab type="user" url="@ref simd_types" title="SIMD Types"/>
29+
<tab type="user" url="@ref conditional" title="Conditional Expressions"/>
30+
<tab type="user" url="@ref memory" title="Memory Management"/>
31+
<tab type="user" url="@ref simd_concepts" title="Concepts"/>
32+
</tab>
33+
<tab type="usergroup" visible="yes" title="Core Functions">
34+
<tab type="user" url="@ref core_arithmetic" title="Arithmetic Operations"/>
35+
<tab type="user" url="@ref core_fma_family" title="FMA-like Operations"/>
36+
<tab type="user" url="@ref core_bitops" title="Bitwise Functions"/>
37+
<tab type="user" url="@ref core_logical" title="Logical Operations"/>
38+
<tab type="user" url="@ref core_predicates" title="Predicates"/>
39+
<tab type="user" url="@ref core_conversions" title="Conversions"/>
40+
<tab type="user" url="@ref core_internal" title="IEEE-754 Operations"/>
41+
<tab type="user" url="@ref core_accuracy" title="Accuracy Helpers"/>
42+
<tab type="user" url="@ref core_decorators" title="Options"/>
43+
</tab>
44+
<tab type="usergroup" visible="yes" title="Constants">
45+
<tab type="user" url="@ref core_constants" title="Generic Constants"/>
46+
<tab type="user" url="@ref math_constants" title="Math Constants"/>
47+
</tab>
48+
<tab type="usergroup" visible="yes" title="Common Math Functions">
49+
<tab type="user" url="@ref math_log" title="Logarithm"/>
50+
<tab type="user" url="@ref math_exp" title="Exponential"/>
51+
<tab type="user" url="@ref math_trig" title="Trigonometric"/>
52+
<tab type="user" url="@ref math_invtrig" title="Inverse Trigonometric"/>
53+
<tab type="user" url="@ref math_hyper" title="Hyperbolic"/>
54+
<tab type="user" url="@ref math_invhyper" title="Inverse Hyperbolic"/>
55+
</tab>
56+
<tab type="usergroup" visible="yes" title="Advanced Math Functions">
57+
<tab type="user" url="@ref bessel" title="Bessel functions"/>
58+
<tab type="user" url="@ref combinatorial" title="Combinatorial functions"/>
59+
<tab type="user" url="@ref elliptic" title="Elliptic functions"/>
60+
<tab type="user" url="@ref polynomial" title="Polynomial functions"/>
61+
<tab type="user" url="@ref special" title="Special functions"/>
62+
</tab>
63+
<tab type="usergroup" visible="yes" title="SIMD Specifics">
64+
<tab type="user" url="@ref core_compress" title="Compress functions"/>
65+
<tab type="user" url="@ref core_simd" title="SWAR Operations"/>
66+
<tab type="user" url="@ref core_named_shuffles" title="Named Shuffles"/>
67+
<tab type="user" url="@ref core_reduction" title="Reductions"/>
68+
</tab>
69+
<tab type="usergroup" visible="yes" title="Algorithms &amp; Views">
70+
<tab type="user" url="@ref algos" title="Algorithms"/>
71+
<tab type="user" url="@ref views" title="Views"/>
72+
<tab type="user" url="@ref algo_traits" title="Options"/>
73+
<tab type="user" url="@ref algo_concepts" title="Concepts"/>
74+
</tab>
75+
</tab>
76+
<tab type="usergroup" visible="yes" title="Developer API">
77+
<tab type="user" url="@ref traits" title="Type Traits"/>
78+
<tab type="user" url="@ref arch" title="Architecture Helpers"/>
79+
<tab type="user" url="@ref extensions" title="Functions and Callables"/>
80+
<tab type="user" url="@ref struct" title="User-Defined Types Supports"/>
81+
</tab>
82+
<tab type="concepts" visible="yes" title="Concepts List"/>
3383
</tab>
34-
<tab type="files" visible="yes" title="">
35-
<tab type="filelist" visible="yes" title="" intro=""/>
36-
<tab type="globals" visible="yes" title="" intro=""/>
84+
<tab type="usergroup" visible="yes" title="About The Library">
85+
<tab type="user" url="@ref glossary_semantic" title="Glossary"/>
86+
<tab type="user" url="@ref changelog" title="Changelog"/>
87+
<tab type="usergroup" visible="yes" title="EVE Development">
88+
<tab type="user" url="@ref dev_environment" title="Environment"/>
89+
<tab type="user" url="@ref dev_cmake" title="CMake Usage"/>
90+
</tab>
91+
<tab type="usergroup" visible="yes" title="Rationale">
92+
<tab type="user" url="@ref design_rationale" title="Design Decisions"/>
93+
<tab type="user" url="@ref algo_rationale" title="SIMD Algorithms"/>
94+
</tab>
95+
<tab type="user" url="@ref licence" title="Licence"/>
3796
</tab>
38-
<tab type="examples" visible="yes" title="" intro=""/>
97+
3998
</navindex>
4099

41100
<!-- Layout definition for a class page -->
File renamed without changes.

doc/page02_tutorial.md

Lines changed: 0 additions & 28 deletions
This file was deleted.

doc/page09_internals.md

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 38 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Installation & Quick Start {#install}
1+
Installation & Quick Start {#setup}
22
==========================
33

44
# Pre-requisites
@@ -10,32 +10,28 @@ Installation & Quick Start {#install}
1010
| g++ | 11 or above |
1111
| clang++ | 13 or above |
1212

13-
<br/>
14-
15-
In term of SIMD extension sets, we actively supports (ie code is optimized and regularly tested) the following:
13+
In term of SIMD extension sets, the supports status are as follows:
1614

17-
- **Intel**
18-
- SSE2, SSSE3, SSE3, SSE4.1, SSE4.2
19-
- AVX, AVX2, FMA3
20-
- AVX512 in SKylake-AVX512 mode (F, CD, VL, DQ, BW)
21-
- **ARM**
22-
- NEON A32 (64 & 128 bits)
23-
- NEON A64 (64 & 128 bits)
24-
- ASIMD
25-
- SVE with fixed sizes of 128, 256 and 512 bits registers.
15+
- Active Support (ie code is optimized and regularly tested)
2616

27-
Partial/In-progress support with minimal checks:
28-
- **PowerPC**
29-
- VMX
30-
- VSX
17+
- **Intel**
18+
- SSE2, SSSE3, SSE3, SSE4.1, SSE4.2
19+
- AVX, AVX2, FMA3
20+
- AVX512 in SKylake-AVX512 mode (F, CD, VL, DQ, BW)
21+
- **ARM**
22+
- NEON A32 (64 & 128 bits)
23+
- NEON A64 (64 & 128 bits)
24+
- ASIMD
25+
- SVE with fixed sizes of 128, 256 and 512 bits registers.
3126

32-
- We **do not support** ARM SVE with dynamic size.
33-
- We **do not support** GPGPU, this is the job for another tool.
34-
The following instructions are tentatively supported (ie code is incomplete and not tested in depth):
27+
- Partial/In-progress support with minimal checks:
28+
- **PowerPC**
29+
- Altivec for Power7 to 9
30+
- VSX for Power9
3531

36-
- **PowerPC**
37-
- Altivec for Power7 to 9
38-
- VSX for Power9
32+
- No Support
33+
- We **do not support** ARM SVE with dynamic size.
34+
- We **do not support** GPGPU, this is the job for another tool.
3935

4036
# Retrieving the source
4137

@@ -90,34 +86,9 @@ Once installed, you can use **EVE** headers directly from your
9086
yay -S eve-git
9187
```
9288

93-
## Conan
94-
95-
[**Conan Center**](https://conan.io/center/) hosts **EVE** as the
96-
[`jfalcou-eve` package](https://conan.io/center/jfalcou-eve).
97-
98-
To use **EVE**, just add `jfalcou-eve/v2021.10.0` in the `[requires]` section of
99-
your `conanfile.txt`
100-
101-
```cmake
102-
[requires]
103-
jfalcou-eve/v2021.10.0
104-
105-
[generators]
106-
cmake
107-
```
108-
109-
## VCPKG
110-
111-
**EVE** can be fetched from [VCPKG](https://vcpkgx.com/details.html?package=eve). Note that, as of
112-
now, we still don't support MSVC.
113-
114-
```bash
115-
vcpkg install eve
116-
```
117-
11889
# Installation from Source
11990

120-
If you didn't fetched **EVE** from a package manager, you'll need to install it via our CMake
91+
If you didn't fetched **EVE** from a package manager, you'll need to install it via your CMake
12192
system.
12293

12394
## Setting up the Library
@@ -153,26 +124,13 @@ using the `doxygen` target:
153124
cmake --build build --target doxygen
154125
@endcode
155126

156-
The resulting HTML files will be available in the `docs` folder.
157-
158-
You can also build **EVE** documentation in your build folder by using the `doxygen-local` target:
159-
<br/>
160-
161-
@code
162-
cmake --build build --target doxygen-local
163-
@endcode
164-
165127
The resulting HTML files will be available in the `docs` folder inside your build folder.
166128

167129
# Using the library
168130

169131
## Compilation
170132

171-
Once installed, you can compile the following code to check if everything is alright.
172-
173-
@godbolt{examples/quick-start/sanity-check.cpp}
174-
175-
To do so, use your C++20 aware favorite compiler, for example g++.
133+
To compiel code using **EVE**, use your C++20 aware favorite compiler, for example g++.
176134

177135
@verbatim
178136
$ g++ test.cpp -std=c++20 -march=native -O3 -DNDEBUG -I/path/to/install/include/eve-<version> -o output
@@ -194,21 +152,17 @@ You can also select a specific instructions set by using the proper option(s) fr
194152
$ g++ test.cpp -std=c++20 -msse4.1 -O3 -DNDEBUG -I/path/to/install/include/eve-<version> -o output
195153
@endverbatim
196154

155+
197156
## Execution
198157

199158
Once done, execute the binary. If you compiled for SSE4.1 for example, you'll end up with the
200159
following results:
201160

202-
@verbatim
203-
$ ./output
204-
x = (1, 2, 3, 4)
205-
2*x = (2, 4, 6, 8)
206-
x^0.5 = (1, 1.41421, 1.73205, 2)
207-
@endverbatim
161+
@godbolt{examples/quick-start/sanity-check.cpp}
208162

209163
That's it, **EVE** is properly installed and ready to use.
210164

211-
## Use in CMake
165+
## Use with CMake
212166

213167
Once installed, **EVE** may be consumed through its config-file **CMake** package. Simply find and
214168
link against **EVE's** **CMake** target, as you would any other **CMake** library, and then
@@ -220,30 +174,31 @@ find_package(eve CONFIG REQUIRED)
220174
target_link_libraries(use-eve PRIVATE eve::eve)
221175
```
222176

223-
> If a custom installation prefix was used, ensure your **EVE** installation is within **CMake's**
224-
search path with the use of the **CMake** variables **eve_ROOT**, **eve_DIR**, or
225-
**CMAKE_PREFIX_PATH**.
177+
If a custom installation prefix was used, ensure your **EVE** installation is within **CMake's**
178+
search path with the use of the **CMake** variables **eve_ROOT**, **eve_DIR**, or
179+
**CMAKE_PREFIX_PATH**.
226180

227181
# Advanced options
228182

229183
If you want to dig a bit further, you can pass additional options to `cmake` to
230184
activate additional features.
231185

232-
|Option |Effect |Target |
233-
|-------------------------|:--------------------------------------------------------|:-------------|
234-
| `EVE_BUILD_TEST` |Enable unit tests for **EVE** (`ON` by default). | `unit` |
235-
| `EVE_BUILD_BENCHMARKS` |Enable benchmark tests for **EVE** (`OFF` by default). | `benchmarks` |
236-
| `EVE_BUILD_RANDOM` |Enable random tests for **EVE** (`OFF` by default). | `random` |
237-
| `EVE_BUILD_INTEGRATION` |Enable integration tests for **EVE** (`OFF` by default). | `integration`|
186+
|Option |Effect |Target |
187+
|---------------------------|:------------------------------------------------------------|:-------------|
188+
| `EVE_BUILD_TEST` |Enable unit tests for **EVE** (`ON` by default). | `unit` |
189+
| `EVE_BUILD_BENCHMARKS` |Enable benchmark tests for **EVE** (`OFF` by default). | `benchmarks` |
190+
| `EVE_BUILD_RANDOM` |Enable random tests for **EVE** (`OFF` by default). | `random` |
191+
| `EVE_BUILD_DOCUMENTATION` |Enable the generation of the documentation (`ON` by default).| `doxygen`|
238192

239193
There is currently over 2000 tests, so compiling all unit tests may require a large machine or some
240194
time. We recommend compiling in parallel using `-j`.
195+
241196
All available **CMake** targets may be listed via `cmake --build build --target help`, each of which
242197
may be built individually.
243198

244199
Some options are also available to control some other aspects
245200

246-
| Option | Effect | Comments |
247-
|--------|:-------------|:---------------------|
248-
| `EVE_USE_BMI_ON_AVX2` | Enables using bmi instructions on avx2 | on Intel, it's beneficial, on AMD it's a disaster |
249-
| `EVE_USE_PCH` | Enable using precompiled headers for **EVE** tests. | This is `ON` by default |
201+
| Option | Effect | Comments |
202+
|-----------------------|:----------------------------------------------------|:---------------------------------------|
203+
| `EVE_USE_BMI_ON_AVX2` | Enables using bmi instructions on AVX2 | Beneficial on Intel, disastrous on AMD |
204+
| `EVE_USE_PCH` | Enable using precompiled headers for **EVE** tests. | This is `ON` by default |

0 commit comments

Comments
 (0)