alpaka
Abstraction Library for Parallel Kernel Acceleration
Loading...
Searching...
No Matches
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/** \file This files provides preprocessor utilities. */
8
9/* version number encoding
10 * 4 digits for major version (max 9999)
11 * 3 digits for minor version (max 999)
12 * 5 digits for patch version (max 99999)
13 * example: version 1.2.3 -> 0001 002 00003
14 */
15#define ALPAKA_VERSION_NUMBER(major, minor, patch) \
16 ((((major) % 10000llu) * 100'000'000llu) + (((minor) % 1000llu) * 100000llu) + ((patch) % 100000llu))
17
18#define ALPAKA_VERSION_NUMBER_NOT_AVAILABLE ALPAKA_VERSION_NUMBER(0llu, 0llu, 0llu)
19
20// version number conversion from vendor format to ALPAKA_VERSION_NUMBER
21#define ALPAKA_YYYYMMDD_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 10000llu), ((V) / 100llu) % 100llu, (V) % 100llu)
22
23#define ALPAKA_YYYYMM_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 100llu) % 10000llu, (V) % 100llu, 0llu)
24
25#define ALPAKA_VVRRP_TO_VERSION(V) \
26 ALPAKA_VERSION_NUMBER(((V) / 1000llu) % 10000llu, ((V) / 10llu) % 100llu, (V) % 10llu)
27
28#define ALPAKA_VRP_TO_VERSION(V) ALPAKA_VERSION_NUMBER(((V) / 100llu) % 10000llu, ((V) / 10llu) % 10llu, (V) % 10llu)
29
30#define ALPAKA_VRRPP_TO_VERSION(V) \
31 ALPAKA_VERSION_NUMBER(((V) / 10000llu) % 10000llu, ((V) / 100llu) % 100llu, (V) % 100llu)