我使用模板特化的方式来切换浮点/双精度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内嵌函数? 假设我们想要切换添加操作:对于float,使用_mm_add_ps内部函数,对于double,使用_mm_add_pd。 我怎样才能使用模板专业化技巧呢?