#include #include inline static void mmx_601(unsigned long y, unsigned long *output) { asm(" movd (%0), %%mm0; /* Load y 0x00000000000000yy */\ psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */\ movd %%mm0, (%1); /* Store output */" : : "r" (&y), "r" (output)); } int main(int argc, char *argv[]) { unsigned char output[16]; memset(output, 0, sizeof(output)); mmx_601(1, (unsigned long*)output); printf("%02x%02x\n", *(unsigned char*)&output[1], *(unsigned char*)&output[0]); return 0; }