繁体   English   中英

SSE2饱和算术

[英]SSE2 Saturated Arithmetic

我正在编写一些音频处理软件,我需要知道如何使用SSE2双精度指令进行饱和运算。 我的值需要在-1和1之间进行标准化。是否有一种聪明的方法可以使用SSE2内部函数执行此操作,还是需要2组if / else语句(每个值一个)?

要将双精度值剪辑到-1.0到+1.0的范围,可以使用最大/最小操作。 例如,如果你有一个N个double值的缓冲区buff

const __m128d kMax = _mm_set1_pd(1.0);
const __m128d kMin = _mm_set1_pd(-1.0);

for (int i = 0; i < N; i += 2)
{
    __m128d v = _mm_loadu_pd(&buff[i]);
    v = _mm_max_pd(v, kMin);
    v = _mm_min_pd(v, kMax);
    _mm_storeu_pd(&buff[i], v);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM