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)
commit9ed30bb2303dc4676af9892f780a14a019d030c6
treea2c854b5dc79975549dcdbe0498d187458061488
parent5a2ae984073242d922850d23c859cc0439b54401
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201085 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/IntrinsicsARM.td
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
lib/Target/ARM/ARMInstrFormats.td
lib/Target/ARM/ARMInstrNEON.td
test/CodeGen/ARM/reg_sequence.ll
test/CodeGen/ARM/vshrn.ll