Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / InstSimplify / ConstProp / round.ll
blob6e07a433b6f18c19058740ccf7a002a3e39fdffb
1 ; RUN: opt -S -passes=early-cse -earlycse-debug-hash < %s | FileCheck %s
3 declare float @roundf(float) #0
4 declare float @llvm.round.f32(float)
5 declare double @round(double) #0
6 declare double @llvm.round.f64(double)
8 ; CHECK-LABEL: @constant_fold_round_f32_01
9 ; CHECK-NEXT: ret float 1.000000e+00
10 define float @constant_fold_round_f32_01() #0 {
11   %x = call float @roundf(float 1.25) #0
12   ret float %x
15 ; CHECK-LABEL: @constant_fold_round_f32_02
16 ; CHECK-NEXT: ret float -1.000000e+00
17 define float @constant_fold_round_f32_02() #0 {
18   %x = call float @llvm.round.f32(float -1.25) #0
19   ret float %x
22 ; CHECK-LABEL: @constant_fold_round_f32_03
23 ; CHECK-NEXT: ret float 2.000000e+00
24 define float @constant_fold_round_f32_03() #0 {
25   %x = call float @roundf(float 1.5) #0
26   ret float %x
29 ; CHECK-LABEL: @constant_fold_round_f32_04
30 ; CHECK-NEXT: ret float -2.000000e+00
31 define float @constant_fold_round_f32_04() #0 {
32   %x = call float @llvm.round.f32(float -1.5) #0
33   ret float %x
36 ; CHECK-LABEL: @constant_fold_round_f32_05
37 ; CHECK-NEXT: ret float 3.000000e+00
38 define float @constant_fold_round_f32_05() #0 {
39   %x = call float @roundf(float 2.75) #0
40   ret float %x
43 ; CHECK-LABEL: @constant_fold_round_f32_06
44 ; CHECK-NEXT: ret float -3.000000e+00
45 define float @constant_fold_round_f32_06() #0 {
46   %x = call float @llvm.round.f32(float -2.75) #0
47   ret float %x
50 ; CHECK-LABEL: @constant_fold_round_f64_01
51 ; CHECK-NEXT: ret double 1.000000e+00
52 define double @constant_fold_round_f64_01() #0 {
53   %x = call double @round(double 1.3) #0
54   ret double %x
57 ; CHECK-LABEL: @constant_fold_round_f64_02
58 ; CHECK-NEXT: ret double -1.000000e+00
59 define double @constant_fold_round_f64_02() #0 {
60   %x = call double @llvm.round.f64(double -1.3) #0
61   ret double %x
64 ; CHECK-LABEL: @constant_fold_round_f64_03
65 ; CHECK-NEXT: ret double 2.000000e+00
66 define double @constant_fold_round_f64_03() #0 {
67   %x = call double @round(double 1.5) #0
68   ret double %x
71 ; CHECK-LABEL: @constant_fold_round_f64_04
72 ; CHECK-NEXT: ret double -2.000000e+00
73 define double @constant_fold_round_f64_04() #0 {
74   %x = call double @llvm.round.f64(double -1.5) #0
75   ret double %x
78 ; CHECK-LABEL: @constant_fold_round_f64_05
79 ; CHECK-NEXT: ret double 3.000000e+00
80 define double @constant_fold_round_f64_05() #0 {
81   %x = call double @round(double 2.7) #0
82   ret double %x
85 ; CHECK-LABEL: @constant_fold_round_f64_06
86 ; CHECK-NEXT: ret double -3.000000e+00
87 define double @constant_fold_round_f64_06() #0 {
88   %x = call double @llvm.round.f64(double -2.7) #0
89   ret double %x
92 attributes #0 = { nounwind readnone willreturn }