check-zero-divide.ll 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. ; RUN: opt -lint -disable-output %s 2>&1 | FileCheck %s
  2. define <2 x i32> @use_vector_sdiv(<2 x i32> %a) nounwind {
  3. %b = sdiv <2 x i32> %a, <i32 5, i32 8>
  4. ret <2 x i32> %b
  5. }
  6. define <2 x i32> @use_vector_srem(<2 x i32> %a) nounwind {
  7. %b = srem <2 x i32> %a, <i32 5, i32 8>
  8. ret <2 x i32> %b
  9. }
  10. define <2 x i32> @use_vector_udiv(<2 x i32> %a) nounwind {
  11. %b = udiv <2 x i32> %a, <i32 5, i32 8>
  12. ret <2 x i32> %b
  13. }
  14. define <2 x i32> @use_vector_urem(<2 x i32> %a) nounwind {
  15. %b = urem <2 x i32> %a, <i32 5, i32 8>
  16. ret <2 x i32> %b
  17. }
  18. define i32 @use_sdiv_by_zero(i32 %a) nounwind {
  19. ; CHECK: Undefined behavior: Division by zero
  20. ; CHECK-NEXT: %b = sdiv i32 %a, 0
  21. %b = sdiv i32 %a, 0
  22. ret i32 %b
  23. }
  24. define i32 @use_sdiv_by_zeroinitializer(i32 %a) nounwind {
  25. ; CHECK: Undefined behavior: Division by zero
  26. ; CHECK-NEXT: %b = sdiv i32 %a, 0
  27. %b = sdiv i32 %a, zeroinitializer
  28. ret i32 %b
  29. }
  30. define <2 x i32> @use_vector_sdiv_by_zero_x(<2 x i32> %a) nounwind {
  31. ; CHECK: Undefined behavior: Division by zero
  32. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 0, i32 5>
  33. %b = sdiv <2 x i32> %a, <i32 0, i32 5>
  34. ret <2 x i32> %b
  35. }
  36. define <2 x i32> @use_vector_sdiv_by_zero_y(<2 x i32> %a) nounwind {
  37. ; CHECK: Undefined behavior: Division by zero
  38. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 4, i32 0>
  39. %b = sdiv <2 x i32> %a, <i32 4, i32 0>
  40. ret <2 x i32> %b
  41. }
  42. define <2 x i32> @use_vector_sdiv_by_zero_xy(<2 x i32> %a) nounwind {
  43. ; CHECK: Undefined behavior: Division by zero
  44. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, zeroinitializer
  45. %b = sdiv <2 x i32> %a, <i32 0, i32 0>
  46. ret <2 x i32> %b
  47. }
  48. define <2 x i32> @use_vector_sdiv_by_undef_x(<2 x i32> %a) nounwind {
  49. ; CHECK: Undefined behavior: Division by zero
  50. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 undef, i32 5>
  51. %b = sdiv <2 x i32> %a, <i32 undef, i32 5>
  52. ret <2 x i32> %b
  53. }
  54. define <2 x i32> @use_vector_sdiv_by_undef_y(<2 x i32> %a) nounwind {
  55. ; CHECK: Undefined behavior: Division by zero
  56. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 5, i32 undef>
  57. %b = sdiv <2 x i32> %a, <i32 5, i32 undef>
  58. ret <2 x i32> %b
  59. }
  60. define <2 x i32> @use_vector_sdiv_by_undef_xy(<2 x i32> %a) nounwind {
  61. ; CHECK: Undefined behavior: Division by zero
  62. ; CHECK-NEXT: %b = sdiv <2 x i32> %a, undef
  63. %b = sdiv <2 x i32> %a, <i32 undef, i32 undef>
  64. ret <2 x i32> %b
  65. }