- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Use switch() operator
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Reg
Deepak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank yousir.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page