fpextend.ll 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. ; RUN: opt < %s -instcombine -S | not grep fpext
  2. @X = external global float
  3. @Y = external global float
  4. define void @test() nounwind {
  5. entry:
  6. %tmp = load float, float* @X, align 4 ; <float> [#uses=1]
  7. %tmp1 = fpext float %tmp to double ; <double> [#uses=1]
  8. %tmp3 = fadd double %tmp1, 0.000000e+00 ; <double> [#uses=1]
  9. %tmp34 = fptrunc double %tmp3 to float ; <float> [#uses=1]
  10. store float %tmp34, float* @X, align 4
  11. ret void
  12. }
  13. define void @test2() nounwind {
  14. entry:
  15. %tmp = load float, float* @X, align 4 ; <float> [#uses=1]
  16. %tmp1 = fpext float %tmp to double ; <double> [#uses=1]
  17. %tmp2 = load float, float* @Y, align 4 ; <float> [#uses=1]
  18. %tmp23 = fpext float %tmp2 to double ; <double> [#uses=1]
  19. %tmp5 = fmul double %tmp1, %tmp23 ; <double> [#uses=1]
  20. %tmp56 = fptrunc double %tmp5 to float ; <float> [#uses=1]
  21. store float %tmp56, float* @X, align 4
  22. ret void
  23. }
  24. define void @test3() nounwind {
  25. entry:
  26. %tmp = load float, float* @X, align 4 ; <float> [#uses=1]
  27. %tmp1 = fpext float %tmp to double ; <double> [#uses=1]
  28. %tmp2 = load float, float* @Y, align 4 ; <float> [#uses=1]
  29. %tmp23 = fpext float %tmp2 to double ; <double> [#uses=1]
  30. %tmp5 = fdiv double %tmp1, %tmp23 ; <double> [#uses=1]
  31. %tmp56 = fptrunc double %tmp5 to float ; <float> [#uses=1]
  32. store float %tmp56, float* @X, align 4
  33. ret void
  34. }
  35. define void @test4() nounwind {
  36. entry:
  37. %tmp = load float, float* @X, align 4 ; <float> [#uses=1]
  38. %tmp1 = fpext float %tmp to double ; <double> [#uses=1]
  39. %tmp2 = fsub double -0.000000e+00, %tmp1 ; <double> [#uses=1]
  40. %tmp34 = fptrunc double %tmp2 to float ; <float> [#uses=1]
  41. store float %tmp34, float* @X, align 4
  42. ret void
  43. }