[X86][SSE] Improve SINT_TO_FP of boolean vector results (signum)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 15 Nov 2016 16:24:40 +0000 (16:24 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 15 Nov 2016 16:24:40 +0000 (16:24 +0000)
commitceffb43b1b7e6d5d8f666acaa51647c87834af09
tree1d338bcd15cf2356e46a0a7185b487aac5bc4f6d
parentbb238bb4e54986c4e0952c8eda781eddb6443e2e
[X86][SSE] Improve SINT_TO_FP of boolean vector results (signum)

This patch helps avoids poor legalization of boolean vector results (e.g. 8f32 -> 8i1 -> 8i16) that feed into SINT_TO_FP by inserting an early SIGN_EXTEND and so help improve the truncation logic.

This is not necessary for AVX512 targets where boolean vectors are legal - AVX512 manages to lower ( sint_to_fp vXi1 ) into some form of ( select mask, 1.0f , 0.0f ) in most cases.

Fix for PR13248

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

llvm-svn: 286979
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx512-cvt.ll
llvm/test/CodeGen/X86/sse-fsignum.ll