Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

SSE intsruction _mm_insert_epi32

inteleverywhere
Beginner
1,080 Views

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 Kudos
4 Replies
Arthur_Moroz
Beginner
1,080 Views
Use switch() operator
0 Kudos
inteleverywhere
Beginner
1,080 Views
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
0 Kudos
Arthur_Moroz
Beginner
1,080 Views
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
0 Kudos
inteleverywhere
Beginner
1,080 Views
Thank yousir.
0 Kudos
Reply