【发布时间】:2013-07-22 15:14:48
【问题描述】:
我使用模板专业化方式来切换浮点/双 SSE-intrinsics:
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 用于双精度数。我该如何使用模板专业化技巧?
【问题讨论】:
-
这是
Precision不是Presision! :)
标签: c++ metaprogramming sse simd