diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/fdiv.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/fdiv.ll | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/test/Transforms/InstCombine/fdiv.ll b/llvm/test/Transforms/InstCombine/fdiv.ll index 90fea3baf1e..3a2c62c5071 100644 --- a/llvm/test/Transforms/InstCombine/fdiv.ll +++ b/llvm/test/Transforms/InstCombine/fdiv.ll @@ -86,11 +86,9 @@ define <2 x float> @not_exact_but_allow_recip_splat(<2 x float> %x) { ret <2 x float> %div } -; FIXME: Vector neglect. - define <2 x float> @exact_inverse_vec(<2 x float> %x) { ; CHECK-LABEL: @exact_inverse_vec( -; CHECK-NEXT: [[DIV:%.*]] = fdiv <2 x float> [[X:%.*]], <float 4.000000e+00, float 8.000000e+00> +; CHECK-NEXT: [[DIV:%.*]] = fmul <2 x float> [[X:%.*]], <float 2.500000e-01, float 1.250000e-01> ; CHECK-NEXT: ret <2 x float> [[DIV]] ; %div = fdiv <2 x float> %x, <float 4.0, float 8.0> @@ -115,6 +113,15 @@ define <2 x float> @not_exact_inverse_vec(<2 x float> %x) { ret <2 x float> %div } +define <2 x float> @not_exact_inverse_vec_arcp(<2 x float> %x) { +; CHECK-LABEL: @not_exact_inverse_vec_arcp( +; CHECK-NEXT: [[DIV:%.*]] = fmul arcp <2 x float> [[X:%.*]], <float 2.500000e-01, float 0x3FD5555560000000> +; CHECK-NEXT: ret <2 x float> [[DIV]] +; + %div = fdiv arcp <2 x float> %x, <float 4.0, float 3.0> + ret <2 x float> %div +} + ; (X / Y) / Z --> X / (Y * Z) define float @div_with_div_numerator(float %x, float %y, float %z) { |