@@ -47,6 +47,36 @@ namespace executorch {
47
47
namespace runtime {
48
48
namespace etensor {
49
49
50
+ // Placing a bunch of unused dtypes here as our macros don't make it easy
51
+ // to skip scalar types defined in aten that we dont have.
52
+ namespace unused_dtype {
53
+ struct alignas (1 ) Float8_e5m2 {
54
+ uint8_t x;
55
+ using underlying = uint8_t ;
56
+ Float8_e5m2 () = default ;
57
+ explicit Float8_e5m2 (uint8_t val) : x (val) {}
58
+ };
59
+ struct alignas (1 ) Float8_e4m3fn {
60
+ uint8_t x;
61
+ using underlying = uint8_t ;
62
+ Float8_e4m3fn () = default ;
63
+ explicit Float8_e4m3fn (uint8_t val) : x (val) {}
64
+ };
65
+ struct alignas (1 ) Float8_e5m2fnuz {
66
+ uint8_t x;
67
+ using underlying = uint8_t ;
68
+ Float8_e5m2fnuz () = default ;
69
+ explicit Float8_e5m2fnuz (uint8_t val) : x (val) {}
70
+ };
71
+ struct alignas (1 ) Float8_e4m3fnuz {
72
+ uint8_t x;
73
+ using underlying = uint8_t ;
74
+ Float8_e4m3fnuz () = default ;
75
+ explicit Float8_e4m3fnuz (uint8_t val) : x (val) {}
76
+ };
77
+
78
+ } // namespace unused_dtype
79
+
50
80
/* *
51
81
* Calls the provided macro on every ScalarType, providing the C type and the
52
82
* ScalarType name to each call.
@@ -59,30 +89,42 @@ namespace etensor {
59
89
* @param _ A macro that takes two parameters: the name of a C type, and the
60
90
* name of the corresponding ScalarType enumerator.
61
91
*/
62
- #define ET_FORALL_SCALAR_TYPES (_ ) \
63
- _ (uint8_t , Byte) /* 0 */ \
64
- _ (int8_t , Char) /* 1 */ \
65
- _ (int16_t , Short) /* 2 */ \
66
- _ (int32_t , Int) /* 3 */ \
67
- _ (int64_t , Long) /* 4 */ \
68
- _ (::torch::executor::Half, Half) /* 5 */ \
69
- _ (float , Float) /* 6 */ \
70
- _ (double , Double) /* 7 */ \
71
- _ (::torch::executor::complex<::torch::executor::Half>, ComplexHalf) /* 8 */ \
72
- _ (::torch::executor::complex<float >, ComplexFloat) /* 9 */ \
73
- _ (::torch::executor::complex<double >, ComplexDouble) /* 10 */ \
74
- _ (bool , Bool) /* 11 */ \
75
- _ (::torch::executor::qint8, QInt8) /* 12 */ \
76
- _ (::torch::executor::quint8, QUInt8) /* 13 */ \
77
- _ (::torch::executor::qint32, QInt32) /* 14 */ \
78
- _ (::torch::executor::BFloat16, BFloat16) /* 15 */ \
79
- _ (::torch::executor::quint4x2, QUInt4x2) /* 16 */ \
80
- _ (::torch::executor::quint2x4, QUInt2x4) /* 17 */ \
81
- _ (::torch::executor::bits1x8, Bits1x8) /* 18 */ \
82
- _ (::torch::executor::bits2x4, Bits2x4) /* 19 */ \
83
- _ (::torch::executor::bits4x2, Bits4x2) /* 20 */ \
84
- _ (::torch::executor::bits8, Bits8) /* 21 */ \
85
- _ (::torch::executor::bits16, Bits16) /* 22 */
92
+ #define ET_FORALL_SCALAR_TYPES (_ ) \
93
+ _ (uint8_t , Byte) /* 0 */ \
94
+ _ (int8_t , Char) /* 1 */ \
95
+ _ (int16_t , Short) /* 2 */ \
96
+ _ (int32_t , Int) /* 3 */ \
97
+ _ (int64_t , Long) /* 4 */ \
98
+ _ (::executorch::runtime::etensor::Half, Half) /* 5 */ \
99
+ _ (float , Float) /* 6 */ \
100
+ _ (double , Double) /* 7 */ \
101
+ _ (::executorch::runtime::etensor::complex<::torch::executor::Half>, \
102
+ ComplexHalf) /* 8 */ \
103
+ _ (::executorch::runtime::etensor::complex<float >, ComplexFloat) /* 9 */ \
104
+ _ (::executorch::runtime::etensor::complex<double >, ComplexDouble) /* 10 */ \
105
+ _ (bool , Bool) /* 11 */ \
106
+ _ (::executorch::runtime::etensor::qint8, QInt8) /* 12 */ \
107
+ _ (::executorch::runtime::etensor::quint8, QUInt8) /* 13 */ \
108
+ _ (::executorch::runtime::etensor::qint32, QInt32) /* 14 */ \
109
+ _ (::executorch::runtime::etensor::BFloat16, BFloat16) /* 15 */ \
110
+ _ (::executorch::runtime::etensor::quint4x2, QUInt4x2) /* 16 */ \
111
+ _ (::executorch::runtime::etensor::quint2x4, QUInt2x4) /* 17 */ \
112
+ _ (::executorch::runtime::etensor::bits1x8, Bits1x8) /* 18 */ \
113
+ _ (::executorch::runtime::etensor::bits2x4, Bits2x4) /* 19 */ \
114
+ _ (::executorch::runtime::etensor::bits4x2, Bits4x2) /* 20 */ \
115
+ _ (::executorch::runtime::etensor::bits8, Bits8) /* 21 */ \
116
+ _ (::executorch::runtime::etensor::bits16, Bits16) /* 22 */ \
117
+ _ (::executorch::runtime::etensor::unused_dtype::Float8_e5m2, \
118
+ Float8_e5m2) /* 23 */ \
119
+ _ (::executorch::runtime::etensor::unused_dtype::Float8_e4m3fn, \
120
+ Float8_e4m3fn) /* 24 */ \
121
+ _ (::executorch::runtime::etensor::unused_dtype::Float8_e5m2fnuz, \
122
+ Float8_e5m2fnuz) /* 25 */ \
123
+ _ (::executorch::runtime::etensor::unused_dtype::Float8_e4m3fnuz, \
124
+ Float8_e4m3fnuz) /* 26 */ \
125
+ _ (uint16_t , UInt16) /* 27 */ \
126
+ _ (uint32_t , UInt32) /* 28 */ \
127
+ _ (uint64_t , UInt64) /* 29 */
86
128
87
129
/* *
88
130
* Data types (dtypes) that can be used as element types in ETensors.
0 commit comments