[AArch64] define isExtractSubvectorCheap
authorSebastian Pop <sebpop@gmail.com>
Tue, 6 Mar 2018 16:54:55 +0000 (16:54 +0000)
committerSebastian Pop <sebpop@gmail.com>
Tue, 6 Mar 2018 16:54:55 +0000 (16:54 +0000)
commit41073e8046d3fd52c42b2de718bad6b761cbd1ac
tree8fac35b4fe4a7190bf81ddca0be552c8c000e290
parent44681074ceae90806538a0adc55ed3ab93768a52
[AArch64] define isExtractSubvectorCheap

Following the ARM-neon backend, define isExtractSubvectorCheap to return true
when extracting low and high part of a neon register.

The patch disables a test in llvm/test/CodeGen/AArch64/arm64-ext.ll This
testcase is fragile in the sense that it requires a BUILD_VECTOR to "survive"
all DAG transforms until ISelLowering. The testcase is supposed to check that
AArch64TargetLowering::ReconstructShuffle() works, and for that we need a
BUILD_VECTOR in ISelLowering. As we now transform the BUILD_VECTOR earlier into
an VEXT + vector_shuffle, we don't have the BUILD_VECTOR pattern when we get to
ISelLowering. As there is no way to disable the combiner to only exercise the
code in ISelLowering, the patch disables the testcase.

Differential revision: https://reviews.llvm.org/D43973

llvm-svn: 326811
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/test/CodeGen/AArch64/aarch64-vuzp.ll
llvm/test/CodeGen/AArch64/arm64-ext.ll
llvm/test/CodeGen/AArch64/neon-scalar-copy.ll