batmat
0.0.14
Batched linear algebra routines
Loading...
Searching...
No Matches
unroll.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <guanaqo/stringify.h>
4
5
#ifdef NDEBUG
6
7
#ifdef __clang__
8
#define BATMAT_FULLY_UNROLL_LOOP _Pragma("clang loop unroll(full)")
9
#define BATMAT_FULLY_UNROLLED_FOR(...) BATMAT_FULLY_UNROLL_LOOP for (__VA_ARGS__)
10
#define BATMAT_FULLY_UNROLLED_IVDEP_FOR(...) \
11
BATMAT_FULLY_UNROLL_LOOP _Pragma("clang loop interleave(enable)") for (__VA_ARGS__)
12
#define BATMAT_UNROLLED_IVDEP_FOR(N, ...) \
13
_Pragma(GUANAQO_STRINGIFY(clang loop unroll_count(N))) \
14
_Pragma("clang loop interleave(enable)") for (__VA_ARGS__)
15
#else
16
#define BATMAT_FULLY_UNROLL_LOOP _Pragma("GCC unroll 99")
17
#define BATMAT_FULLY_UNROLLED_FOR(...) BATMAT_FULLY_UNROLL_LOOP for (__VA_ARGS__)
18
#define BATMAT_FULLY_UNROLLED_IVDEP_FOR(...) \
19
BATMAT_FULLY_UNROLL_LOOP _Pragma("GCC ivdep") for (__VA_ARGS__)
20
#define BATMAT_UNROLLED_IVDEP_FOR(N, ...) \
21
_Pragma(GUANAQO_STRINGIFY(GCC unroll N)) _Pragma("GCC ivdep") for (__VA_ARGS__)
22
#endif
23
24
#else
25
26
#define BATMAT_FULLY_UNROLL_LOOP
27
#define BATMAT_FULLY_UNROLLED_FOR(...) for (__VA_ARGS__)
28
#define BATMAT_FULLY_UNROLLED_IVDEP_FOR(...) for (__VA_ARGS__)
29
#define BATMAT_UNROLLED_IVDEP_FOR(N, ...) for (__VA_ARGS__)
30
31
#endif
batmat
include
batmat
unroll.h
Generated on
for batmat by
1.16.1