【发布时间】:2015-07-21 13:37:22
【问题描述】:
我在这个intel intrinsic guide page。
我的 sse 体验有点脆弱。
好的,我有一个数组 - 一个很长的数组,实际上是一个名为 'source' 的整数。
示例:
如果它匹配某个值,我想更改它的一些值。
int source[] = {4,5,9,8}
int mask[] = {4,4,4,4}
int replacer[] = {3,3,3,3}
所以最终的来源应该是 {3,5,9,8}
我想使用 SSE
我遇到的最接近的指令是_mm_cmpeq_epi32:
FOR j := 0 to 3
i := j*32 dst[i+31:i] := ( a[i+31:i] == b[i+31:i] ) ? 0xFFFFFFFF : 0
ENDFOR
现在我想用我的值替换原始数组,否则什么都不做:
FOR j := 0 to 3
i := j*32 dst[i+31:i] := ( a[i+31:i] == b[i+31:i] ) ? my_mask_value_here : source_value_untouched
ENDFOR
是否有远程实现我正在尝试的东西?即使结合不同的指令,我也无法弄清楚..
谢谢
【问题讨论】:
标签: assembly sse simd intrinsics