[AArch64]Fix the pattern match failure for v1i8/v1i16/v1i32 types.
authorHao Liu <Hao.Liu@arm.com>
Mon, 16 Dec 2013 02:51:28 +0000 (02:51 +0000)
committerHao Liu <Hao.Liu@arm.com>
Mon, 16 Dec 2013 02:51:28 +0000 (02:51 +0000)
commit00a5490f8721062819c3972351b350a78c787ed3
tree3faee40f36821c5020556a6af1f46aeb2679731f
parent10f818b5ddaeb64c857f3a18b888c1b1f1e424d3
[AArch64]Fix the pattern match failure for v1i8/v1i16/v1i32 types.
Currently we have such types as legal vector types. The DAG combiner may generate some DAG nodes having such types but we don't have patterns to match them.
E.g. a load i32 and a bitcast i32 to v1i32 will be combined into a load v1i32:
     bitcast (load i32) to v1i32 -> load v1i32.
So this patch fixes such problems for load/dup instructions.
If v1i8/v1i16/v1i32 are not legal any more, the code in this patch can be deleted. So I also add some FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197361 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64ISelLowering.cpp
lib/Target/AArch64/AArch64InstrNEON.td
test/CodeGen/AArch64/neon-copy.ll