int8.hpp Source File

int8.hpp Source File#

Composable Kernel: 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
16namespace 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
20using int8_t = int8_t;
21
22// limits
23template <class T>
24struct numeric;
25
26template <>
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
40 {
41 return 1; // not used
42 }
43
45 {
46 return 1; // not used
47 }
48
49 // positive infinity value
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
78template <>
79struct 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
98constexpr float int8_to_float(const int8_t& x) { return static_cast<float>(x); }
99
101constexpr 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 tile/core/algorithm/cluster_descriptor.hpp:13
int8_t int8_t
Definition int8.hpp:20
CK_TILE_HOST_DEVICE constexpr float int8_to_float(const int8_t &x)
Definition int8.hpp:98
CK_TILE_DEVICE bfloat16_t exp(bfloat16_t x)
Definition bfloat16.hpp:419
CK_TILE_HOST_DEVICE constexpr 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 CK_TILE_HOST_DEVICE constexpr int8_t min()
Definition int8.hpp:30
static CK_TILE_HOST_DEVICE constexpr int8_t denorm_min()
Definition int8.hpp:68
static CK_TILE_HOST_DEVICE constexpr int8_t signaling_NaN()
Definition int8.hpp:62
static CK_TILE_HOST_DEVICE constexpr int8_t infinity()
Definition int8.hpp:50
static CK_TILE_HOST_DEVICE constexpr int8_t zero()
Definition int8.hpp:73
static CK_TILE_HOST_DEVICE constexpr int8_t lowest()
Definition int8.hpp:33
static CK_TILE_HOST_DEVICE constexpr int8_t epsilon()
Definition int8.hpp:39
static CK_TILE_HOST_DEVICE constexpr int8_t round_error()
Definition int8.hpp:44
static CK_TILE_HOST_DEVICE constexpr int8_t quiet_NaN()
Definition int8.hpp:56
static CK_TILE_HOST_DEVICE constexpr int8_t max()
Definition int8.hpp:36
static constexpr int PackedSize
Definition tile/core/numeric/numeric.hpp:82
Definition tile/core/numeric/numeric.hpp:18