]> granicus.if.org Git - llvm/commit
[X86][SSE] Add pre-AVX2 support for (i32 bitcast(v32i1)) -> 2xMOVMSK
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 21 Jul 2017 09:58:50 +0000 (09:58 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 21 Jul 2017 09:58:50 +0000 (09:58 +0000)
commitfb0c9404b820e836513bbb5f14371131d27d854b
treef46f3ca36518adf76f59fe23420d822e580b2d2f
parent4d98985c94c36b9eb4396c91fe0a72a0c5f707b2
[X86][SSE] Add pre-AVX2 support for (i32 bitcast(v32i1)) -> 2xMOVMSK

Currently we only support (i32 bitcast(v32i1)) using the AVX2 VPMOVMSKB ymm instruction.

This patch adds support for splitting pre-AVX2 targets into 2 x (V)PMOVMSKB xmm instructions and merging the integer results.

In future we could probably generalize this to handle more cases.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@308723 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/bitcast-and-setcc-256.ll
test/CodeGen/X86/bitcast-and-setcc-512.ll
test/CodeGen/X86/bitcast-setcc-256.ll
test/CodeGen/X86/bitcast-setcc-512.ll