26#if MOCHI_USE_SIMD && MOCHI_ARCH_X64_AVX2
78#if MOCHI_ARCH_X64_AVX512
79 return _mm_cvttpd_epi64(a.raw);
81 return {_mm_cvttsd_si64(a.raw), _mm_cvttsd_si64(_mm_unpackhi_pd(a.raw, a.raw))};
87#if MOCHI_ARCH_X64_AVX512
88 return _mm_cvtepi64_pd(a.raw);
91 static_cast<double>(_mm_cvtsi128_si64(a.raw)),
92 static_cast<double>(_mm_cvtsi128_si64(_mm_unpackhi_epi64(a.raw, a.raw)))};
122#if MOCHI_ARCH_X64_AVX512
123 return _mm256_cvttpd_epi64(a.raw);
127 static_cast<int64_t
>(VType::Get<0>(a)),
128 static_cast<int64_t
>(VType::Get<1>(a)),
129 static_cast<int64_t
>(VType::Get<2>(a)),
130 static_cast<int64_t
>(VType::Get<3>(a))};
137#if MOCHI_ARCH_X64_AVX512
138 return _mm256_cvtepi64_pd(a.raw);
142 static_cast<double>(VType::Get<0>(a)),
143 static_cast<double>(VType::Get<1>(a)),
144 static_cast<double>(VType::Get<2>(a)),
145 static_cast<double>(VType::Get<3>(a))};
166#if MOCHI_ARCH_X64_AVX512
167 return _mm256_cvttps_epi64(a.raw);
171 static_cast<int64_t
>(VType::Get<0>(a)),
172 static_cast<int64_t
>(VType::Get<1>(a)),
173 static_cast<int64_t
>(VType::Get<2>(a)),
174 static_cast<int64_t
>(VType::Get<3>(a))};
181#if MOCHI_ARCH_X64_AVX512
182 return _mm256_cvtepi64_ps(a.raw);
186 static_cast<float>(VType::Get<0>(a)),
187 static_cast<float>(VType::Get<1>(a)),
188 static_cast<float>(VType::Get<2>(a)),
189 static_cast<float>(VType::Get<3>(a))};
196#if MOCHI_ARCH_X64_AVX512
197 return _mm256_cvtepi64_epi32(a.raw);
201 static_cast<int>(VType::Get<0>(a)),
202 static_cast<int>(VType::Get<1>(a)),
203 static_cast<int>(VType::Get<2>(a)),
204 static_cast<int>(VType::Get<3>(a))};
210 return _mm256_cvtepi32_epi64(a.raw);
226#if MOCHI_ARCH_X64_AVX512
constexpr To StaticCast(From const &a)