[AArch64] Fix incorrect LD1 of 16-bit FP vectors in big endian
authorPablo Barrio <pablo.barrio@arm.com>
Wed, 17 Jan 2018 14:39:29 +0000 (14:39 +0000)
committerPablo Barrio <pablo.barrio@arm.com>
Wed, 17 Jan 2018 14:39:29 +0000 (14:39 +0000)
commitf2c29571da7165420c7de600b220fb416ce8c73d
tree09724cdba000ffd03ddb7155934c2c574785b894
parentaa766efd09f759758686b31571ca50ad59c62ca4
[AArch64] Fix incorrect LD1 of 16-bit FP vectors in big endian

Summary:
Loading a vector of 4 half-precision FP sometimes results in an LD1
of 2 single-precision FP + a reversal. This results in an incorrect
byte swap due to the conversion from little endian to big endian.

In order to generate the correct byte swap, it is easier to
generate the correct LD1 of 4 half-precision FP, thus avoiding the
subsequent reversal.

Reviewers: craig.topper, jmolloy, olista01

Reviewed By: olista01

Subscribers: efriedma, samparker, SjoerdMeijer, rogfer01, aemerson, rengolin, javed.absar, kristof.beyls, llvm-commits

Differential Revision: https://reviews.llvm.org/D41863

llvm-svn: 322663
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/test/CodeGen/AArch64/arm64-big-endian-bitconverts.ll