SSE version of int64_to_double Only works for inputs in the range: [-2^51, 2^51]
| 57 | // SSE version of int64_to_double |
| 58 | // Only works for inputs in the range: [-2^51, 2^51] |
| 59 | __m128d sse_int64_to_double(__m128i x) { |
| 60 | x = _mm_add_epi64(x, _mm_castpd_si128(_mm_set1_pd(0x0018000000000000))); |
| 61 | return _mm_sub_pd(_mm_castsi128_pd(x), _mm_set1_pd(0x0018000000000000)); |
| 62 | } |
| 63 | |
| 64 | __m256d int64_to_double_fast_precise(const __m256i v) |
| 65 | /* Optimized full range int64_t to double conversion */ |