alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
include
alpaka
core
PP.hpp
Go to the documentation of this file.
1
/* Copyright 2024 René Widera
2
* SPDX-License-Identifier: MPL-2.0
3
*/
4
5
#pragma once
6
7
#define ALPAKA_PP_CAT(left, right) left##right
8
#define ALPAKA_PP_REMOVE_FIRST_COMMA_DO(ignore, ...) __VA_ARGS__
9
#define ALPAKA_PP_REMOVE_FIRST_COMMA(...) ALPAKA_PP_REMOVE_FIRST_COMMA_DO(0 __VA_ARGS__)
10
11
/** solution from https://stackoverflow.com/a/62984543
12
* @{
13
*/
14
#define ALPAKA_PP_REMOVE_BRACKETS_DO(X) ALPAKAESC(ISHALPAKA X)
15
#define ISHALPAKA(...) ISHALPAKA __VA_ARGS__
16
#define ALPAKAESC(...) ALPAKAESC_(__VA_ARGS__)
17
#define ALPAKAESC_(...) VAN##__VA_ARGS__
18
#define VANISHALPAKA
19
/** @} */
20
21
#define ALPAKA_PP_REMOVE_BRACKETS(x) ALPAKA_PP_REMOVE_BRACKETS_DO(x)
22
23
/* version number encoding
24
* 4 digits for major version (max 9999)
25
* 3 digits for minor version (max 999)
26
* 5 digits for patch version (max 99999)
27
* example: version 1.2.3 -> 0001 002 00003
28
*/
29
#define ALPAKA_VERSION_NUMBER(major, minor, patch) \
30
((((major) % 10000llu) * 100'000'000llu) + (((minor) % 1000llu) * 100000llu) + ((patch) % 100000llu))
31
32
#define ALPAKA_VERSION_NUMBER_NOT_AVAILABLE ALPAKA_VERSION_NUMBER(0llu, 0llu, 0llu)
33
#define ALPAKA_VERSION_NUMBER_UNKNOWN ALPAKA_VERSION_NUMBER(9999llu, 999llu, 99999llu)
34
35
// version number conversion from vendor format to ALPAKA_VERSION_NUMBER
36
#define ALPAKA_YYYYMMDD_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 10000llu), ((V) / 100llu) % 100llu, (V) % 100llu)
37
38
#define ALPAKA_YYYYMM_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 100llu) % 10000llu, (V) % 100llu, 0llu)
39
40
#define ALPAKA_VVRRP_TO_VERSION(V) \
41
ALPAKA_VERSION_NUMBER(((V) / 1000llu) % 10000llu, ((V) / 10llu) % 100llu, (V) % 10llu)
42
43
#define ALPAKA_VRP_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 100llu) % 10000llu, ((V) / 10llu) % 10llu, (V) % 10llu)
44
45
#define ALPAKA_VRRPP_TO_VERSION(V) \
46
ALPAKA_VERSION_NUMBER(((V) / 10000llu) % 10000llu, ((V) / 100llu) % 100llu, (V) % 100llu)
Generated on
for alpaka by
1.16.1