[X86][SSE] Update raw mask shuffle decoders to handle UNDEF mask elts
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 23 Oct 2018 11:33:38 +0000 (11:33 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 23 Oct 2018 11:33:38 +0000 (11:33 +0000)
commitf85ee9f8b40a0c1ac59be572e80527eb14e7a049
tree5601c81a75c7cee5a24660430ec83c400457ef33
parentc29dbbdb1001063d79770eba4076a238eff1f1cd
[X86][SSE] Update raw mask shuffle decoders to handle UNDEF mask elts

Matches the approach taken in the constant pool shuffle decoders, and uses an UndefElts mask instead of uint64_t(-1) raw mask values, which doesn't work safely for i32/i64 shuffle mask sizes (as the -1 value is legal).

This allows us to remove the constant pool shuffle decoders from most of the getTargetShuffleMask variable shuffle cases (X86ISD::VPERMV3 will be handled in a future commit).

llvm-svn: 345018
llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp
llvm/lib/Target/X86/Utils/X86ShuffleDecode.h
llvm/lib/Target/X86/X86ISelLowering.cpp