diff options
| author | David Green <david.green@arm.com> | 2021-08-19 16:08:07 +0100 |
|---|---|---|
| committer | David Green <david.green@arm.com> | 2021-08-19 16:08:07 +0100 |
| commit | d10f23a25d5c7b6dd61cbab8e16bf2099151be42 (patch) | |
| tree | 75850652f42845c260ac9754cf39eed3d889e417 /llvm/lib/Support/CommandLine.cpp | |
| parent | a9cc6627226cc816300f8b0189ed6bfddd5c0286 (diff) | |
| download | llvm-d10f23a25d5c7b6dd61cbab8e16bf2099151be42.zip llvm-d10f23a25d5c7b6dd61cbab8e16bf2099151be42.tar.gz llvm-d10f23a25d5c7b6dd61cbab8e16bf2099151be42.tar.bz2 | |
[ISel] Expand saddsat and ssubsat via asr and xor
This changes the lowering of saddsat and ssubsat so that instead of
using:
r,o = saddo x, y
c = setcc r < 0
s = c ? INTMAX : INTMIN
ret o ? s : r
into using asr and xor to materialize the INTMAX/INTMIN constants:
r,o = saddo x, y
s = ashr r, BW-1
x = xor s, INTMIN
ret o ? x : r
https://alive2.llvm.org/ce/z/TYufgD
This seems to reduce the instruction count in most testcases across most
architectures. X86 has some custom lowering added to compensate for
cases where it can increase instruction count.
Differential Revision: https://reviews.llvm.org/D105853
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
0 files changed, 0 insertions, 0 deletions
