[PATCH] Implement aarch64 neon instruction class SIMD copy - LLVM

Kevin Qin kevinqindev at gmail.com
Mon Oct 7 22:32:32 PDT 2013


This patch implemented aarch64 neon SIMD copy instruction class.
I rebased this patch on latest truck.

This patch contains:
1. Implemented SIMD dup instruction.
2. Remove DupImm, use VDUP instead.

Known problem:

1. In AAPCS64, half float can serve as setters and getters for function, so some ACLE intrinsic would receive or provide a variable with half float. But this feature isn't supported by Clang at moment. Even when I hack diagnose detector to avoid throwing error message, all half float will be converted to i16 in IR.
2. There is no v4f16 in IR, which is used by some ACLE intrinsic.

Considering above problem, all ACLE intrinsic with half float isn't implemented in these patches. We will try to figure out how to implement this feature.
Please review, thanks.

http://llvm-reviews.chandlerc.com/D1854

Files:
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/AArch64/AArch64ISelLowering.h
  lib/Target/AArch64/AArch64InstrNEON.td
  lib/Target/AArch64/AArch64RegisterInfo.td
  test/CodeGen/AArch64/neon-copy.ll
  test/MC/AArch64/neon-diagnostics.s
  test/MC/AArch64/neon-simd-copy.s
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1854.1.patch
Type: text/x-patch
Size: 58503 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131007/4b3b020b/attachment.bin>


More information about the cfe-commits mailing list