From 13fa33012b93c2c824ddf864c70ebff41a378a6d Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Mon, 22 Aug 2016 13:18:56 +0000 Subject: [PATCH] [X86] Only accept SM_SentinelUndef (-1) as an undefined shuffle mask in range As discussed on D23027 we should be trying to be more strict on what is an undefined mask value. llvm-svn: 279435 --- llvm/lib/Target/X86/X86ISelLowering.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index ddc95dc..d05cff3 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -4201,7 +4201,7 @@ bool X86TargetLowering::hasAndNotCompare(SDValue Y) const { return true; } -/// Val is either less than zero (undef) or equal to the specified value. +/// Val is the undef sentinel value or equal to the specified value. static bool isUndefOrEqual(int Val, int CmpVal) { return ((Val == SM_SentinelUndef) || (Val == CmpVal)); } @@ -4212,10 +4212,10 @@ static bool isUndefOrZero(int Val) { } /// Return true if every element in Mask, beginning -/// from position Pos and ending in Pos+Size is undef. +/// from position Pos and ending in Pos+Size is the undef sentinel value. static bool isUndefInRange(ArrayRef Mask, unsigned Pos, unsigned Size) { for (unsigned i = Pos, e = Pos + Size; i != e; ++i) - if (0 <= Mask[i]) + if (Mask[i] != SM_SentinelUndef) return false; return true; } -- 2.7.4