diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-10 12:55:25 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-10 12:55:25 +0000 |
| commit | 9811e98495fd79c5d56fc959994faa3b73b20b88 (patch) | |
| tree | cb0051648656631947aa3081b06d2d7beba0218e /llvm/lib | |
| parent | a4b6a70a9c158f8dadff38100096dfbdc8d5374d (diff) | |
| download | bcm5719-llvm-9811e98495fd79c5d56fc959994faa3b73b20b88.tar.gz bcm5719-llvm-9811e98495fd79c5d56fc959994faa3b73b20b88.zip | |
[X86][SSE] Only treat SM_SentinelUndef as UNDEF in shuffle mask predicates
isUndefOrEqual and isUndefOrInRange treated all -ve shuffle mask values as UNDEF, now it has to be SM_SentinelUndef (-1)
We already have asserts to check that lowered SHUFFLE_VECTOR indices are in the range -1 <= index < 2*masksize (or masksize for unary shuffles)
llvm-svn: 278218
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index a5c50a30113..c8dfb8284e3 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -4204,12 +4204,12 @@ bool X86TargetLowering::hasAndNotCompare(SDValue Y) const { /// Val is either less than zero (undef) or equal to the specified value. static bool isUndefOrEqual(int Val, int CmpVal) { - return (Val < 0 || Val == CmpVal); + return ((Val == SM_SentinelUndef) || (Val == CmpVal)); } /// Val is either the undef or zero sentinel value. static bool isUndefOrZero(int Val) { - return (Val == SM_SentinelUndef || Val == SM_SentinelZero); + return ((Val == SM_SentinelUndef) || (Val == SM_SentinelZero)); } /// Return true if every element in Mask, beginning @@ -4224,7 +4224,7 @@ static bool isUndefInRange(ArrayRef<int> Mask, unsigned Pos, unsigned Size) { /// Return true if Val is undef or if its value falls within the /// specified range (L, H]. static bool isUndefOrInRange(int Val, int Low, int Hi) { - return (Val < 0) || (Val >= Low && Val < Hi); + return (Val == SM_SentinelUndef) || (Val >= Low && Val < Hi); } /// Return true if every element in Mask is undef or if its value |

