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