xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/rint.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
3
4declare float @nearbyintf(float) #0
5declare float @llvm.nearbyint.f32(float)
6declare double @nearbyint(double) #0
7declare double @llvm.nearbyint.f64(double)
8declare float @rintf(float) #0
9declare float @llvm.rint.f32(float)
10declare double @rint(double) #0
11declare double @llvm.rint.f64(double)
12
13define float @constant_fold_rint_f32_01() #0 {
14; CHECK-LABEL: @constant_fold_rint_f32_01(
15; CHECK-NEXT:    ret float 1.000000e+00
16;
17  %x = call float @nearbyintf(float 1.25) #0
18  ret float %x
19}
20
21define float @constant_fold_rint_f32_02() #0 {
22; CHECK-LABEL: @constant_fold_rint_f32_02(
23; CHECK-NEXT:    ret float -1.000000e+00
24;
25  %x = call float @llvm.nearbyint.f32(float -1.25) #0
26  ret float %x
27}
28
29define float @constant_fold_rint_f32_03() #0 {
30; CHECK-LABEL: @constant_fold_rint_f32_03(
31; CHECK-NEXT:    ret float 2.000000e+00
32;
33  %x = call float @rintf(float 1.5) #0
34  ret float %x
35}
36
37define float @constant_fold_rint_f32_04() #0 {
38; CHECK-LABEL: @constant_fold_rint_f32_04(
39; CHECK-NEXT:    ret float -2.000000e+00
40;
41  %x = call float @llvm.rint.f32(float -1.5) #0
42  ret float %x
43}
44
45define float @constant_fold_rint_f32_05() #0 {
46; CHECK-LABEL: @constant_fold_rint_f32_05(
47; CHECK-NEXT:    ret float 3.000000e+00
48;
49  %x = call float @nearbyintf(float 2.75) #0
50  ret float %x
51}
52
53define float @constant_fold_rint_f32_06() #0 {
54; CHECK-LABEL: @constant_fold_rint_f32_06(
55; CHECK-NEXT:    ret float -3.000000e+00
56;
57  %x = call float @llvm.nearbyint.f32(float -2.75) #0
58  ret float %x
59}
60
61define double @constant_fold_rint_f64_01() #0 {
62; CHECK-LABEL: @constant_fold_rint_f64_01(
63; CHECK-NEXT:    ret double 1.000000e+00
64;
65  %x = call double @rint(double 1.3) #0
66  ret double %x
67}
68
69define double @constant_fold_rint_f64_02() #0 {
70; CHECK-LABEL: @constant_fold_rint_f64_02(
71; CHECK-NEXT:    ret double -1.000000e+00
72;
73  %x = call double @llvm.rint.f64(double -1.3) #0
74  ret double %x
75}
76
77define double @constant_fold_rint_f64_03() #0 {
78; CHECK-LABEL: @constant_fold_rint_f64_03(
79; CHECK-NEXT:    ret double 2.000000e+00
80;
81  %x = call double @nearbyint(double 1.5) #0
82  ret double %x
83}
84
85define double @constant_fold_rint_f64_04() #0 {
86; CHECK-LABEL: @constant_fold_rint_f64_04(
87; CHECK-NEXT:    ret double -2.000000e+00
88;
89  %x = call double @llvm.nearbyint.f64(double -1.5) #0
90  ret double %x
91}
92
93define double @constant_fold_rint_f64_05() #0 {
94; CHECK-LABEL: @constant_fold_rint_f64_05(
95; CHECK-NEXT:    ret double 3.000000e+00
96;
97  %x = call double @rint(double 2.7) #0
98  ret double %x
99}
100
101define double @constant_fold_rint_f64_06() #0 {
102; CHECK-LABEL: @constant_fold_rint_f64_06(
103; CHECK-NEXT:    ret double -3.000000e+00
104;
105  %x = call double @llvm.rint.f64(double -2.7) #0
106  ret double %x
107}
108
109attributes #0 = { nounwind readnone willreturn }
110