[PATCH][ARM64] Fix "Cannot select" for vector ctpop

Adam Nemet anemet at apple.com
Wed Apr 16 15:27:17 PDT 2014


The commit of r205855:

Author: Arnold Schwaighofer <aschwaighofer at apple.com>
Date:   Wed Apr 9 14:20:47 2014 +0000

    SLPVectorizer: Only vectorize intrinsics whose operands are widened equally

    The vectorizer only knows how to vectorize intrinics by widening all operands by
    the same factor.

    Patch by Tyler Nowicki!

exposed a backend bug causing a regression (Cannot select ctpop).

The commit msg is a bit confusing because the patch actually changes the
behavior for the loop-vectorizer as well.  As things got refactored into a
helper ctpop got snuck in to the trivially-vectorizable helper which is now
used by both vectorizers.  In other words, we started seeing vector-ctpops in
the backend.

This change makes ctpop LegalizeAction::Expand for the types not supported by
the byte-only CNT instruction.  We may be able to custom-lower these later to
a single CNT but this is to fix the compiler crash first.

Fixes <rdar://problem/16578951>

Adam

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ARM64-Fix-Cannot-select-for-vector-ctpop.patch
Type: application/octet-stream
Size: 2938 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140416/b8f378aa/attachment.obj>


More information about the llvm-commits mailing list