diff --git a/llvm/test/Transforms/InstCombine/fneg.ll b/llvm/test/Transforms/InstCombine/fneg.ll --- a/llvm/test/Transforms/InstCombine/fneg.ll +++ b/llvm/test/Transforms/InstCombine/fneg.ll @@ -714,18 +714,15 @@ ret float %fneg1 } -; TODO: This should reduce to fneg-of-fabs. - define float @fnabs(float %a) { ; CHECK-LABEL: @fnabs( -; CHECK-NEXT: [[CMP:%.*]] = fcmp olt float [[A:%.*]], 0.000000e+00 -; CHECK-NEXT: [[A_NEG:%.*]] = fneg fast float [[A]] -; CHECK-NEXT: [[FNEG1:%.*]] = select fast i1 [[CMP]], float [[A]], float [[A_NEG]] +; CHECK-NEXT: [[TMP1:%.*]] = call nsz float @llvm.fabs.f32(float [[A:%.*]]) +; CHECK-NEXT: [[FNEG1:%.*]] = fneg fast float [[TMP1]] ; CHECK-NEXT: ret float [[FNEG1]] ; %fneg = fneg float %a %cmp = fcmp olt float %a, %fneg - %sel = select i1 %cmp, float %fneg, float %a + %sel = select nsz i1 %cmp, float %fneg, float %a %fneg1 = fneg fast float %sel ret float %fneg1 }