| 3064 | } |
| 3065 | |
| 3066 | hash_code hash_value(const IEEEFloat &Arg) { |
| 3067 | if (!Arg.isFiniteNonZero()) |
| 3068 | return hash_combine((uint8_t)Arg.category, |
| 3069 | // NaN has no sign, fix it at zero. |
| 3070 | Arg.isNaN() ? (uint8_t)0 : (uint8_t)Arg.sign, |
| 3071 | Arg.semantics->precision); |
| 3072 | |
| 3073 | // Normal floats need their exponent and significand hashed. |
| 3074 | return hash_combine((uint8_t)Arg.category, (uint8_t)Arg.sign, |
| 3075 | Arg.semantics->precision, Arg.exponent, |
| 3076 | hash_combine_range( |
| 3077 | Arg.significandParts(), |
| 3078 | Arg.significandParts() + Arg.partCount())); |
| 3079 | } |
| 3080 | |
| 3081 | // Conversion from APFloat to/from host float/double. It may eventually be |
| 3082 | // possible to eliminate these and have everybody deal with APFloats, but that |
nothing calls this directly
no test coverage detected