[PATCHSET][ARM64] Implement big endian NEON

James Molloy james.molloy at arm.com
Wed Apr 30 04:05:56 PDT 2014


Hi Tim,

 

The attached patches implement NEON for big endian ARM64. Covered are:

1.       Creation of a targetlowering hook to control if bitcasts can be
elided, and wiring of this up for ARM64.

2.       Fixing of big endian argument passing (non-NEON specific).

3.       [trivial] disconnection of bitcast combine in ISelLowering

4.       [mechanical] Predication of LDR/STR (on vectors) to be
little-endian-only.

5.       The Big One T. Implementation of bitcast for ARM64BE. A good
explanation is available in the patch commit log.

.         This is currently missing testcases. I have been using runtime
tests, not codegen tests during my development because those REVs made my
brain melt and I didn't trust the compiler output or my own head to sanitize
the compiler output. Now that I'm happy that the compiler does the right
thing, I will go and create codegen regression tests. I think it's
worthwhile getting the review process started before that though, as they'll
be mechanical to create with no value to review.

.         The tblgen file ended up with lots of very long lines. I decided
it might be best to keep these long so as to aid the reviewer - line breaks
would make diff output a lot harder to see what has been changed/modified. I
will then go and reformat this patch to remove the long lines (or I can
change it now, if the reviewer desires).

.         I can stick this in Phab if you like.

6.       Implementation of call/ret lowering and formal arguments lowering.

.         This is also currently missing testcases - testcases will be
created before commit.

 

The only thing missing at the moment except the testcases is fast-isel
support. That'll come in a later commit.

 

Cheers,

 

James
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0006-ARM64-Implement-the-lane-twiddling-logic-at-AAPCS-bo.patch
Type: application/octet-stream
Size: 5608 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-a-new-target-lowering-hook-canBitCastBeElided.patch
Type: application/octet-stream
Size: 5308 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-ARM64-Make-big-endian-argument-passing-work-correctl.patch
Type: application/octet-stream
Size: 11261 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-ARM64-Disconnect-some-suspect-transformations-in-ISe.patch
Type: application/octet-stream
Size: 1004 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment-0003.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-ARM64-Predicate-VLDR-VSTR-for-vectors-as-little-endi.patch
Type: application/octet-stream
Size: 18790 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment-0004.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0005-ARM64-Implement-the-crazy-bitcast-handling-for-big-e.patch
Type: application/octet-stream
Size: 19699 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140430/dad6f620/attachment-0005.obj>


More information about the llvm-commits mailing list