/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/core/numeric/int8.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/core/numeric/int8.hpp Source File#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/core/numeric/int8.hpp Source File
int8.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: MIT
2 // Copyright (c) 2018-2025, Advanced Micro Devices, Inc. All rights reserved.
3 
11 #include <stdint.h>
12 #include <type_traits>
13 
14 #pragma once
15 
16 namespace ck_tile {
17 
18 // use int8_t directly for int8 arithemetic
19 // here one can use ck_tile::int8_t to access original int8_t
20 using int8_t = int8_t;
21 
22 // limits
23 template <class T>
24 struct numeric;
25 
26 template <>
27 struct numeric<int8_t>
28 {
29  // minimum finite value, or minimum positive normalized value for float
30  CK_TILE_HOST_DEVICE static constexpr int8_t min() { return int8_t(-128); }
31 
32  // minumum finite value
33  CK_TILE_HOST_DEVICE static constexpr int8_t lowest() { return int8_t(-128); }
34 
35  // maximum finite value
36  CK_TILE_HOST_DEVICE static constexpr int8_t max() { return int8_t(127); }
37 
38  // difference between 1.0 and next value representable by float
39  CK_TILE_HOST_DEVICE static constexpr int8_t epsilon()
40  {
41  return 1; // not used
42  }
43 
45  {
46  return 1; // not used
47  }
48 
49  // positive infinity value
50  CK_TILE_HOST_DEVICE static constexpr int8_t infinity()
51  {
52  return 1; // not used
53  }
54 
55  // quiet NaN
57  {
58  return 1; // not used
59  }
60 
61  // signaling NaN
63  {
64  return 1; // not used
65  }
66 
67  // smallest positive subnormal value
69  {
70  return 1; // not used
71  }
72 
73  CK_TILE_HOST_DEVICE static constexpr int8_t zero() { return 0; }
74 };
75 
76 #if 0
77 
78 template <>
79 struct numeric_traits<int8_t>
80 {
81  static constexpr int exp = 5;
82  static constexpr int mant = 10;
83  static constexpr int bias = 15;
84  static constexpr uint16_t nan_mask = 0x7C00;
85  static constexpr uint16_t head_mask = 0xFC00;
86  static constexpr uint16_t mant_mask = 0x3FF;
87  static constexpr uint16_t exp_mask = 0x1F;
88  static constexpr uint32_t Inf = 0x7C00;
89  static constexpr uint32_t NegInf = 0xFC00;
90  static constexpr uint32_t NaN = 0x7C01;
91  static constexpr uint32_t Neg0 = 0x8000;
92  static constexpr int PackedSize = 1;
93  using bitwise_type = uint16_t;
94 };
95 #endif
96 
98 constexpr float int8_to_float(const int8_t& x) { return static_cast<float>(x); }
99 
101 constexpr int8_t float_to_int8(const float& x) { return static_cast<int8_t>(x); }
102 
103 } // namespace ck_tile
#define CK_TILE_HOST_DEVICE
Definition: config.hpp:42
Definition: cluster_descriptor.hpp:13
constexpr CK_TILE_HOST_DEVICE float int8_to_float(const int8_t &x)
Definition: int8.hpp:98
int8_t int8_t
Definition: int8.hpp:20
CK_TILE_DEVICE bfloat16_t exp(bfloat16_t x)
Definition: bfloat16.hpp:423
constexpr CK_TILE_HOST_DEVICE int8_t float_to_int8(const float &x)
Definition: int8.hpp:101
unsigned short uint16_t
Definition: stdint.h:125
unsigned int uint32_t
Definition: stdint.h:126
signed char int8_t
Definition: stdint.h:121
static constexpr CK_TILE_HOST_DEVICE int8_t max()
Definition: int8.hpp:36
static constexpr CK_TILE_HOST_DEVICE int8_t denorm_min()
Definition: int8.hpp:68
static constexpr CK_TILE_HOST_DEVICE int8_t min()
Definition: int8.hpp:30
static constexpr CK_TILE_HOST_DEVICE int8_t epsilon()
Definition: int8.hpp:39
static constexpr CK_TILE_HOST_DEVICE int8_t round_error()
Definition: int8.hpp:44
static constexpr CK_TILE_HOST_DEVICE int8_t quiet_NaN()
Definition: int8.hpp:56
static constexpr CK_TILE_HOST_DEVICE int8_t zero()
Definition: int8.hpp:73
static constexpr CK_TILE_HOST_DEVICE int8_t infinity()
Definition: int8.hpp:50
static constexpr CK_TILE_HOST_DEVICE int8_t signaling_NaN()
Definition: int8.hpp:62
static constexpr CK_TILE_HOST_DEVICE int8_t lowest()
Definition: int8.hpp:33
static constexpr int PackedSize
Definition: numeric.hpp:82
Definition: numeric.hpp:18