我想知道是否可以在MMX-寄存器中并行四个值进行以下计算:
(a*b)/256其中,a是有符号的单词,b是0-256范围内的无符号值(混合因子)。
我认为我的问题是,我不确定(或是否) pmullw和pmulhw将如何帮助我完成这项任务。
发布于 2012-06-22 19:19:26
如果您知道a*b不会溢出一个带符号的16位字段,那么您可以使用pmullw (内禀_mm_mullo_pi16,或SSE内禀_mm_mullo_epi16),然后右移8进行256个除法。
哪里
MMX:
__m64 a, b;
...
a = _mm_mullo_pi16 (a, b);
a = _mm_srli_pi16 (a, 8);SSE2:
__m128i a, b;
...
a = _mm_mullo_epi16 (a, b);
a = _mm_srli_epi16 (a, 8);https://stackoverflow.com/questions/11157404
复制相似问题