https://sourceware.org/bugzilla/show_bug.cgi?id=33893
--- Comment #3 from Zheng Bao <fishbaoz at hotmail dot com> ---
experiment:
test1.c
#include <stdio.h>
#include <stdint.h>
int main()
{
uint64_t val = 0x1122334455667788ULL;
uint64_t result;
#if 1
asm volatile (
"movq %[v], %%mm4\n\t" // load value into MM4
"movq2dq %%mm4, %%xmm4\n\t" // move MM4 -> XMM4
"movq %%xmm4, %[r]\n\t" // store lower 64 bits of XMM4
"emms\n\t" // exit MMX state
: [r] "=m" (result)
: [v] "m" (val)
: "mm4", "xmm4"
);
#endif
:
printf("result = 0x%lx\n", result);
return 0;
}
result = 0x1122334455667788
test2.c
#include <stdio.h>
#include <stdint.h>
int main()
{
uint64_t val = 0x1122334455667788ULL;
uint64_t result;
asm volatile (
"movq %[v], %%mm4\n\t" // load value into MM4
".byte 0x66, 0xF3, 0x0F, 0xD6, 0xE4\n\t" // move MM4 -> XMM4
"movq %%xmm4, %[r]\n\t" // store lower 64 bits of XMM4
"emms\n\t" // exit MMX state
: [r] "=m" (result)
: [v] "m" (val)
: "mm4", "xmm4"
);
printf("result = 0x%lx\n", result);
return 0;
}
result = 0x1122334455667788
So we can confirm that 0x66, 0xF3, 0x0F, 0xD6, 0xE4 equals movq2dq %mm4,%xmm4
--
You are receiving this mail because:
You are on the CC list for the bug.