OSDN Git Service

[X86] Return UNDEF from LowerScalarImmediateShift when the shift amount is out of...
authorCraig Topper <craig.topper@intel.com>
Mon, 15 Jul 2019 17:56:57 +0000 (17:56 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 15 Jul 2019 17:56:57 +0000 (17:56 +0000)
commit3617a1a7881f2cc7a1527dda28e48462b791c94f
treeba6bf74e1a24e8e77c99eb741e976344aa81c79a
parentb508009134c1349367df52d96bf8d8db6e7f7247
[X86] Return UNDEF from LowerScalarImmediateShift when the shift amount is out of range.

I think we only turn out of range shiftss to undef when
all elements are out of range or the shift amount is a splat out
of range. I'm not sure which, I didn't check.

During lowering we can split a shift where some elements
are out of range into multiple shifts. This can create a
new shift with a splat shift amount that is out of range.

This patch returns undef for this case.

Fixes PR42615.

Differential Revision: https://reviews.llvm.org/D64699

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366096 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp