ARM: use LLVM IR to represent the vshrn operation
authorTim Northover <tnorthover@apple.com>
Mon, 10 Feb 2014 14:04:07 +0000 (14:04 +0000)
committerTim Northover <tnorthover@apple.com>
Mon, 10 Feb 2014 14:04:07 +0000 (14:04 +0000)
commit170daafe015f65a0106b0f78222a717e850a5a56
tree9eeda78637c7856fac5ace99f18b1448e41a9139
parent6db97e82a4e1989bfd8ed49681a29c8eb0fd7f27
ARM: use LLVM IR to represent the vshrn operation

vshrn is just the combination of a right shift and a truncate (and the limits
on the immediate value actually mean the signedness of the shift doesn't
matter). Using that representation allows us to get rid of an ARM-specific
intrinsic, share more code with AArch64 and hopefully get better code out of
the mid-end optimisers.

llvm-svn: 201085
llvm/include/llvm/IR/IntrinsicsARM.td
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/ARM/ARMISelLowering.h
llvm/lib/Target/ARM/ARMInstrFormats.td
llvm/lib/Target/ARM/ARMInstrNEON.td
llvm/test/CodeGen/ARM/reg_sequence.ll
llvm/test/CodeGen/ARM/vshrn.ll