partial-unroll-optsize.ll 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ; RUN: opt < %s -S -loop-unroll -unroll-allow-partial | FileCheck %s
  2. ; Loop size = 3, when the function has the optsize attribute, the
  3. ; OptSizeUnrollThreshold, i.e. 50, is used, hence the loop should be unrolled
  4. ; by 32 times because (1 * 32) + 2 < 50 (whereas (1 * 64 + 2) is not).
  5. define void @unroll_opt_for_size() nounwind optsize {
  6. entry:
  7. br label %loop
  8. loop:
  9. %iv = phi i32 [ 0, %entry ], [ %inc, %loop ]
  10. %inc = add i32 %iv, 1
  11. %exitcnd = icmp uge i32 %inc, 1024
  12. br i1 %exitcnd, label %exit, label %loop
  13. exit:
  14. ret void
  15. }
  16. ; CHECK: add
  17. ; CHECK-NEXT: add
  18. ; CHECK-NEXT: add
  19. ; CHECK-NEXT: add
  20. ; CHECK-NEXT: add
  21. ; CHECK-NEXT: add
  22. ; CHECK-NEXT: add
  23. ; CHECK-NEXT: add
  24. ; CHECK-NEXT: add
  25. ; CHECK-NEXT: add
  26. ; CHECK-NEXT: add
  27. ; CHECK-NEXT: add
  28. ; CHECK-NEXT: add
  29. ; CHECK-NEXT: add
  30. ; CHECK-NEXT: add
  31. ; CHECK-NEXT: add
  32. ; CHECK-NEXT: add
  33. ; CHECK-NEXT: add
  34. ; CHECK-NEXT: add
  35. ; CHECK-NEXT: add
  36. ; CHECK-NEXT: add
  37. ; CHECK-NEXT: add
  38. ; CHECK-NEXT: add
  39. ; CHECK-NEXT: add
  40. ; CHECK-NEXT: add
  41. ; CHECK-NEXT: add
  42. ; CHECK-NEXT: add
  43. ; CHECK-NEXT: add
  44. ; CHECK-NEXT: add
  45. ; CHECK-NEXT: add
  46. ; CHECK-NEXT: add
  47. ; CHECK-NEXT: add
  48. ; CHECK-NEXT: icmp