Compiler Warning (level 1) C4556

value of intrinsic immediate argument 'value' is out of range 'lowerbound - upperbound'

An intrinsic matches a hardware instruction. The hardware instruction has a fixed number of bits to encode the constant. If value is out of range, it will not encode properly. The compiler truncates the extra bits.

The following sample generates C4556:

// C4556.cpp
// compile with: /W1
// processor: x86 IPF
#include <xmmintrin.h>
void test()
{
   __m64 m;
   _m_pextrw(m, 5);   // C4556
}
int main()
{
}