Index: lib/Transforms/InstCombine/InstCombineCalls.cpp =================================================================== --- lib/Transforms/InstCombine/InstCombineCalls.cpp +++ lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -2091,6 +2091,7 @@ case Intrinsic::floor: case Intrinsic::round: case Intrinsic::nearbyint: + case Intrinsic::rint: case Intrinsic::trunc: { Value *ExtSrc; if (match(II->getArgOperand(0), m_FPExt(m_Value(ExtSrc))) && Index: lib/Transforms/Utils/SimplifyLibCalls.cpp =================================================================== --- lib/Transforms/Utils/SimplifyLibCalls.cpp +++ lib/Transforms/Utils/SimplifyLibCalls.cpp @@ -2160,8 +2160,9 @@ case LibFunc_round: return replaceUnaryCall(CI, Builder, Intrinsic::round); case LibFunc_nearbyint: - case LibFunc_rint: return replaceUnaryCall(CI, Builder, Intrinsic::nearbyint); + case LibFunc_rint: + return replaceUnaryCall(CI, Builder, Intrinsic::rint); case LibFunc_trunc: return replaceUnaryCall(CI, Builder, Intrinsic::trunc); case LibFunc_acos: Index: test/Transforms/InstCombine/float-shrink-compare.ll =================================================================== --- test/Transforms/InstCombine/float-shrink-compare.ll +++ test/Transforms/InstCombine/float-shrink-compare.ll @@ -119,7 +119,7 @@ %cmp.ext = zext i1 %cmp to i32 ret i32 %cmp.ext ; CHECK-LABEL: @test5( -; CHECK-NEXT: %rint = call float @llvm.nearbyint.f32(float %x) +; CHECK-NEXT: %rint = call float @llvm.rint.f32(float %x) ; CHECK-NEXT: fcmp oeq float %rint, %y } @@ -276,7 +276,7 @@ %cmp.ext = zext i1 %cmp to i32 ret i32 %cmp.ext ; CHECK-LABEL: @test12( -; CHECK-NEXT: %rint = call float @llvm.nearbyint.f32(float %x) +; CHECK-NEXT: %rint = call float @llvm.rint.f32(float %x) ; CHECK-NEXT: fcmp oeq float %rint, %y }