OSDN Git Service

AArch64: fix big-endian immediate materialisation
authorTim Northover <tnorthover@apple.com>
Thu, 4 Sep 2014 09:46:14 +0000 (09:46 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 4 Sep 2014 09:46:14 +0000 (09:46 +0000)
commitdfe4e3e70640bcb7b1426349f01ec19277f2af50
tree0ab3975d1e0baf9837c369e5c3934dfc77a5a443
parentae988671265823283d9051f1fa8568a904d64cb7
AArch64: fix big-endian immediate materialisation

We were materialising big-endian constants using DAG nodes with types different
from what was requested, followed by a bitcast. This is fine on little-endian
machines where bitcasting is a nop, but we need a slightly different
representation for big-endian. This adds a new set of NVCAST (natural-vector
cast) operations which are always nops.

Patch by Asiri Rathnayake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217138 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64ISelLowering.h
lib/Target/AArch64/AArch64InstrInfo.td
test/CodeGen/AArch64/aarch64-be-bv.ll [new file with mode: 0644]