[InstCombine] dropRedundantMaskingOfLeftShiftInput(): propagate undef shift amounts
authorRoman Lebedev <lebedev.ri@gmail.com>
Mon, 7 Oct 2019 20:52:52 +0000 (20:52 +0000)
committerRoman Lebedev <lebedev.ri@gmail.com>
Mon, 7 Oct 2019 20:52:52 +0000 (20:52 +0000)
commitc3b394ffba583a53e5c1cc45360f18a3e5c023fd
tree3f1334fe08b5b6e308ba40301e9ea381d298d3c6
parent46d317fad4627c92a0289e886695a047ed886e27
[InstCombine] dropRedundantMaskingOfLeftShiftInput(): propagate undef shift amounts

Summary:
When we do `ConstantExpr::getZExt()`, that "extends" `undef` to `0`,
which means that for patterns a/b we'd assume that we must not produce
any bits for that channel, while in reality we simply didn't care
about that channel - i.e. we don't need to mask it.

Reviewers: spatel

Reviewed By: spatel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 373960
llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-a.ll
llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-b.ll
llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-c.ll
llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-d.ll
llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-e.ll