xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/abs.ll (revision 0d1e762da7ad22e31e98cf372a692027ff0bb610)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3
4declare i8 @llvm.abs.i8(i8, i1)
5declare <8 x i8> @llvm.abs.v8i8(<8 x i8>, i1)
6
7define i8 @undef_val_min_poison() {
8; CHECK-LABEL: @undef_val_min_poison(
9; CHECK-NEXT:    ret i8 poison
10;
11  %r = call i8 @llvm.abs.i8(i8 undef, i1 true)
12  ret i8 %r
13}
14
15define i8 @undef_val_min_not_poison() {
16; CHECK-LABEL: @undef_val_min_not_poison(
17; CHECK-NEXT:    ret i8 0
18;
19  %r = call i8 @llvm.abs.i8(i8 undef, i1 false)
20  ret i8 %r
21}
22
23define i8 @min_val_min_poison() {
24; CHECK-LABEL: @min_val_min_poison(
25; CHECK-NEXT:    ret i8 poison
26;
27  %r = call i8 @llvm.abs.i8(i8 -128, i1 true)
28  ret i8 %r
29}
30
31define i8 @min_val_min_not_poison() {
32; CHECK-LABEL: @min_val_min_not_poison(
33; CHECK-NEXT:    ret i8 -128
34;
35  %r = call i8 @llvm.abs.i8(i8 -128, i1 false)
36  ret i8 %r
37}
38
39define <8 x i8> @vec_const() {
40; CHECK-LABEL: @vec_const(
41; CHECK-NEXT:    ret <8 x i8> <i8 127, i8 126, i8 42, i8 1, i8 0, i8 1, i8 42, i8 127>
42;
43  %r = call <8 x i8> @llvm.abs.v8i8(<8 x i8> <i8 -127, i8 -126, i8 -42, i8 -1, i8 0, i8 1, i8 42, i8 127>, i1 1)
44  ret <8 x i8> %r
45}
46