Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.
1135 ディスカッション

SSE intsruction _mm_insert_epi32

inteleverywhere
ビギナー
1,554件の閲覧回数

if a register has to be filled with data upto an arbitrary byte/word/dword position is it possible? for example:

if cnt = 0 or 1 or 2 or 3. how can the following be done

for (int i=0; i < cnt; i++)
{
Register = _mm_insert_epi32(Register, i);
Register1 = _mm_slli_si128(Register1, i);
}

Both are being dissallowed since i is required to be a constant value. Is there a workaround?
suppose at run time only two values are to be filled (cnt = 2).

Thanks
Deepak



0 件の賞賛
4 返答(返信)
Arthur_Moroz
ビギナー
1,554件の閲覧回数
Use switch() operator
inteleverywhere
ビギナー
1,554件の閲覧回数
Would that notnegate the optimization? Also is there a way to do a bit shift (not byet shift) on an m128i bit value.

Reg
Deepak
Arthur_Moroz
ビギナー
1,554件の閲覧回数
My dear friend,

1) It is compiler who does optimisation, not you. For compiler switch() is as good optimizable as any other operator.

2) there's no way to bit shift whole register
inteleverywhere
ビギナー
1,554件の閲覧回数
Thank yousir.
返信