fast-fp-commute.ll 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. ; RUN: opt -reassociate -S < %s | FileCheck %s
  2. declare void @use(float)
  3. define void @test1(float %x, float %y) {
  4. ; CHECK-LABEL: test1
  5. ; CHECK: fmul fast float %y, %x
  6. ; CHECK: fmul fast float %y, %x
  7. ; CHECK: fsub fast float %1, %2
  8. ; CHECK: call void @use(float %{{.*}})
  9. ; CHECK: call void @use(float %{{.*}})
  10. %1 = fmul fast float %x, %y
  11. %2 = fmul fast float %y, %x
  12. %3 = fsub fast float %1, %2
  13. call void @use(float %1)
  14. call void @use(float %3)
  15. ret void
  16. }
  17. define float @test2(float %x, float %y) {
  18. ; CHECK-LABEL: test2
  19. ; CHECK-NEXT: fmul fast float %y, %x
  20. ; CHECK-NEXT: fmul fast float %y, %x
  21. ; CHECK-NEXT: fsub fast float %1, %2
  22. ; CHECK-NEXT: ret float %3
  23. %1 = fmul fast float %x, %y
  24. %2 = fmul fast float %y, %x
  25. %3 = fsub fast float %1, %2
  26. ret float %3
  27. }
  28. define float @test3(float %x, float %y) {
  29. ; CHECK-LABEL: test3
  30. ; CHECK-NEXT: %factor = fmul fast float %y, 2.000000e+00
  31. ; CHECK-NEXT: %tmp1 = fmul fast float %factor, %x
  32. ; CHECK-NEXT: ret float %tmp1
  33. %1 = fmul fast float %x, %y
  34. %2 = fmul fast float %y, %x
  35. %3 = fadd fast float %1, %2
  36. ret float %3
  37. }