xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/round.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1*ac696ac4SBjorn Pettersson; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
2486ed885SArthur Eubanks
3486ed885SArthur Eubanksdeclare float @roundf(float) #0
49d279621SNikita Popovdeclare float @llvm.round.f32(float)
5486ed885SArthur Eubanksdeclare double @round(double) #0
69d279621SNikita Popovdeclare double @llvm.round.f64(double)
7486ed885SArthur Eubanks
8486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_01
9486ed885SArthur Eubanks; CHECK-NEXT: ret float 1.000000e+00
10486ed885SArthur Eubanksdefine float @constant_fold_round_f32_01() #0 {
11486ed885SArthur Eubanks  %x = call float @roundf(float 1.25) #0
12486ed885SArthur Eubanks  ret float %x
13486ed885SArthur Eubanks}
14486ed885SArthur Eubanks
15486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_02
16486ed885SArthur Eubanks; CHECK-NEXT: ret float -1.000000e+00
17486ed885SArthur Eubanksdefine float @constant_fold_round_f32_02() #0 {
18486ed885SArthur Eubanks  %x = call float @llvm.round.f32(float -1.25) #0
19486ed885SArthur Eubanks  ret float %x
20486ed885SArthur Eubanks}
21486ed885SArthur Eubanks
22486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_03
23486ed885SArthur Eubanks; CHECK-NEXT: ret float 2.000000e+00
24486ed885SArthur Eubanksdefine float @constant_fold_round_f32_03() #0 {
25486ed885SArthur Eubanks  %x = call float @roundf(float 1.5) #0
26486ed885SArthur Eubanks  ret float %x
27486ed885SArthur Eubanks}
28486ed885SArthur Eubanks
29486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_04
30486ed885SArthur Eubanks; CHECK-NEXT: ret float -2.000000e+00
31486ed885SArthur Eubanksdefine float @constant_fold_round_f32_04() #0 {
32486ed885SArthur Eubanks  %x = call float @llvm.round.f32(float -1.5) #0
33486ed885SArthur Eubanks  ret float %x
34486ed885SArthur Eubanks}
35486ed885SArthur Eubanks
36486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_05
37486ed885SArthur Eubanks; CHECK-NEXT: ret float 3.000000e+00
38486ed885SArthur Eubanksdefine float @constant_fold_round_f32_05() #0 {
39486ed885SArthur Eubanks  %x = call float @roundf(float 2.75) #0
40486ed885SArthur Eubanks  ret float %x
41486ed885SArthur Eubanks}
42486ed885SArthur Eubanks
43486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f32_06
44486ed885SArthur Eubanks; CHECK-NEXT: ret float -3.000000e+00
45486ed885SArthur Eubanksdefine float @constant_fold_round_f32_06() #0 {
46486ed885SArthur Eubanks  %x = call float @llvm.round.f32(float -2.75) #0
47486ed885SArthur Eubanks  ret float %x
48486ed885SArthur Eubanks}
49486ed885SArthur Eubanks
50486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_01
51486ed885SArthur Eubanks; CHECK-NEXT: ret double 1.000000e+00
52486ed885SArthur Eubanksdefine double @constant_fold_round_f64_01() #0 {
53486ed885SArthur Eubanks  %x = call double @round(double 1.3) #0
54486ed885SArthur Eubanks  ret double %x
55486ed885SArthur Eubanks}
56486ed885SArthur Eubanks
57486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_02
58486ed885SArthur Eubanks; CHECK-NEXT: ret double -1.000000e+00
59486ed885SArthur Eubanksdefine double @constant_fold_round_f64_02() #0 {
60486ed885SArthur Eubanks  %x = call double @llvm.round.f64(double -1.3) #0
61486ed885SArthur Eubanks  ret double %x
62486ed885SArthur Eubanks}
63486ed885SArthur Eubanks
64486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_03
65486ed885SArthur Eubanks; CHECK-NEXT: ret double 2.000000e+00
66486ed885SArthur Eubanksdefine double @constant_fold_round_f64_03() #0 {
67486ed885SArthur Eubanks  %x = call double @round(double 1.5) #0
68486ed885SArthur Eubanks  ret double %x
69486ed885SArthur Eubanks}
70486ed885SArthur Eubanks
71486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_04
72486ed885SArthur Eubanks; CHECK-NEXT: ret double -2.000000e+00
73486ed885SArthur Eubanksdefine double @constant_fold_round_f64_04() #0 {
74486ed885SArthur Eubanks  %x = call double @llvm.round.f64(double -1.5) #0
75486ed885SArthur Eubanks  ret double %x
76486ed885SArthur Eubanks}
77486ed885SArthur Eubanks
78486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_05
79486ed885SArthur Eubanks; CHECK-NEXT: ret double 3.000000e+00
80486ed885SArthur Eubanksdefine double @constant_fold_round_f64_05() #0 {
81486ed885SArthur Eubanks  %x = call double @round(double 2.7) #0
82486ed885SArthur Eubanks  ret double %x
83486ed885SArthur Eubanks}
84486ed885SArthur Eubanks
85486ed885SArthur Eubanks; CHECK-LABEL: @constant_fold_round_f64_06
86486ed885SArthur Eubanks; CHECK-NEXT: ret double -3.000000e+00
87486ed885SArthur Eubanksdefine double @constant_fold_round_f64_06() #0 {
88486ed885SArthur Eubanks  %x = call double @llvm.round.f64(double -2.7) #0
89486ed885SArthur Eubanks  ret double %x
90486ed885SArthur Eubanks}
91486ed885SArthur Eubanks
929d279621SNikita Popovattributes #0 = { nounwind readnone willreturn }
93