fpextend_x86.ll 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. ; RUN: opt < %s -instcombine -mtriple=x86_64-apple-macosx -S | FileCheck %s
  2. target triple = "x86_64-apple-macosx"
  3. define double @test1(double %a, double %b) nounwind {
  4. %wa = fpext double %a to x86_fp80
  5. %wb = fpext double %b to x86_fp80
  6. %wr = fadd x86_fp80 %wa, %wb
  7. %r = fptrunc x86_fp80 %wr to double
  8. ret double %r
  9. ; CHECK: test1
  10. ; CHECK: fadd x86_fp80
  11. ; CHECK: ret
  12. }
  13. define double @test2(double %a, double %b) nounwind {
  14. %wa = fpext double %a to x86_fp80
  15. %wb = fpext double %b to x86_fp80
  16. %wr = fsub x86_fp80 %wa, %wb
  17. %r = fptrunc x86_fp80 %wr to double
  18. ret double %r
  19. ; CHECK: test2
  20. ; CHECK: fsub x86_fp80
  21. ; CHECK: ret
  22. }
  23. define double @test3(double %a, double %b) nounwind {
  24. %wa = fpext double %a to x86_fp80
  25. %wb = fpext double %b to x86_fp80
  26. %wr = fmul x86_fp80 %wa, %wb
  27. %r = fptrunc x86_fp80 %wr to double
  28. ret double %r
  29. ; CHECK: test3
  30. ; CHECK: fmul x86_fp80
  31. ; CHECK: ret
  32. }
  33. define double @test4(double %a, half %b) nounwind {
  34. %wa = fpext double %a to x86_fp80
  35. %wb = fpext half %b to x86_fp80
  36. %wr = fmul x86_fp80 %wa, %wb
  37. %r = fptrunc x86_fp80 %wr to double
  38. ret double %r
  39. ; CHECK: test4
  40. ; CHECK: fmul double
  41. ; CHECK: ret
  42. }
  43. define double @test5(double %a, double %b) nounwind {
  44. %wa = fpext double %a to x86_fp80
  45. %wb = fpext double %b to x86_fp80
  46. %wr = fdiv x86_fp80 %wa, %wb
  47. %r = fptrunc x86_fp80 %wr to double
  48. ret double %r
  49. ; CHECK: test5
  50. ; CHECK: fdiv x86_fp80
  51. ; CHECK: ret
  52. }