[PATCH] D65581: [ARM] MVE big endian bitcasts

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 1 08:22:24 PDT 2019


dmgreen created this revision.
dmgreen added reviewers: t.p.northover, simon_tatham, SjoerdMeijer, samparker, ostannard.
Herald added subscribers: hiraditya, kristof.beyls, javed.absar.
Herald added a project: LLVM.

This adds big endian MVE patterns for bitcasts. They are defined as being the same as a store of the existing type and the load into the new. This means that they have to become a VREV between the two types, working in the same way that NEON works in big-endian. This also adds some example tests for bigendian, showing where code is and isn't different.

The main difference, especially from a testing perspective is that vectors are passed as v2f64, and so a VREV's into and out of call arguments, and the parameters are passed in a v2f64 format. Same happens for inline assembly where the register class is used, so it is VREVd to a v16i8.

So some of this is probably not correct yet, but it is (mostly) self-consistent and seems to be consistent with how llvm treats vectors. The rest we can hopefully fix later. More details about big endian neon can be found in https://llvm.org/docs/BigEndianNEON.html.


https://reviews.llvm.org/D65581

Files:
  llvm/lib/Target/ARM/ARMInstrMVE.td
  llvm/test/CodeGen/Thumb2/mve-be.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D65581.212819.patch
Type: text/x-patch
Size: 15361 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190801/45941fff/attachment-0001.bin>


More information about the llvm-commits mailing list