diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/fast-math.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/fast-math.ll | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/fast-math.ll b/llvm/test/Transforms/InstCombine/fast-math.ll index b24ce278ca8..6ccf6e9fa77 100644 --- a/llvm/test/Transforms/InstCombine/fast-math.ll +++ b/llvm/test/Transforms/InstCombine/fast-math.ll @@ -649,6 +649,21 @@ define double @sqrt_intrinsic_three_args6(double %x, double %y) { ; CHECK-NEXT: ret double %1 } +; If any operation is not 'fast', we can't simplify. + +define double @sqrt_intrinsic_not_so_fast(double %x, double %y) { + %mul = fmul double %x, %x + %mul2 = fmul fast double %mul, %y + %sqrt = call fast double @llvm.sqrt.f64(double %mul2) + ret double %sqrt + +; CHECK-LABEL: sqrt_intrinsic_not_so_fast( +; CHECK-NEXT: %mul = fmul double %x, %x +; CHECK-NEXT: %mul2 = fmul fast double %mul, %y +; CHECK-NEXT: %sqrt = call fast double @llvm.sqrt.f64(double %mul2) +; CHECK-NEXT: ret double %sqrt +} + define double @sqrt_intrinsic_arg_4th(double %x) { %mul = fmul fast double %x, %x %mul2 = fmul fast double %mul, %mul |