aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/FileCheck/FileCheck.cpp
diff options
context:
space:
mode:
authorDávid Bolvanský <david.bolvansky@gmail.com>2021-01-17 17:06:06 +0100
committerDávid Bolvanský <david.bolvansky@gmail.com>2021-01-17 17:06:14 +0100
commited396212da41feed9bffb8cc1ca6518ab031a3c7 (patch)
tree7ca7dbabe3c673b61d302b3d1c6815b9ca6f18cc /llvm/lib/FileCheck/FileCheck.cpp
parent469ceaf53892d26f7b68f86f1feb38fe7057815e (diff)
downloadllvm-ed396212da41feed9bffb8cc1ca6518ab031a3c7.zip
llvm-ed396212da41feed9bffb8cc1ca6518ab031a3c7.tar.gz
llvm-ed396212da41feed9bffb8cc1ca6518ab031a3c7.tar.bz2
[InstCombine] Transform abs pattern using multiplication to abs intrinsic (PR45691)
``` unsigned r(int v) { return (1 | -(v < 0)) * v; } `r` is equivalent to `abs(v)`. ``` ``` define <4 x i8> @src(<4 x i8> %0) { %1: %2 = ashr <4 x i8> %0, { 31, undef, 31, 31 } %3 = or <4 x i8> %2, { 1, 1, 1, undef } %4 = mul nsw <4 x i8> %3, %0 ret <4 x i8> %4 } => define <4 x i8> @tgt(<4 x i8> %0) { %1: %2 = icmp slt <4 x i8> %0, { 0, 0, 0, 0 } %3 = sub nsw <4 x i8> { 0, 0, 0, 0 }, %0 %4 = select <4 x i1> %2, <4 x i8> %3, <4 x i8> %0 ret <4 x i8> %4 } Transformation seems to be correct! ``` Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D94874
Diffstat (limited to 'llvm/lib/FileCheck/FileCheck.cpp')
0 files changed, 0 insertions, 0 deletions