[PATCH] Implement aarch64 neon instruction class SIMD copy
Kevin Qin
kevinqindev at gmail.com
Fri Sep 27 00:15:31 PDT 2013
kevin.qin added you to the CC list for the revision "Implement aarch64 neon instruction class SIMD copy ".
This patch implemented aarch64 neon SIMD copy instruction class.
I generated this patch on top of aarch64 neon SIMD by element patch(clang : http://llvm-reviews.chandlerc.com/D1752 , llvm : http://llvm-reviews.chandlerc.com/D1753), bacause we shared DUP node and lowerVECTOR_SHUFFLE function.
This patch contains:
1. Covered SIMD dup instruction.
2. Implemented related ACLE intrinsic : vget_lane, vset_lane, vcopy_lane, vcreate, vdup_n, vdup_lane, vmov_n
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.
Also, I have seen the comments from Tim on patch of aarch64 neon SIMD by element , but because my patches are based on that, so I will make some change after Jiangning post his 2nd edittion patch.
http://llvm-reviews.chandlerc.com/D1767
Files:
lib/Target/AArch64/AArch64ISelLowering.cpp
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: D1767.1.patch
Type: text/x-patch
Size: 50556 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130927/0385debb/attachment.bin>
More information about the cfe-commits
mailing list