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.

Reply via email to