[llvm-bugs] [Bug 36345] New: [AArch64][GlobalISel] struct passing with fp16 members

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Feb 12 02:13:06 PST 2018


https://bugs.llvm.org/show_bug.cgi?id=36345

            Bug ID: 36345
           Summary: [AArch64][GlobalISel] struct passing with fp16 members
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: sjoerd.meijer at arm.com
                CC: llvm-bugs at lists.llvm.org

Compilation of this:

  typedef struct {
    __fp16 array[2];
  } struct2;

  struct2 global_arg0;

  void c_test(struct2 arg0) {
    global_arg0 = arg0;
  }

fails with:

  unimplemented reg-to-reg copy
  UNREACHABLE executed at
/data/llvmdev/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp:2573!

when e.g. compiled with:

  -O0 --target=aarch64-arm-none-eabi -march=armv8-a+simd+fp bug.c -S

Looks like GISel is generating a COPY node:

  bb.1.entry:
    liveins: $h0, $h1
        renamable $x8 = IMPLICIT_DEF
        renamable $w9 = COPY killed renamable $h0
        ...

but this is trying to copy from a 16-bit to a 32-bit register (and COPY works
with equal sized source/destination registers?).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180212/b5988371/attachment.html>


More information about the llvm-bugs mailing list