2002-05-15-SubReassociate.ll 792 B

123456789101112131415161718192021222324252627282930
  1. ; RUN: opt < %s -reassociate -constprop -instcombine -dce -S | FileCheck %s
  2. ; With sub reassociation, constant folding can eliminate all of the constants.
  3. define i32 @test1(i32 %A, i32 %B) {
  4. ; CHECK-LABEL: test1
  5. ; CHECK-NEXT: %Z = sub i32 %A, %B
  6. ; CHECK-NEXT: ret i32 %Z
  7. %W = add i32 5, %B
  8. %X = add i32 -7, %A
  9. %Y = sub i32 %X, %W
  10. %Z = add i32 %Y, 12
  11. ret i32 %Z
  12. }
  13. ; With sub reassociation, constant folding can eliminate the two 12 constants.
  14. define i32 @test2(i32 %A, i32 %B, i32 %C, i32 %D) {
  15. ; CHECK-LABEL: test2
  16. ; CHECK-NEXT: %sum = add i32 %B, %A
  17. ; CHECK-NEXT: %sum1 = add i32 %sum, %C
  18. ; CHECK-NEXT: %Q = sub i32 %D, %sum1
  19. ; CHECK-NEXT: ret i32 %Q
  20. %M = add i32 %A, 12
  21. %N = add i32 %M, %B
  22. %O = add i32 %N, %C
  23. %P = sub i32 %D, %O
  24. %Q = add i32 %P, 12
  25. ret i32 %Q
  26. }