summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/configuration.py
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2019-08-19 15:01:42 +0000
committerRoman Lebedev <lebedev.ri@gmail.com>2019-08-19 15:01:42 +0000
commitedfaee08115376467d1c95573de991aebfdaeb42 (patch)
tree1ad8a220764a6ff28edc9d8f63eec1cf4617a339 /lldb/packages/Python/lldbsuite/test/configuration.py
parent6632ad5851d6f404193a81c15664425ec5706e4a (diff)
downloadbcm5719-llvm-edfaee08115376467d1c95573de991aebfdaeb42.tar.gz
bcm5719-llvm-edfaee08115376467d1c95573de991aebfdaeb42.zip
[TargetLowering] x s% C == 0 fold: vector divisor with INT_MIN handling
Summary: The general fold is only valid for positive divisors. Which effectively means, it is invalid for `INT_MIN` divisors, and we currently bailout if we see them. But that is too strict, we can just fix-up the results. For that, let's do a second computation 'in parallel': ``` Name: srem -> and Pre: isPowerOf2(C) %o = srem i8 %X, C %r = icmp eq %o, 0 => %n = and i8 %X, C-1 %r = icmp eq %n, 0 ``` https://rise4fun.com/Alive/Sup And then just blend results: if the divisor was `INT_MIN`, pick the value we got via bit-test, else pick the value from general fold. There's interesting observation - `ISD::ROTR` is set to `LegalizeAction::Expand` before AVX512, so we should not treat `INT_MIN` divisor as even; and as it can be seen while `@test_srem_odd_even_one` improves on all run-lines, `@test_srem_odd_even_INT_MIN` only improves for AVX512. Reviewers: RKSimon, craig.topper, spatel Reviewed By: RKSimon Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D66300 llvm-svn: 369268
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/configuration.py')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud