aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2019-02-09 13:13:59 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2019-02-09 13:13:59 +0000
commit690a2889d81f6072df815b02943e7b0701bf2d3b (patch)
treed1fd2d7bedee9700a4e88f83162ba9eec4bd7c3b /llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
parent0745ca7830209152a2df24cae3f60a9126353722 (diff)
downloadllvm-690a2889d81f6072df815b02943e7b0701bf2d3b.zip
llvm-690a2889d81f6072df815b02943e7b0701bf2d3b.tar.gz
llvm-690a2889d81f6072df815b02943e7b0701bf2d3b.tar.bz2
[X86][SSE] Generalize X86ISD::BLENDI support to more value types
D42042 introduced the ability for the ExecutionDomainFixPass to more easily change between BLENDPD/BLENDPS/PBLENDW as the domains required. With this ability, we can avoid most bitcasts/scaling in the DAG that was occurring with X86ISD::BLENDI lowering/combining, blend with the vXi32/vXi64 vectors directly and use isel patterns to lower to the float vector equivalent vectors. This helps the shuffle combining and SimplifyDemandedVectorElts be more aggressive as we lose track of fewer UNDEF elements than when we go up/down through bitcasts. I've introduced a basic blend(bitcast(x),bitcast(y)) -> bitcast(blend(x,y)) fold, there are more generalizations I can do there (e.g. widening/scaling and handling the tricky v16i16 repeated mask case). The vector-reduce-smin/smax regressions will be fixed in a future improvement to SimplifyDemandedBits to peek through bitcasts and support X86ISD::BLENDV. Differential Revision: https://reviews.llvm.org/D57888 llvm-svn: 353610
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
0 files changed, 0 insertions, 0 deletions