xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/rint.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1486ed885SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*ac696ac4SBjorn Pettersson; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
3486ed885SArthur Eubanks
4486ed885SArthur Eubanksdeclare float @nearbyintf(float) #0
529207707SFlorian Hahndeclare float @llvm.nearbyint.f32(float)
6486ed885SArthur Eubanksdeclare double @nearbyint(double) #0
729207707SFlorian Hahndeclare double @llvm.nearbyint.f64(double)
8486ed885SArthur Eubanksdeclare float @rintf(float) #0
929207707SFlorian Hahndeclare float @llvm.rint.f32(float)
10486ed885SArthur Eubanksdeclare double @rint(double) #0
1129207707SFlorian Hahndeclare double @llvm.rint.f64(double)
12486ed885SArthur Eubanks
13486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_01() #0 {
14486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_01(
15486ed885SArthur Eubanks; CHECK-NEXT:    ret float 1.000000e+00
16486ed885SArthur Eubanks;
17486ed885SArthur Eubanks  %x = call float @nearbyintf(float 1.25) #0
18486ed885SArthur Eubanks  ret float %x
19486ed885SArthur Eubanks}
20486ed885SArthur Eubanks
21486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_02() #0 {
22486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_02(
23486ed885SArthur Eubanks; CHECK-NEXT:    ret float -1.000000e+00
24486ed885SArthur Eubanks;
25486ed885SArthur Eubanks  %x = call float @llvm.nearbyint.f32(float -1.25) #0
26486ed885SArthur Eubanks  ret float %x
27486ed885SArthur Eubanks}
28486ed885SArthur Eubanks
29486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_03() #0 {
30486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_03(
31486ed885SArthur Eubanks; CHECK-NEXT:    ret float 2.000000e+00
32486ed885SArthur Eubanks;
33486ed885SArthur Eubanks  %x = call float @rintf(float 1.5) #0
34486ed885SArthur Eubanks  ret float %x
35486ed885SArthur Eubanks}
36486ed885SArthur Eubanks
37486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_04() #0 {
38486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_04(
39486ed885SArthur Eubanks; CHECK-NEXT:    ret float -2.000000e+00
40486ed885SArthur Eubanks;
41486ed885SArthur Eubanks  %x = call float @llvm.rint.f32(float -1.5) #0
42486ed885SArthur Eubanks  ret float %x
43486ed885SArthur Eubanks}
44486ed885SArthur Eubanks
45486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_05() #0 {
46486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_05(
47486ed885SArthur Eubanks; CHECK-NEXT:    ret float 3.000000e+00
48486ed885SArthur Eubanks;
49486ed885SArthur Eubanks  %x = call float @nearbyintf(float 2.75) #0
50486ed885SArthur Eubanks  ret float %x
51486ed885SArthur Eubanks}
52486ed885SArthur Eubanks
53486ed885SArthur Eubanksdefine float @constant_fold_rint_f32_06() #0 {
54486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f32_06(
55486ed885SArthur Eubanks; CHECK-NEXT:    ret float -3.000000e+00
56486ed885SArthur Eubanks;
57486ed885SArthur Eubanks  %x = call float @llvm.nearbyint.f32(float -2.75) #0
58486ed885SArthur Eubanks  ret float %x
59486ed885SArthur Eubanks}
60486ed885SArthur Eubanks
61486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_01() #0 {
62486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_01(
63486ed885SArthur Eubanks; CHECK-NEXT:    ret double 1.000000e+00
64486ed885SArthur Eubanks;
65486ed885SArthur Eubanks  %x = call double @rint(double 1.3) #0
66486ed885SArthur Eubanks  ret double %x
67486ed885SArthur Eubanks}
68486ed885SArthur Eubanks
69486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_02() #0 {
70486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_02(
71486ed885SArthur Eubanks; CHECK-NEXT:    ret double -1.000000e+00
72486ed885SArthur Eubanks;
73486ed885SArthur Eubanks  %x = call double @llvm.rint.f64(double -1.3) #0
74486ed885SArthur Eubanks  ret double %x
75486ed885SArthur Eubanks}
76486ed885SArthur Eubanks
77486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_03() #0 {
78486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_03(
79486ed885SArthur Eubanks; CHECK-NEXT:    ret double 2.000000e+00
80486ed885SArthur Eubanks;
81486ed885SArthur Eubanks  %x = call double @nearbyint(double 1.5) #0
82486ed885SArthur Eubanks  ret double %x
83486ed885SArthur Eubanks}
84486ed885SArthur Eubanks
85486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_04() #0 {
86486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_04(
87486ed885SArthur Eubanks; CHECK-NEXT:    ret double -2.000000e+00
88486ed885SArthur Eubanks;
89486ed885SArthur Eubanks  %x = call double @llvm.nearbyint.f64(double -1.5) #0
90486ed885SArthur Eubanks  ret double %x
91486ed885SArthur Eubanks}
92486ed885SArthur Eubanks
93486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_05() #0 {
94486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_05(
95486ed885SArthur Eubanks; CHECK-NEXT:    ret double 3.000000e+00
96486ed885SArthur Eubanks;
97486ed885SArthur Eubanks  %x = call double @rint(double 2.7) #0
98486ed885SArthur Eubanks  ret double %x
99486ed885SArthur Eubanks}
100486ed885SArthur Eubanks
101486ed885SArthur Eubanksdefine double @constant_fold_rint_f64_06() #0 {
102486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_rint_f64_06(
103486ed885SArthur Eubanks; CHECK-NEXT:    ret double -3.000000e+00
104486ed885SArthur Eubanks;
105486ed885SArthur Eubanks  %x = call double @llvm.rint.f64(double -2.7) #0
106486ed885SArthur Eubanks  ret double %x
107486ed885SArthur Eubanks}
108486ed885SArthur Eubanks
10929207707SFlorian Hahnattributes #0 = { nounwind readnone willreturn }
110