https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104974

            Bug ID: 104974
           Summary: [avx512fp16]  Error: operand type mismatch for `vmovw'
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: crazylht at gmail dot com
  Target Milestone: ---

cat test.c

short
foo (short a)
{
  register short b __asm ("%xmm1") = a;
  asm volatile ("": "+v" (b));
  register short c __asm ("%xmm2") = b;
  asm volatile ("": "+v" (c));
  return a;
}

foo(short):
        mov     eax, edi
        vmovw   xmm1, edi
        vmovw   xmm2, xmm1 
        ret

To move HImode from sse reg to sse reg under avx512fp16, vmovsh should be used
instead of vmovw.

Reply via email to