fast-ArrayOutOfBounds.ll 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. ; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
  2. ; Not marked as fast, so must not change.
  3. define float @test1(float %a0, float %a1, float %a2, float %a3, float %a4) {
  4. ; CHECK-LABEL: test1
  5. ; CHECK-NEXT: %tmp.2 = fadd float %a3, %a4
  6. ; CHECK-NEXT: %tmp.4 = fadd float %tmp.2, %a2
  7. ; CHECK-NEXT: %tmp.6 = fadd float %tmp.4, %a1
  8. ; CHECK-NEXT: %tmp.8 = fadd float %tmp.6, %a0
  9. ; CHECK-NEXT: %tmp.11 = fadd float %a2, %a3
  10. ; CHECK-NEXT: %tmp.13 = fadd float %tmp.11, %a1
  11. ; CHECK-NEXT: %tmp.15 = fadd float %tmp.13, %a0
  12. ; CHECK-NEXT: %tmp.18 = fadd float %a1, %a2
  13. ; CHECK-NEXT: %tmp.20 = fadd float %tmp.18, %a0
  14. ; CHECK-NEXT: %tmp.23 = fadd float %a0, %a1
  15. ; CHECK-NEXT: %tmp.26 = fsub float %tmp.8, %tmp.15
  16. ; CHECK-NEXT: %tmp.28 = fadd float %tmp.20, %tmp.26
  17. ; CHECK-NEXT: %tmp.30 = fsub float %tmp.28, %tmp.23
  18. ; CHECK-NEXT: %tmp.32 = fsub float %tmp.30, %a4
  19. ; CHECK-NEXT: %tmp.34 = fsub float %tmp.32, %a2
  20. ; CHECK-NEXT: %T = fmul float %tmp.34, %tmp.34
  21. ; CHECK-NEXT: ret float %T
  22. %tmp.2 = fadd float %a4, %a3
  23. %tmp.4 = fadd float %tmp.2, %a2
  24. %tmp.6 = fadd float %tmp.4, %a1
  25. %tmp.8 = fadd float %tmp.6, %a0
  26. %tmp.11 = fadd float %a3, %a2
  27. %tmp.13 = fadd float %tmp.11, %a1
  28. %tmp.15 = fadd float %tmp.13, %a0
  29. %tmp.18 = fadd float %a2, %a1
  30. %tmp.20 = fadd float %tmp.18, %a0
  31. %tmp.23 = fadd float %a1, %a0
  32. %tmp.26 = fsub float %tmp.8, %tmp.15
  33. %tmp.28 = fadd float %tmp.26, %tmp.20
  34. %tmp.30 = fsub float %tmp.28, %tmp.23
  35. %tmp.32 = fsub float %tmp.30, %a4
  36. %tmp.34 = fsub float %tmp.32, %a2
  37. %T = fmul float %tmp.34, %tmp.34
  38. ret float %T
  39. }
  40. ; Should be able to eliminate everything.
  41. define float @test2(float %a0, float %a1, float %a2, float %a3, float %a4) {
  42. ; CHECK-LABEL: test2
  43. ; CHECK: ret float 0.000000e+00
  44. %tmp.2 = fadd fast float %a4, %a3
  45. %tmp.4 = fadd fast float %tmp.2, %a2
  46. %tmp.6 = fadd fast float %tmp.4, %a1
  47. %tmp.8 = fadd fast float %tmp.6, %a0
  48. %tmp.11 = fadd fast float %a3, %a2
  49. %tmp.13 = fadd fast float %tmp.11, %a1
  50. %tmp.15 = fadd fast float %tmp.13, %a0
  51. %tmp.18 = fadd fast float %a2, %a1
  52. %tmp.20 = fadd fast float %tmp.18, %a0
  53. %tmp.23 = fadd fast float %a1, %a0
  54. %tmp.26 = fsub fast float %tmp.8, %tmp.15
  55. %tmp.28 = fadd fast float %tmp.26, %tmp.20
  56. %tmp.30 = fsub fast float %tmp.28, %tmp.23
  57. %tmp.32 = fsub fast float %tmp.30, %a4
  58. %tmp.34 = fsub fast float %tmp.32, %a2
  59. %T = fmul fast float %tmp.34, %tmp.34
  60. ret float %T
  61. }