gem5 v24.0.0.0
Loading...
Searching...
No Matches
fp8_e4m3.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Advanced Micro Devices, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its
16 * contributors may be used to endorse or promote products derived from this
17 * software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#ifndef __ARCH_AMDGPU_COMMON_DTYPE_FP8_E4M3_HH__
33#define __ARCH_AMDGPU_COMMON_DTYPE_FP8_E4M3_HH__
34
35#include <cassert>
36
37namespace gem5
38{
39
40namespace AMDGPU
41{
42
43typedef union
44{
46 {
47 ebits = 4,
48 mbits = 3,
49 sbits = 1,
50 zbits = 24,
51 bias = 7,
52
53 inf = (0x7f << zbits),
54 nan = (0xff << zbits),
55 max = (0x7f << zbits)
56 };
57
58 uint32_t storage;
59 struct
60 {
61 unsigned zero : zbits;
62 unsigned mant : mbits;
63 unsigned exp : ebits;
64 unsigned sign : sbits;
65 };
66} fp8_e4m3_info;
67static_assert(sizeof(fp8_e4m3_info) == 4);
68
69} // namespace AMDGPU
70
71} // namespace gem5
72
73
74// std library cmath definitions
75namespace std
76{
77
78// Inf not defined
79constexpr bool isinf(gem5::AMDGPU::fp8_e4m3_info a) { return false; }
80
82{
83 return a.exp == 0xF && a.mant == 0x7;
84}
85
87{
88 return !(a.exp == 0 && a.mant != 0);
89}
90
91
92template<>
93class numeric_limits<gem5::AMDGPU::fp8_e4m3_info>
94{
95 public:
96 static constexpr bool has_quiet_NaN = true;
98 {
99 assert(has_quiet_NaN);
102 return tmp;
103 }
104
105 static constexpr bool has_infinity = false;
107 {
108 assert(has_infinity);
111 return tmp;
112 }
113
120};
121
122} // namespace std
123
124#endif // __ARCH_AMDGPU_COMMON_DTYPE_FP8_E4M3_HH__
static gem5::AMDGPU::fp8_e4m3_info quiet_NaN()
Definition fp8_e4m3.hh:97
static gem5::AMDGPU::fp8_e4m3_info infinity()
Definition fp8_e4m3.hh:106
static gem5::AMDGPU::fp8_e4m3_info max()
Definition fp8_e4m3.hh:114
SwitchingFiber a
constexpr T mbits(T val, unsigned first, unsigned last)
Mask off the given bits in place like bits() but without shifting.
Definition bitfield.hh:106
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
Overload hash function for BasicBlockRange type.
Definition binary32.hh:81
constexpr bool isinf(gem5::AMDGPU::fp16_e5m10_info a)
Definition fp16_e5m10.hh:78
constexpr bool isnan(gem5::AMDGPU::fp16_e5m10_info a)
Definition fp16_e5m10.hh:83
constexpr bool isnormal(gem5::AMDGPU::fp16_e5m10_info a)
Definition fp16_e5m10.hh:88

Generated on Tue Jun 18 2024 16:23:39 for gem5 by doxygen 1.11.0