[ARM][NEON] Improve vector popcnt lowering with PADDL (PR39281)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 15 Oct 2018 13:20:41 +0000 (13:20 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 15 Oct 2018 13:20:41 +0000 (13:20 +0000)
commit5abb607ebe1f44cfe78e62a782d6c7451e4fd2d5
treec8cf8ce3c97fc6f05ef11f87d067c19502dd1946
parent10ec5c8c285174826e4124e2dacf5d7a324bc8be
[ARM][NEON] Improve vector popcnt lowering with PADDL (PR39281)

As I suggested on PR39281, this patch uses PADDL pairwise addition to widen from the vXi8 CTPOP result to the target vector type.

This is a blocker for moving more x86 code to generic vector CTPOP expansion (P32655 + D53258) - ARM's vXi64 CTPOP currently expands, which would generate a vXi64 MUL but ARM's custom lowering expands the general MUL case and vectors aren't well handled in LegalizeDAG - improving the CTPOP lowering was a lot easier than fixing the MUL lowering for this one case......

Differential Revision: https://reviews.llvm.org/D53257

llvm-svn: 344512
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/popcnt.ll