--- /dev/null
+#include <stdio.h>
+#include <string.h>
+
+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;
+}
+