diff options
| author | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2019-09-07 12:16:23 +0000 |
|---|---|---|
| committer | Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> | 2019-09-07 12:16:23 +0000 |
| commit | d065c811649f0d0df5429741a9a3dd643e88a9fe (patch) | |
| tree | 3e99e0e9a83ebaf1d1eed71659a69ffaebedb96d /clang/lib/CodeGen/CodeGenTBAA.cpp | |
| parent | 5e331e4ce85ad37dca45739846c2a801f06ab573 (diff) | |
| download | bcm5719-llvm-d065c811649f0d0df5429741a9a3dd643e88a9fe.tar.gz bcm5719-llvm-d065c811649f0d0df5429741a9a3dd643e88a9fe.zip | |
[CodeGen] Handle SMULFIXSAT with scale zero in TargetLowering::expandFixedPointMul
Summary:
Normally TargetLowering::expandFixedPointMul would handle
SMULFIXSAT with scale zero by using an SMULO to compute the
product and determine if saturation is needed (if overflow
happened). But if SMULO isn't custom/legal it falls through
and uses the same technique, using MULHS/SMUL_LOHI, as used
for non-zero scales.
Problem was that when checking for overflow (handling saturation)
when not using MULO we did not expect to find a zero scale. So
we ended up in an assertion when doing
APInt::getLowBitsSet(VTSize, Scale - 1)
This patch fixes the problem by adding a new special case for
how saturation is computed when scale is zero.
Reviewers: RKSimon, bevinh, leonardchan, spatel
Reviewed By: RKSimon
Subscribers: wuzish, nemanjai, hiraditya, MaskRay, jsji, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67071
llvm-svn: 371309
Diffstat (limited to 'clang/lib/CodeGen/CodeGenTBAA.cpp')
0 files changed, 0 insertions, 0 deletions

