我使用模板专业化方式来切换浮点/双 SSE 内在函数:
template<typename Precision>
struct simd
{
typedef Precision simd_vector;
};
template<>
struct simd<float>
{
typedef __m128 simd_vector;
};
template<>
struct simd<double>
{
typedef __m128d simd_vector;
};
int main()
{
simd<float>::simd_vector float_vector;//__m128
simd<double>::simd_vector double_vector;//__m128d
}
它运作良好,但我不明白如何以同样的方式使用 SSE 内在函数?假设我们想要切换加法操作:_mm_add_ps 内在 - 用于浮点数,_mm_add_pd 用于双精度数。我怎样才能使用模板专业化技巧呢?