Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

SSE intsruction _mm_insert_epi32

inteleverywhere
Beginner
213 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
213 Views
Use switch() operator
inteleverywhere
Beginner
213 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
Arthur_Moroz
Beginner
213 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
inteleverywhere
Beginner
213 Views
Thank yousir.
Reply