@@ -30,8 +30,10 @@ pub enum BuiltinUint {
30
30
31
31
#[ derive( Copy , Clone , Debug , PartialEq , Eq , PartialOrd , Ord , Hash ) ]
32
32
pub enum BuiltinFloat {
33
+ F16 ,
33
34
F32 ,
34
35
F64 ,
36
+ F128 ,
35
37
}
36
38
37
39
#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
@@ -65,8 +67,10 @@ impl BuiltinType {
65
67
( name ! [ u64 ] , BuiltinType :: Uint ( BuiltinUint :: U64 ) ) ,
66
68
( name ! [ u128 ] , BuiltinType :: Uint ( BuiltinUint :: U128 ) ) ,
67
69
70
+ ( name ! [ f16] , BuiltinType :: Float ( BuiltinFloat :: F16 ) ) ,
68
71
( name ! [ f32 ] , BuiltinType :: Float ( BuiltinFloat :: F32 ) ) ,
69
72
( name ! [ f64 ] , BuiltinType :: Float ( BuiltinFloat :: F64 ) ) ,
73
+ ( name ! [ f128] , BuiltinType :: Float ( BuiltinFloat :: F128 ) ) ,
70
74
] ;
71
75
72
76
pub fn by_name ( name : & Name ) -> Option < Self > {
@@ -97,8 +101,10 @@ impl AsName for BuiltinType {
97
101
BuiltinUint :: U128 => name ! [ u128 ] ,
98
102
} ,
99
103
BuiltinType :: Float ( it) => match it {
104
+ BuiltinFloat :: F16 => name ! [ f16] ,
100
105
BuiltinFloat :: F32 => name ! [ f32 ] ,
101
106
BuiltinFloat :: F64 => name ! [ f64 ] ,
107
+ BuiltinFloat :: F128 => name ! [ f128] ,
102
108
} ,
103
109
}
104
110
}
@@ -155,8 +161,10 @@ impl BuiltinUint {
155
161
impl BuiltinFloat {
156
162
pub fn from_suffix ( suffix : & str ) -> Option < BuiltinFloat > {
157
163
let res = match suffix {
164
+ "f16" => BuiltinFloat :: F16 ,
158
165
"f32" => BuiltinFloat :: F32 ,
159
166
"f64" => BuiltinFloat :: F64 ,
167
+ "f128" => BuiltinFloat :: F128 ,
160
168
_ => return None ,
161
169
} ;
162
170
Some ( res)
@@ -192,8 +200,10 @@ impl fmt::Display for BuiltinUint {
192
200
impl fmt:: Display for BuiltinFloat {
193
201
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
194
202
f. write_str ( match self {
203
+ BuiltinFloat :: F16 => "f16" ,
195
204
BuiltinFloat :: F32 => "f32" ,
196
205
BuiltinFloat :: F64 => "f64" ,
206
+ BuiltinFloat :: F128 => "f128" ,
197
207
} )
198
208
}
199
209
}
0 commit comments