@@ -7,27 +7,27 @@ macro_rules! add {
7
7
#[ allow( unused_parens) ]
8
8
#[ cfg_attr( not( test) , no_mangle) ]
9
9
pub extern fn $intrinsic( a: $ty, b: $ty) -> $ty {
10
- let one = Wrapping ( 1 as <$ty as Float >:: Int ) ;
11
- let zero = Wrapping ( 0 as <$ty as Float >:: Int ) ;
12
-
13
- let bits = Wrapping ( <$ty>:: bits( ) as <$ty as Float >:: Int ) ;
14
- let significand_bits = Wrapping ( <$ty>:: significand_bits( ) as <$ty as Float >:: Int ) ;
15
- let exponent_bits = Wrapping ( <$ty>:: exponent_bits( ) as <$ty as Float >:: Int ) ;
16
- let max_exponent = ( one << exponent_bits. 0 as usize ) - one;
17
-
18
- let implicit_bit = one << significand_bits. 0 as usize ;
19
- let significand_mask = implicit_bit - one;
20
- let sign_bit = one << ( significand_bits + exponent_bits) . 0 as usize ;
21
- let abs_mask = sign_bit - one;
22
- let exponent_mask = abs_mask ^ significand_mask;
23
- let inf_rep = exponent_mask;
24
- let quiet_bit = implicit_bit >> 1 ;
25
- let qnan_rep = exponent_mask | quiet_bit;
26
-
27
- let mut a_rep = Wrapping ( a. repr( ) ) ;
28
- let mut b_rep = Wrapping ( b. repr( ) ) ;
29
- let a_abs = a_rep & abs_mask;
30
- let b_abs = b_rep & abs_mask;
10
+ let one = Wrapping ( 1 as <$ty as Float >:: Int ) ;
11
+ let zero = Wrapping ( 0 as <$ty as Float >:: Int ) ;
12
+
13
+ let bits = Wrapping ( <$ty>:: bits( ) as <$ty as Float >:: Int ) ;
14
+ let significand_bits = Wrapping ( <$ty>:: significand_bits( ) as <$ty as Float >:: Int ) ;
15
+ let exponent_bits = Wrapping ( <$ty>:: exponent_bits( ) as <$ty as Float >:: Int ) ;
16
+ let max_exponent = ( one << exponent_bits. 0 as usize ) - one;
17
+
18
+ let implicit_bit = one << significand_bits. 0 as usize ;
19
+ let significand_mask = implicit_bit - one;
20
+ let sign_bit = one << ( significand_bits + exponent_bits) . 0 as usize ;
21
+ let abs_mask = sign_bit - one;
22
+ let exponent_mask = abs_mask ^ significand_mask;
23
+ let inf_rep = exponent_mask;
24
+ let quiet_bit = implicit_bit >> 1 ;
25
+ let qnan_rep = exponent_mask | quiet_bit;
26
+
27
+ let mut a_rep = Wrapping ( a. repr( ) ) ;
28
+ let mut b_rep = Wrapping ( b. repr( ) ) ;
29
+ let a_abs = a_rep & abs_mask;
30
+ let b_abs = b_rep & abs_mask;
31
31
32
32
// Detect if a or b is zero, infinity, or NaN.
33
33
if a_abs - one >= inf_rep - one ||
0 commit comments