OSDN Git Service

[X86][AVX] Pad small shuffle inputs in combineX86ShufflesRecursively
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 31 May 2020 10:43:27 +0000 (11:43 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 31 May 2020 10:43:47 +0000 (11:43 +0100)
commit45ebe38ffc40bb7221fc587bfb4481cf7f53ebbc
tree0bd21e8557a8a62a8091ef60d94a4c555e06242c
parentec25a71eb7fc72440149784951d62453301cc960
[X86][AVX] Pad small shuffle inputs in combineX86ShufflesRecursively

As detailed on PR45974 and D79987, getFauxShuffleMask is creating nodes on the fly to create shuffles with inputs the same size as the result, causing problems for hasOneUse() checks in later simplification stages.

Currently only combineX86ShufflesRecursively benefits from these widened inputs so I've begun moving the functionality there, and out of getFauxShuffleMask. This allows us to remove the widening from VBROADCAST and *EXTEND* faux shuffle cases.

This just leaves the INSERT_SUBVECTOR case in getFauxShuffleMask still creating nodes, which will require more extensive refactoring.
llvm/lib/Target/X86/X86ISelLowering.cpp