HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CE_Precision.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: CE_Precision.h (VEX Library, C++)
7  *
8  * COMMENTS:
9  */
10 
11 #ifndef __CE_Precision__
12 #define __CE_Precision__
13 
14 #include <SYS/SYS_Types.h>
15 
16 #include <climits>
17 
18 enum class CE_Precision
19 {
20  CE_16,
21  CE_32,
22  CE_64,
23 };
27 
28 template <CE_Precision PREC> class CE_PrecisionResolver;
29 
30 template <>
32 {
33 public:
38  static constexpr int bitsize = 16;
39  static constexpr int bytesize = bitsize / CHAR_BIT;
40 };
41 
42 template <>
44 {
45 public:
50  static constexpr int bitsize = 32;
51  static constexpr int bytesize = bitsize / CHAR_BIT;
52 };
53 
54 template <>
56 {
57 public:
62  static constexpr int bitsize = 64;
63  static constexpr int bytesize = bitsize / CHAR_BIT;
64 };
65 
66 template <CE_Precision P> using CEfloatH = typename CE_PrecisionResolver<P>::host_float_type;
67 template <CE_Precision P> using CEintH = typename CE_PrecisionResolver<P>::host_int_type;
68 template <CE_Precision P> using CEfloatD = typename CE_PrecisionResolver<P>::device_float_type;
69 template <CE_Precision P> using CEintD = typename CE_PrecisionResolver<P>::device_int_type;
70 
71 #endif
int int32
Definition: SYS_Types.h:39
typename CE_PrecisionResolver< P >::host_int_type CEintH
Definition: CE_Precision.h:67
constexpr CE_Precision CE_16
Definition: CE_Precision.h:24
constexpr CE_Precision CE_32
Definition: CE_Precision.h:25
uint16_t cl_half
Definition: cl_platform.h:265
int32_t cl_int
Definition: cl_platform.h:260
typename CE_PrecisionResolver< P >::host_float_type CEfloatH
Definition: CE_Precision.h:66
float fpreal32
Definition: SYS_Types.h:200
double fpreal64
Definition: SYS_Types.h:201
double cl_double
Definition: cl_platform.h:267
CE_Precision
Definition: CE_Precision.h:18
long long int64
Definition: SYS_Types.h:116
int64_t cl_long
Definition: cl_platform.h:262
float cl_float
Definition: cl_platform.h:266
short int16
Definition: SYS_Types.h:37
constexpr CE_Precision CE_64
Definition: CE_Precision.h:26
typename CE_PrecisionResolver< P >::device_float_type CEfloatD
Definition: CE_Precision.h:68
int16_t cl_short
Definition: cl_platform.h:258
typename CE_PrecisionResolver< P >::device_int_type CEintD
Definition: CE_Precision.h:69