rem.ll 1009 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. ; RUN: opt < %s -instsimplify -S | FileCheck %s
  2. define i32 @select1(i32 %x, i1 %b) {
  3. ; CHECK-LABEL: @select1(
  4. %rhs = select i1 %b, i32 %x, i32 1
  5. %rem = srem i32 %x, %rhs
  6. ret i32 %rem
  7. ; CHECK: ret i32 0
  8. }
  9. define i32 @select2(i32 %x, i1 %b) {
  10. ; CHECK-LABEL: @select2(
  11. %rhs = select i1 %b, i32 %x, i32 1
  12. %rem = urem i32 %x, %rhs
  13. ret i32 %rem
  14. ; CHECK: ret i32 0
  15. }
  16. define i32 @rem1(i32 %x, i32 %n) {
  17. ; CHECK-LABEL: @rem1(
  18. ; CHECK-NEXT: %mod = srem i32 %x, %n
  19. ; CHECK-NEXT: ret i32 %mod
  20. %mod = srem i32 %x, %n
  21. %mod1 = srem i32 %mod, %n
  22. ret i32 %mod1
  23. }
  24. define i32 @rem2(i32 %x, i32 %n) {
  25. ; CHECK-LABEL: @rem2(
  26. ; CHECK-NEXT: %mod = urem i32 %x, %n
  27. ; CHECK-NEXT: ret i32 %mod
  28. %mod = urem i32 %x, %n
  29. %mod1 = urem i32 %mod, %n
  30. ret i32 %mod1
  31. }
  32. define i32 @rem3(i32 %x, i32 %n) {
  33. ; CHECK-LABEL: @rem3(
  34. ; CHECK-NEXT: %[[srem:.*]] = srem i32 %x, %n
  35. ; CHECK-NEXT: %[[urem:.*]] = urem i32 %[[srem]], %n
  36. ; CHECK-NEXT: ret i32 %[[urem]]
  37. %mod = srem i32 %x, %n
  38. %mod1 = urem i32 %mod, %n
  39. ret i32 %mod1
  40. }