Test Failure: Transforms/InstSimplify/icmp-constant.ll

Test source: git

Log:

Source: <stdin>
-- 1. ModuleToFunctionPassAdaptor
-- 1. PassManager<Function> : Skipping NOP
-- 2. InstSimplifyPass

----------------------------------------
define i1 @tautological_ule(i8 %x) {
#0:
  %cmp = icmp ule i8 %x, 255
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 3. InstSimplifyPass

----------------------------------------
define i1 @tautological_ule(i8 %x) {
#0:
  %cmp = icmp ule i8 %x, 255
  ret i1 %cmp
}
=>
define i1 @tautological_ule(i8 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 4. PassManager<Function> : Skipping NOP
-- 5. PassManager<Function> : Skipping NOP
-- 6. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ule_vec(<2 x i8> %x) {
#0:
  %cmp = icmp ule <2 x i8> %x, { 255, 255 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 7. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ule_vec(<2 x i8> %x) {
#0:
  %cmp = icmp ule <2 x i8> %x, { 255, 255 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @tautological_ule_vec(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 8. PassManager<Function> : Skipping NOP
-- 9. PassManager<Function> : Skipping NOP
-- 10. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ule_vec_partial_undef(<2 x i8> %x) {
#0:
  %cmp = icmp ule <2 x i8> %x, { 255, undef }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 11. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ule_vec_partial_undef(<2 x i8> %x) {
#0:
  %cmp = icmp ule <2 x i8> %x, { 255, undef }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @tautological_ule_vec_partial_undef(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
-- 14. InstSimplifyPass

----------------------------------------
define i1 @tautological_ugt(i8 %x) {
#0:
  %cmp = icmp ugt i8 %x, 255
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 15. InstSimplifyPass

----------------------------------------
define i1 @tautological_ugt(i8 %x) {
#0:
  %cmp = icmp ugt i8 %x, 255
  ret i1 %cmp
}
=>
define i1 @tautological_ugt(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 16. PassManager<Function> : Skipping NOP
-- 17. PassManager<Function> : Skipping NOP
-- 18. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ugt_vec(<2 x i8> %x) {
#0:
  %cmp = icmp ugt <2 x i8> %x, { 255, 255 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 19. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ugt_vec(<2 x i8> %x) {
#0:
  %cmp = icmp ugt <2 x i8> %x, { 255, 255 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @tautological_ugt_vec(<2 x i8> %x) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 20. PassManager<Function> : Skipping NOP
-- 21. PassManager<Function> : Skipping NOP
-- 22. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ugt_vec_partial_undef(<2 x i8> %x) {
#0:
  %cmp = icmp ugt <2 x i8> %x, { undef, 255 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 23. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological_ugt_vec_partial_undef(<2 x i8> %x) {
#0:
  %cmp = icmp ugt <2 x i8> %x, { undef, 255 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @tautological_ugt_vec_partial_undef(<2 x i8> %x) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. InstSimplifyPass

----------------------------------------
define i1 @urem3(i32 %X) {
#0:
  %A = urem i32 %X, 10
  %B = icmp ult i32 %A, 15
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 27. InstSimplifyPass

----------------------------------------
define i1 @urem3(i32 %X) {
#0:
  %A = urem i32 %X, 10
  %B = icmp ult i32 %A, 15
  ret i1 %B
}
=>
define i1 @urem3(i32 %X) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 28. PassManager<Function> : Skipping NOP
-- 29. PassManager<Function> : Skipping NOP
-- 30. InstSimplifyPass

----------------------------------------
define <2 x i1> @urem3_vec(<2 x i32> %X) {
#0:
  %A = urem <2 x i32> %X, { 10, 10 }
  %B = icmp ult <2 x i32> %A, { 15, 15 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 31. InstSimplifyPass

----------------------------------------
define <2 x i1> @urem3_vec(<2 x i32> %X) {
#0:
  %A = urem <2 x i32> %X, { 10, 10 }
  %B = icmp ult <2 x i32> %A, { 15, 15 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @urem3_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 32. PassManager<Function> : Skipping NOP
-- 33. PassManager<Function> : Skipping NOP
-- 34. InstSimplifyPass

----------------------------------------
define <2 x i1> @urem3_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = urem <2 x i32> %X, { 10, 10 }
  %B = icmp ult <2 x i32> %A, { undef, 15 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 35. InstSimplifyPass

----------------------------------------
define <2 x i1> @urem3_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = urem <2 x i32> %X, { 10, 10 }
  %B = icmp ult <2 x i32> %A, { undef, 15 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @urem3_vec_partial_undef(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 36. PassManager<Function> : Skipping NOP
-- 37. PassManager<Function> : Skipping NOP
-- 38. InstSimplifyPass

----------------------------------------
define i1 @srem1(i32 %X) {
#0:
  %A = srem i32 %X, 4294967291
  %B = icmp sgt i32 %A, 5
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 39. InstSimplifyPass

----------------------------------------
define i1 @srem1(i32 %X) {
#0:
  %A = srem i32 %X, 4294967291
  %B = icmp sgt i32 %A, 5
  ret i1 %B
}
=>
define i1 @srem1(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 40. PassManager<Function> : Skipping NOP
-- 41. PassManager<Function> : Skipping NOP
-- 42. InstSimplifyPass

----------------------------------------
define <2 x i1> @srem1_vec(<2 x i32> %X) {
#0:
  %A = srem <2 x i32> %X, { 4294967291, 4294967291 }
  %B = icmp sgt <2 x i32> %A, { 5, 5 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 43. InstSimplifyPass

----------------------------------------
define <2 x i1> @srem1_vec(<2 x i32> %X) {
#0:
  %A = srem <2 x i32> %X, { 4294967291, 4294967291 }
  %B = icmp sgt <2 x i32> %A, { 5, 5 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @srem1_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 44. PassManager<Function> : Skipping NOP
-- 45. PassManager<Function> : Skipping NOP
-- 46. InstSimplifyPass

----------------------------------------
define <2 x i1> @srem1_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = srem <2 x i32> %X, { 4294967291, 4294967291 }
  %B = icmp sgt <2 x i32> %A, { 5, undef }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 47. InstSimplifyPass

----------------------------------------
define <2 x i1> @srem1_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = srem <2 x i32> %X, { 4294967291, 4294967291 }
  %B = icmp sgt <2 x i32> %A, { 5, undef }
  ret <2 x i1> %B
}
=>
define <2 x i1> @srem1_vec_partial_undef(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 48. PassManager<Function> : Skipping NOP
-- 49. PassManager<Function> : Skipping NOP
-- 50. InstSimplifyPass

----------------------------------------
define i1 @udiv5(i32 %X) {
#0:
  %A = udiv i32 123, %X
  %C = icmp ugt i32 %A, 124
  ret i1 %C
}
Transformation seems to be correct! (syntactically equal)

-- 51. InstSimplifyPass

----------------------------------------
define i1 @udiv5(i32 %X) {
#0:
  %A = udiv i32 123, %X
  %C = icmp ugt i32 %A, 124
  ret i1 %C
}
=>
define i1 @udiv5(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 52. PassManager<Function> : Skipping NOP
-- 53. PassManager<Function> : Skipping NOP
-- 54. InstSimplifyPass

----------------------------------------
define <2 x i1> @udiv5_vec(<2 x i32> %X) {
#0:
  %A = udiv <2 x i32> { 123, 123 }, %X
  %C = icmp ugt <2 x i32> %A, { 124, 124 }
  ret <2 x i1> %C
}
Transformation seems to be correct! (syntactically equal)

-- 55. InstSimplifyPass

----------------------------------------
define <2 x i1> @udiv5_vec(<2 x i32> %X) {
#0:
  %A = udiv <2 x i32> { 123, 123 }, %X
  %C = icmp ugt <2 x i32> %A, { 124, 124 }
  ret <2 x i1> %C
}
=>
define <2 x i1> @udiv5_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 56. PassManager<Function> : Skipping NOP
-- 57. PassManager<Function> : Skipping NOP
-- 58. InstSimplifyPass

----------------------------------------
define i1 @udiv1(i32 %X) {
#0:
  %A = udiv i32 %X, 1000000
  %B = icmp ult i32 %A, 5000
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 59. InstSimplifyPass

----------------------------------------
define i1 @udiv1(i32 %X) {
#0:
  %A = udiv i32 %X, 1000000
  %B = icmp ult i32 %A, 5000
  ret i1 %B
}
=>
define i1 @udiv1(i32 %X) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 60. PassManager<Function> : Skipping NOP
-- 61. PassManager<Function> : Skipping NOP
-- 62. InstSimplifyPass

----------------------------------------
define <2 x i1> @udiv1_vec(<2 x i32> %X) {
#0:
  %A = udiv <2 x i32> %X, { 1000000, 1000000 }
  %B = icmp ult <2 x i32> %A, { 5000, 5000 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 63. InstSimplifyPass

----------------------------------------
define <2 x i1> @udiv1_vec(<2 x i32> %X) {
#0:
  %A = udiv <2 x i32> %X, { 1000000, 1000000 }
  %B = icmp ult <2 x i32> %A, { 5000, 5000 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @udiv1_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 64. PassManager<Function> : Skipping NOP
-- 65. PassManager<Function> : Skipping NOP
-- 66. InstSimplifyPass

----------------------------------------
define i1 @compare_dividend(i32 %a) {
#0:
  %div = sdiv i32 2, %a
  %cmp = icmp eq i32 %div, 3
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 67. InstSimplifyPass

----------------------------------------
define i1 @compare_dividend(i32 %a) {
#0:
  %div = sdiv i32 2, %a
  %cmp = icmp eq i32 %div, 3
  ret i1 %cmp
}
=>
define i1 @compare_dividend(i32 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 68. PassManager<Function> : Skipping NOP
-- 69. PassManager<Function> : Skipping NOP
-- 70. InstSimplifyPass

----------------------------------------
define <2 x i1> @compare_dividend_vec(<2 x i32> %a) {
#0:
  %div = sdiv <2 x i32> { 2, 2 }, %a
  %cmp = icmp eq <2 x i32> %div, { 3, 3 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 71. InstSimplifyPass

----------------------------------------
define <2 x i1> @compare_dividend_vec(<2 x i32> %a) {
#0:
  %div = sdiv <2 x i32> { 2, 2 }, %a
  %cmp = icmp eq <2 x i32> %div, { 3, 3 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @compare_dividend_vec(<2 x i32> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 72. PassManager<Function> : Skipping NOP
-- 73. PassManager<Function> : Skipping NOP
-- 74. InstSimplifyPass

----------------------------------------
define i1 @sdiv1(i32 %X) {
#0:
  %A = sdiv i32 %X, 1000000
  %B = icmp slt i32 %A, 3000
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 75. InstSimplifyPass

----------------------------------------
define i1 @sdiv1(i32 %X) {
#0:
  %A = sdiv i32 %X, 1000000
  %B = icmp slt i32 %A, 3000
  ret i1 %B
}
=>
define i1 @sdiv1(i32 %X) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 76. PassManager<Function> : Skipping NOP
-- 77. PassManager<Function> : Skipping NOP
-- 78. InstSimplifyPass

----------------------------------------
define <2 x i1> @sdiv1_vec(<2 x i32> %X) {
#0:
  %A = sdiv <2 x i32> %X, { 1000000, 1000000 }
  %B = icmp slt <2 x i32> %A, { 3000, 3000 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 79. InstSimplifyPass

----------------------------------------
define <2 x i1> @sdiv1_vec(<2 x i32> %X) {
#0:
  %A = sdiv <2 x i32> %X, { 1000000, 1000000 }
  %B = icmp slt <2 x i32> %A, { 3000, 3000 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @sdiv1_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 80. PassManager<Function> : Skipping NOP
-- 81. PassManager<Function> : Skipping NOP
-- 82. InstSimplifyPass

----------------------------------------
define i1 @shl5(i32 %X) {
#0:
  %sub = shl nuw i32 4, %X
  %cmp = icmp ugt i32 %sub, 3
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 83. InstSimplifyPass

----------------------------------------
define i1 @shl5(i32 %X) {
#0:
  %sub = shl nuw i32 4, %X
  %cmp = icmp ugt i32 %sub, 3
  ret i1 %cmp
}
=>
define i1 @shl5(i32 %X) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 84. PassManager<Function> : Skipping NOP
-- 85. PassManager<Function> : Skipping NOP
-- 86. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl5_vec(<2 x i32> %X) {
#0:
  %sub = shl nuw <2 x i32> { 4, 4 }, %X
  %cmp = icmp ugt <2 x i32> %sub, { 3, 3 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 87. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl5_vec(<2 x i32> %X) {
#0:
  %sub = shl nuw <2 x i32> { 4, 4 }, %X
  %cmp = icmp ugt <2 x i32> %sub, { 3, 3 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @shl5_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 88. PassManager<Function> : Skipping NOP
-- 89. PassManager<Function> : Skipping NOP
-- 90. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl5_vec_partial_undef(<2 x i32> %X) {
#0:
  %sub = shl nuw <2 x i32> { 4, 4 }, %X
  %cmp = icmp ugt <2 x i32> %sub, { undef, 3 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 91. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl5_vec_partial_undef(<2 x i32> %X) {
#0:
  %sub = shl nuw <2 x i32> { 4, 4 }, %X
  %cmp = icmp ugt <2 x i32> %sub, { undef, 3 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @shl5_vec_partial_undef(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 92. PassManager<Function> : Skipping NOP
-- 93. PassManager<Function> : Skipping NOP
-- 94. InstSimplifyPass

----------------------------------------
define i1 @shl2(i32 %X) {
#0:
  %sub = shl nsw i32 4294967295, %X
  %cmp = icmp eq i32 %sub, 31
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 95. InstSimplifyPass

----------------------------------------
define i1 @shl2(i32 %X) {
#0:
  %sub = shl nsw i32 4294967295, %X
  %cmp = icmp eq i32 %sub, 31
  ret i1 %cmp
}
=>
define i1 @shl2(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 96. PassManager<Function> : Skipping NOP
-- 97. PassManager<Function> : Skipping NOP
-- 98. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl2_vec(<2 x i32> %X) {
#0:
  %sub = shl nsw <2 x i32> { 4294967295, 4294967295 }, %X
  %cmp = icmp eq <2 x i32> %sub, { 31, 31 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 99. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl2_vec(<2 x i32> %X) {
#0:
  %sub = shl nsw <2 x i32> { 4294967295, 4294967295 }, %X
  %cmp = icmp eq <2 x i32> %sub, { 31, 31 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @shl2_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 100. PassManager<Function> : Skipping NOP
-- 101. PassManager<Function> : Skipping NOP
-- 102. InstSimplifyPass

----------------------------------------
define i1 @shl4(i32 %X) {
#0:
  %sub = shl nsw i32 4294967295, %X
  %cmp = icmp sle i32 %sub, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 103. InstSimplifyPass

----------------------------------------
define i1 @shl4(i32 %X) {
#0:
  %sub = shl nsw i32 4294967295, %X
  %cmp = icmp sle i32 %sub, 4294967295
  ret i1 %cmp
}
=>
define i1 @shl4(i32 %X) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 104. PassManager<Function> : Skipping NOP
-- 105. PassManager<Function> : Skipping NOP
-- 106. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl4_vec(<2 x i32> %X) {
#0:
  %sub = shl nsw <2 x i32> { 4294967295, 4294967295 }, %X
  %cmp = icmp sle <2 x i32> %sub, { 4294967295, 4294967295 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 107. InstSimplifyPass

----------------------------------------
define <2 x i1> @shl4_vec(<2 x i32> %X) {
#0:
  %sub = shl nsw <2 x i32> { 4294967295, 4294967295 }, %X
  %cmp = icmp sle <2 x i32> %sub, { 4294967295, 4294967295 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @shl4_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 108. PassManager<Function> : Skipping NOP
-- 109. PassManager<Function> : Skipping NOP
-- 110. InstSimplifyPass

----------------------------------------
define i1 @icmp_shl_nsw_1(i64 %a) {
#0:
  %shl = shl nsw i64 1, %a
  %cmp = icmp sge i64 %shl, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 111. InstSimplifyPass

----------------------------------------
define i1 @icmp_shl_nsw_1(i64 %a) {
#0:
  %shl = shl nsw i64 1, %a
  %cmp = icmp sge i64 %shl, 0
  ret i1 %cmp
}
=>
define i1 @icmp_shl_nsw_1(i64 %a) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 112. PassManager<Function> : Skipping NOP
-- 113. PassManager<Function> : Skipping NOP
-- 114. InstSimplifyPass

----------------------------------------
define <2 x i1> @icmp_shl_nsw_1_vec(<2 x i64> %a) {
#0:
  %shl = shl nsw <2 x i64> { 1, 1 }, %a
  %cmp = icmp sge <2 x i64> %shl, { 0, 0 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 115. InstSimplifyPass

----------------------------------------
define <2 x i1> @icmp_shl_nsw_1_vec(<2 x i64> %a) {
#0:
  %shl = shl nsw <2 x i64> { 1, 1 }, %a
  %cmp = icmp sge <2 x i64> %shl, { 0, 0 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @icmp_shl_nsw_1_vec(<2 x i64> %a) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 116. PassManager<Function> : Skipping NOP
-- 117. PassManager<Function> : Skipping NOP
-- 118. InstSimplifyPass

----------------------------------------
define i1 @icmp_shl_nsw_neg1(i64 %a) {
#0:
  %shl = shl nsw i64 -1, %a
  %cmp = icmp sge i64 %shl, 3
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 119. InstSimplifyPass

----------------------------------------
define i1 @icmp_shl_nsw_neg1(i64 %a) {
#0:
  %shl = shl nsw i64 -1, %a
  %cmp = icmp sge i64 %shl, 3
  ret i1 %cmp
}
=>
define i1 @icmp_shl_nsw_neg1(i64 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 120. PassManager<Function> : Skipping NOP
-- 121. PassManager<Function> : Skipping NOP
-- 122. InstSimplifyPass

----------------------------------------
define <2 x i1> @icmp_shl_nsw_neg1_vec(<2 x i64> %a) {
#0:
  %shl = shl nsw <2 x i64> { -1, -1 }, %a
  %cmp = icmp sge <2 x i64> %shl, { 3, 3 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 123. InstSimplifyPass

----------------------------------------
define <2 x i1> @icmp_shl_nsw_neg1_vec(<2 x i64> %a) {
#0:
  %shl = shl nsw <2 x i64> { -1, -1 }, %a
  %cmp = icmp sge <2 x i64> %shl, { 3, 3 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @icmp_shl_nsw_neg1_vec(<2 x i64> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 124. PassManager<Function> : Skipping NOP
-- 125. PassManager<Function> : Skipping NOP
-- 126. InstSimplifyPass

----------------------------------------
define i1 @lshr2(i32 %x) {
#0:
  %s = lshr i32 %x, 30
  %c = icmp ugt i32 %s, 8
  ret i1 %c
}
Transformation seems to be correct! (syntactically equal)

-- 127. InstSimplifyPass

----------------------------------------
define i1 @lshr2(i32 %x) {
#0:
  %s = lshr i32 %x, 30
  %c = icmp ugt i32 %s, 8
  ret i1 %c
}
=>
define i1 @lshr2(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 128. PassManager<Function> : Skipping NOP
-- 129. PassManager<Function> : Skipping NOP
-- 130. InstSimplifyPass

----------------------------------------
define <2 x i1> @lshr2_vec(<2 x i32> %x) {
#0:
  %s = lshr <2 x i32> %x, { 30, 30 }
  %c = icmp ugt <2 x i32> %s, { 8, 8 }
  ret <2 x i1> %c
}
Transformation seems to be correct! (syntactically equal)

-- 131. InstSimplifyPass

----------------------------------------
define <2 x i1> @lshr2_vec(<2 x i32> %x) {
#0:
  %s = lshr <2 x i32> %x, { 30, 30 }
  %c = icmp ugt <2 x i32> %s, { 8, 8 }
  ret <2 x i1> %c
}
=>
define <2 x i1> @lshr2_vec(<2 x i32> %x) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 132. PassManager<Function> : Skipping NOP
-- 133. PassManager<Function> : Skipping NOP
-- 134. InstSimplifyPass

----------------------------------------
define i1 @exact_lshr_ugt_false(i32 %a) {
#0:
  %shr = lshr exact i32 30, %a
  %cmp = icmp ult i32 %shr, 15
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 135. InstSimplifyPass

----------------------------------------
define i1 @exact_lshr_ugt_false(i32 %a) {
#0:
  %shr = lshr exact i32 30, %a
  %cmp = icmp ult i32 %shr, 15
  ret i1 %cmp
}
=>
define i1 @exact_lshr_ugt_false(i32 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 136. PassManager<Function> : Skipping NOP
-- 137. PassManager<Function> : Skipping NOP
-- 138. InstSimplifyPass

----------------------------------------
define <2 x i1> @exact_lshr_ugt_false_vec(<2 x i32> %a) {
#0:
  %shr = lshr exact <2 x i32> { 30, 30 }, %a
  %cmp = icmp ult <2 x i32> %shr, { 15, 15 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 139. InstSimplifyPass

----------------------------------------
define <2 x i1> @exact_lshr_ugt_false_vec(<2 x i32> %a) {
#0:
  %shr = lshr exact <2 x i32> { 30, 30 }, %a
  %cmp = icmp ult <2 x i32> %shr, { 15, 15 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @exact_lshr_ugt_false_vec(<2 x i32> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 140. PassManager<Function> : Skipping NOP
-- 141. PassManager<Function> : Skipping NOP
-- 142. InstSimplifyPass

----------------------------------------
define i1 @lshr_sgt_false(i32 %a) {
#0:
  %shr = lshr i32 1, %a
  %cmp = icmp sgt i32 %shr, 1
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 143. InstSimplifyPass

----------------------------------------
define i1 @lshr_sgt_false(i32 %a) {
#0:
  %shr = lshr i32 1, %a
  %cmp = icmp sgt i32 %shr, 1
  ret i1 %cmp
}
=>
define i1 @lshr_sgt_false(i32 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 144. PassManager<Function> : Skipping NOP
-- 145. PassManager<Function> : Skipping NOP
-- 146. InstSimplifyPass

----------------------------------------
define <2 x i1> @lshr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = lshr <2 x i32> { 1, 1 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 1, 1 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 147. InstSimplifyPass

----------------------------------------
define <2 x i1> @lshr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = lshr <2 x i32> { 1, 1 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 1, 1 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @lshr_sgt_false_vec(<2 x i32> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 148. PassManager<Function> : Skipping NOP
-- 149. PassManager<Function> : Skipping NOP
-- 150. InstSimplifyPass

----------------------------------------
define i1 @ashr2(i32 %x) {
#0:
  %s = ashr i32 %x, 30
  %c = icmp slt i32 %s, 4294967291
  ret i1 %c
}
Transformation seems to be correct! (syntactically equal)

-- 151. InstSimplifyPass

----------------------------------------
define i1 @ashr2(i32 %x) {
#0:
  %s = ashr i32 %x, 30
  %c = icmp slt i32 %s, 4294967291
  ret i1 %c
}
=>
define i1 @ashr2(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 152. PassManager<Function> : Skipping NOP
-- 153. PassManager<Function> : Skipping NOP
-- 154. InstSimplifyPass

----------------------------------------
define <2 x i1> @ashr2_vec(<2 x i32> %x) {
#0:
  %s = ashr <2 x i32> %x, { 30, 30 }
  %c = icmp slt <2 x i32> %s, { 4294967291, 4294967291 }
  ret <2 x i1> %c
}
Transformation seems to be correct! (syntactically equal)

-- 155. InstSimplifyPass

----------------------------------------
define <2 x i1> @ashr2_vec(<2 x i32> %x) {
#0:
  %s = ashr <2 x i32> %x, { 30, 30 }
  %c = icmp slt <2 x i32> %s, { 4294967291, 4294967291 }
  ret <2 x i1> %c
}
=>
define <2 x i1> @ashr2_vec(<2 x i32> %x) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 156. PassManager<Function> : Skipping NOP
-- 157. PassManager<Function> : Skipping NOP
-- 158. InstSimplifyPass

----------------------------------------
define i1 @ashr_sgt_false(i32 %a) {
#0:
  %shr = ashr i32 4294967266, %a
  %cmp = icmp sgt i32 %shr, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 159. InstSimplifyPass

----------------------------------------
define i1 @ashr_sgt_false(i32 %a) {
#0:
  %shr = ashr i32 4294967266, %a
  %cmp = icmp sgt i32 %shr, 4294967295
  ret i1 %cmp
}
=>
define i1 @ashr_sgt_false(i32 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 160. PassManager<Function> : Skipping NOP
-- 161. PassManager<Function> : Skipping NOP
-- 162. InstSimplifyPass

----------------------------------------
define <2 x i1> @ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = ashr <2 x i32> { 4294967266, 4294967266 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 4294967295, 4294967295 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 163. InstSimplifyPass

----------------------------------------
define <2 x i1> @ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = ashr <2 x i32> { 4294967266, 4294967266 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 4294967295, 4294967295 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 164. PassManager<Function> : Skipping NOP
-- 165. PassManager<Function> : Skipping NOP
-- 166. InstSimplifyPass

----------------------------------------
define i1 @exact_ashr_sgt_false(i32 %a) {
#0:
  %shr = ashr exact i32 4294967266, %a
  %cmp = icmp sgt i32 %shr, 4294967281
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 167. InstSimplifyPass

----------------------------------------
define i1 @exact_ashr_sgt_false(i32 %a) {
#0:
  %shr = ashr exact i32 4294967266, %a
  %cmp = icmp sgt i32 %shr, 4294967281
  ret i1 %cmp
}
=>
define i1 @exact_ashr_sgt_false(i32 %a) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 168. PassManager<Function> : Skipping NOP
-- 169. PassManager<Function> : Skipping NOP
-- 170. InstSimplifyPass

----------------------------------------
define <2 x i1> @exact_ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = ashr exact <2 x i32> { 4294967266, 4294967266 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 4294967281, 4294967281 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 171. InstSimplifyPass

----------------------------------------
define <2 x i1> @exact_ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  %shr = ashr exact <2 x i32> { 4294967266, 4294967266 }, %a
  %cmp = icmp sgt <2 x i32> %shr, { 4294967281, 4294967281 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @exact_ashr_sgt_false_vec(<2 x i32> %a) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 172. PassManager<Function> : Skipping NOP
-- 173. PassManager<Function> : Skipping NOP
-- 174. InstSimplifyPass

----------------------------------------
define i1 @or1(i32 %X) {
#0:
  %A = or i32 %X, 62
  %B = icmp ult i32 %A, 50
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 175. InstSimplifyPass

----------------------------------------
define i1 @or1(i32 %X) {
#0:
  %A = or i32 %X, 62
  %B = icmp ult i32 %A, 50
  ret i1 %B
}
=>
define i1 @or1(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 176. PassManager<Function> : Skipping NOP
-- 177. PassManager<Function> : Skipping NOP
-- 178. InstSimplifyPass

----------------------------------------
define <2 x i1> @or1_vec(<2 x i32> %X) {
#0:
  %A = or <2 x i32> %X, { 62, 62 }
  %B = icmp ult <2 x i32> %A, { 50, 50 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 179. InstSimplifyPass

----------------------------------------
define <2 x i1> @or1_vec(<2 x i32> %X) {
#0:
  %A = or <2 x i32> %X, { 62, 62 }
  %B = icmp ult <2 x i32> %A, { 50, 50 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @or1_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 180. PassManager<Function> : Skipping NOP
-- 181. PassManager<Function> : Skipping NOP
-- 182. InstSimplifyPass

----------------------------------------
define <2 x i1> @or1_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = or <2 x i32> %X, { 62, 62 }
  %B = icmp ult <2 x i32> %A, { undef, 50 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 183. InstSimplifyPass

----------------------------------------
define <2 x i1> @or1_vec_partial_undef(<2 x i32> %X) {
#0:
  %A = or <2 x i32> %X, { 62, 62 }
  %B = icmp ult <2 x i32> %A, { undef, 50 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @or1_vec_partial_undef(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 184. PassManager<Function> : Skipping NOP
-- 185. PassManager<Function> : Skipping NOP
-- 186. InstSimplifyPass

----------------------------------------
define i1 @or2_true(i8 %x) {
#0:
  %y = or i8 %x, 64
  %z = icmp sge i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 187. InstSimplifyPass

----------------------------------------
define i1 @or2_true(i8 %x) {
#0:
  %y = or i8 %x, 64
  %z = icmp sge i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 188. PassManager<Function> : Skipping NOP
-- 189. PassManager<Function> : Skipping NOP
-- 190. InstSimplifyPass

----------------------------------------
define i1 @or2_unknown(i8 %x) {
#0:
  %y = or i8 %x, 64
  %z = icmp sgt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 191. InstSimplifyPass

----------------------------------------
define i1 @or2_unknown(i8 %x) {
#0:
  %y = or i8 %x, 64
  %z = icmp sgt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 192. PassManager<Function> : Skipping NOP
-- 193. PassManager<Function> : Skipping NOP
-- 194. InstSimplifyPass

----------------------------------------
define i1 @or3_true(i8 %x) {
#0:
  %y = or i8 %x, 78
  %z = icmp sge i8 %y, 206
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 195. InstSimplifyPass

----------------------------------------
define i1 @or3_true(i8 %x) {
#0:
  %y = or i8 %x, 78
  %z = icmp sge i8 %y, 206
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 196. PassManager<Function> : Skipping NOP
-- 197. PassManager<Function> : Skipping NOP
-- 198. InstSimplifyPass

----------------------------------------
define i1 @or3_unknown(i8 %x) {
#0:
  %y = or i8 %x, 78
  %z = icmp sgt i8 %y, 206
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 199. InstSimplifyPass

----------------------------------------
define i1 @or3_unknown(i8 %x) {
#0:
  %y = or i8 %x, 78
  %z = icmp sgt i8 %y, 206
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 200. PassManager<Function> : Skipping NOP
-- 201. PassManager<Function> : Skipping NOP
-- 202. InstSimplifyPass

----------------------------------------
define i1 @or4_true(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp sge i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 203. InstSimplifyPass

----------------------------------------
define i1 @or4_true(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp sge i8 %y, 192
  ret i1 %z
}
=>
define i1 @or4_true(i8 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 204. PassManager<Function> : Skipping NOP
-- 205. PassManager<Function> : Skipping NOP
-- 206. InstSimplifyPass

----------------------------------------
define i1 @or4_unknown(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp sgt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 207. InstSimplifyPass

----------------------------------------
define i1 @or4_unknown(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp sgt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 208. PassManager<Function> : Skipping NOP
-- 209. PassManager<Function> : Skipping NOP
-- 210. InstSimplifyPass

----------------------------------------
define i1 @or5_true(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp uge i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 211. InstSimplifyPass

----------------------------------------
define i1 @or5_true(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp uge i8 %y, 192
  ret i1 %z
}
=>
define i1 @or5_true(i8 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 212. PassManager<Function> : Skipping NOP
-- 213. PassManager<Function> : Skipping NOP
-- 214. InstSimplifyPass

----------------------------------------
define i1 @or5_unknown(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp ugt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 215. InstSimplifyPass

----------------------------------------
define i1 @or5_unknown(i8 %x) {
#0:
  %y = or i8 %x, 192
  %z = icmp ugt i8 %y, 192
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 216. PassManager<Function> : Skipping NOP
-- 217. PassManager<Function> : Skipping NOP
-- 218. InstSimplifyPass

----------------------------------------
define i1 @and1(i32 %X) {
#0:
  %A = and i32 %X, 62
  %B = icmp ugt i32 %A, 70
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 219. InstSimplifyPass

----------------------------------------
define i1 @and1(i32 %X) {
#0:
  %A = and i32 %X, 62
  %B = icmp ugt i32 %A, 70
  ret i1 %B
}
=>
define i1 @and1(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 220. PassManager<Function> : Skipping NOP
-- 221. PassManager<Function> : Skipping NOP
-- 222. InstSimplifyPass

----------------------------------------
define <2 x i1> @and1_vec(<2 x i32> %X) {
#0:
  %A = and <2 x i32> %X, { 62, 62 }
  %B = icmp ugt <2 x i32> %A, { 70, 70 }
  ret <2 x i1> %B
}
Transformation seems to be correct! (syntactically equal)

-- 223. InstSimplifyPass

----------------------------------------
define <2 x i1> @and1_vec(<2 x i32> %X) {
#0:
  %A = and <2 x i32> %X, { 62, 62 }
  %B = icmp ugt <2 x i32> %A, { 70, 70 }
  ret <2 x i1> %B
}
=>
define <2 x i1> @and1_vec(<2 x i32> %X) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 224. PassManager<Function> : Skipping NOP
-- 225. PassManager<Function> : Skipping NOP
-- 226. InstSimplifyPass

----------------------------------------
define i1 @and2(i32 %X) {
#0:
  %A = and i32 %X, 62
  %B = icmp sgt i32 %A, 70
  ret i1 %B
}
Transformation seems to be correct! (syntactically equal)

-- 227. InstSimplifyPass

----------------------------------------
define i1 @and2(i32 %X) {
#0:
  %A = and i32 %X, 62
  %B = icmp sgt i32 %A, 70
  ret i1 %B
}
=>
define i1 @and2(i32 %X) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 228. PassManager<Function> : Skipping NOP
-- 229. PassManager<Function> : Skipping NOP
-- 230. InstSimplifyPass

----------------------------------------
define i1 @and3_true1(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sge i8 %y, 181
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 231. InstSimplifyPass

----------------------------------------
define i1 @and3_true1(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sge i8 %y, 181
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 232. PassManager<Function> : Skipping NOP
-- 233. PassManager<Function> : Skipping NOP
-- 234. InstSimplifyPass

----------------------------------------
define i1 @and3_unknown1(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sgt i8 %y, 181
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 235. InstSimplifyPass

----------------------------------------
define i1 @and3_unknown1(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sgt i8 %y, 181
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 236. PassManager<Function> : Skipping NOP
-- 237. PassManager<Function> : Skipping NOP
-- 238. InstSimplifyPass

----------------------------------------
define i1 @and3_true2(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sle i8 %y, 53
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 239. InstSimplifyPass

----------------------------------------
define i1 @and3_true2(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp sle i8 %y, 53
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 240. PassManager<Function> : Skipping NOP
-- 241. PassManager<Function> : Skipping NOP
-- 242. InstSimplifyPass

----------------------------------------
define i1 @and3_unknown2(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp slt i8 %y, 53
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 243. InstSimplifyPass

----------------------------------------
define i1 @and3_unknown2(i8 %x) {
#0:
  %y = and i8 %x, 181
  %z = icmp slt i8 %y, 53
  ret i1 %z
}
Transformation seems to be correct! (syntactically equal)

-- 244. PassManager<Function> : Skipping NOP
-- 245. PassManager<Function> : Skipping NOP
-- 246. InstSimplifyPass

----------------------------------------
define i1 @tautological9(i32 %x) {
#0:
  %add = add nuw i32 %x, 13
  %cmp = icmp ne i32 %add, 12
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 247. InstSimplifyPass

----------------------------------------
define i1 @tautological9(i32 %x) {
#0:
  %add = add nuw i32 %x, 13
  %cmp = icmp ne i32 %add, 12
  ret i1 %cmp
}
=>
define i1 @tautological9(i32 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 248. PassManager<Function> : Skipping NOP
-- 249. PassManager<Function> : Skipping NOP
-- 250. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological9_vec(<2 x i32> %x) {
#0:
  %add = add nuw <2 x i32> %x, { 13, 13 }
  %cmp = icmp ne <2 x i32> %add, { 12, 12 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 251. InstSimplifyPass

----------------------------------------
define <2 x i1> @tautological9_vec(<2 x i32> %x) {
#0:
  %add = add nuw <2 x i32> %x, { 13, 13 }
  %cmp = icmp ne <2 x i32> %add, { 12, 12 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @tautological9_vec(<2 x i32> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 252. PassManager<Function> : Skipping NOP
-- 253. PassManager<Function> : Skipping NOP
-- 254. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const1(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483649
  %cmp = icmp sgt i32 %add, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 255. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const1(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483649
  %cmp = icmp sgt i32 %add, 0
  ret i1 %cmp
}
=>
define i1 @add_nsw_neg_const1(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 256. PassManager<Function> : Skipping NOP
-- 257. PassManager<Function> : Skipping NOP
-- 258. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_sgt(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 259. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_sgt(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
=>
define i1 @add_nsw_sgt(i8 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 260. PassManager<Function> : Skipping NOP
-- 261. PassManager<Function> : Skipping NOP
-- 262. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_nuw_sgt(i8 %x) {
#0:
  %add = add nsw nuw i8 %x, 5
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 263. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_nuw_sgt(i8 %x) {
#0:
  %add = add nsw nuw i8 %x, 5
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
=>
define i1 @add_nsw_nuw_sgt(i8 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 264. PassManager<Function> : Skipping NOP
-- 265. PassManager<Function> : Skipping NOP
-- 266. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_sgt_limit(i8 %x) {
#0:
  %add = add nsw i8 %x, 4
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 267. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_sgt_limit(i8 %x) {
#0:
  %add = add nsw i8 %x, 4
  %cmp = icmp sgt i8 %add, 132
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 268. PassManager<Function> : Skipping NOP
-- 269. PassManager<Function> : Skipping NOP
-- 270. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_slt(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp slt i8 %add, 133
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 271. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_slt(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp slt i8 %add, 133
  ret i1 %cmp
}
=>
define i1 @add_nsw_slt(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 272. PassManager<Function> : Skipping NOP
-- 273. PassManager<Function> : Skipping NOP
-- 274. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_nuw_slt(i8 %x) {
#0:
  %add = add nsw nuw i8 %x, 5
  %cmp = icmp slt i8 %add, 133
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 275. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_nuw_slt(i8 %x) {
#0:
  %add = add nsw nuw i8 %x, 5
  %cmp = icmp slt i8 %add, 133
  ret i1 %cmp
}
=>
define i1 @add_nsw_nuw_slt(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 276. PassManager<Function> : Skipping NOP
-- 277. PassManager<Function> : Skipping NOP
-- 278. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_slt_limit(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp slt i8 %add, 134
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 279. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_slt_limit(i8 %x) {
#0:
  %add = add nsw i8 %x, 5
  %cmp = icmp slt i8 %add, 134
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 280. PassManager<Function> : Skipping NOP
-- 281. PassManager<Function> : Skipping NOP
-- 282. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const2(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483649
  %cmp = icmp sgt i32 %add, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 283. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const2(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483649
  %cmp = icmp sgt i32 %add, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 284. PassManager<Function> : Skipping NOP
-- 285. PassManager<Function> : Skipping NOP
-- 286. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const3(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483650
  %cmp = icmp sgt i32 %add, 1
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 287. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const3(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483650
  %cmp = icmp sgt i32 %add, 1
  ret i1 %cmp
}
=>
define i1 @add_nsw_neg_const3(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 288. PassManager<Function> : Skipping NOP
-- 289. PassManager<Function> : Skipping NOP
-- 290. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const4(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483650
  %cmp = icmp sgt i32 %add, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 291. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const4(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483650
  %cmp = icmp sgt i32 %add, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 292. PassManager<Function> : Skipping NOP
-- 293. PassManager<Function> : Skipping NOP
-- 294. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const5(i32 %x) {
#0:
  %add = add nsw i32 %x, 4294967254
  %cmp = icmp ne i32 %add, 2147483606
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 295. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const5(i32 %x) {
#0:
  %add = add nsw i32 %x, 4294967254
  %cmp = icmp ne i32 %add, 2147483606
  ret i1 %cmp
}
=>
define i1 @add_nsw_neg_const5(i32 %x) {
#0:
  ret i1 1
}
Transformation seems to be correct!

-- 296. PassManager<Function> : Skipping NOP
-- 297. PassManager<Function> : Skipping NOP
-- 298. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const6(i32 %x) {
#0:
  %add = add nsw i32 %x, 4294967254
  %cmp = icmp ne i32 %add, 2147483605
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 299. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_neg_const6(i32 %x) {
#0:
  %add = add nsw i32 %x, 4294967254
  %cmp = icmp ne i32 %add, 2147483605
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 300. PassManager<Function> : Skipping NOP
-- 301. PassManager<Function> : Skipping NOP
-- 302. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const1(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483647
  %cmp = icmp slt i32 %add, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 303. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const1(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483647
  %cmp = icmp slt i32 %add, 4294967295
  ret i1 %cmp
}
=>
define i1 @add_nsw_pos_const1(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 304. PassManager<Function> : Skipping NOP
-- 305. PassManager<Function> : Skipping NOP
-- 306. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const2(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483647
  %cmp = icmp slt i32 %add, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 307. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const2(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483647
  %cmp = icmp slt i32 %add, 0
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 308. PassManager<Function> : Skipping NOP
-- 309. PassManager<Function> : Skipping NOP
-- 310. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const3(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483646
  %cmp = icmp slt i32 %add, 4294967294
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 311. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const3(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483646
  %cmp = icmp slt i32 %add, 4294967294
  ret i1 %cmp
}
=>
define i1 @add_nsw_pos_const3(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 312. PassManager<Function> : Skipping NOP
-- 313. PassManager<Function> : Skipping NOP
-- 314. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const4(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483646
  %cmp = icmp slt i32 %add, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 315. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const4(i32 %x) {
#0:
  %add = add nsw i32 %x, 2147483646
  %cmp = icmp slt i32 %add, 4294967295
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 316. PassManager<Function> : Skipping NOP
-- 317. PassManager<Function> : Skipping NOP
-- 318. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const5(i32 %x) {
#0:
  %add = add nsw i32 %x, 42
  %cmp = icmp eq i32 %add, 2147483689
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 319. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const5(i32 %x) {
#0:
  %add = add nsw i32 %x, 42
  %cmp = icmp eq i32 %add, 2147483689
  ret i1 %cmp
}
=>
define i1 @add_nsw_pos_const5(i32 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 320. PassManager<Function> : Skipping NOP
-- 321. PassManager<Function> : Skipping NOP
-- 322. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const6(i32 %x) {
#0:
  %add = add nsw i32 %x, 42
  %cmp = icmp eq i32 %add, 2147483690
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 323. InstSimplifyPass

----------------------------------------
define i1 @add_nsw_pos_const6(i32 %x) {
#0:
  %add = add nsw i32 %x, 42
  %cmp = icmp eq i32 %add, 2147483690
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 324. PassManager<Function> : Skipping NOP
-- 325. PassManager<Function> : Skipping NOP
-- 326. InstSimplifyPass

----------------------------------------
define <2 x i1> @add_nsw_pos_const5_splat_vec(<2 x i32> %x) {
#0:
  %add = add nsw <2 x i32> %x, { 42, 42 }
  %cmp = icmp ne <2 x i32> %add, { 2147483689, 2147483689 }
  ret <2 x i1> %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 327. InstSimplifyPass

----------------------------------------
define <2 x i1> @add_nsw_pos_const5_splat_vec(<2 x i32> %x) {
#0:
  %add = add nsw <2 x i32> %x, { 42, 42 }
  %cmp = icmp ne <2 x i32> %add, { 2147483689, 2147483689 }
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @add_nsw_pos_const5_splat_vec(<2 x i32> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 328. PassManager<Function> : Skipping NOP
-- 329. PassManager<Function> : Skipping NOP
-- 330. InstSimplifyPass

----------------------------------------
define i1 @ne_shl_by_constant_produces_poison(i8 %x) {
#0:
  %zx = zext i8 %x to i16
  %xor = xor i16 %zx, 32767
  %sub = sub nsw i16 %zx, %xor
  %poison = shl nsw i16 %sub, 2
  %cmp = icmp ne i16 %poison, 1
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 331. InstSimplifyPass

----------------------------------------
define i1 @ne_shl_by_constant_produces_poison(i8 %x) {
#0:
  %zx = zext i8 %x to i16
  %xor = xor i16 %zx, 32767
  %sub = sub nsw i16 %zx, %xor
  %poison = shl nsw i16 %sub, 2
  %cmp = icmp ne i16 %poison, 1
  ret i1 %cmp
}
=>
define i1 @ne_shl_by_constant_produces_poison(i8 %x) {
#0:
  ret i1 poison
}
Transformation seems to be correct!

-- 332. PassManager<Function> : Skipping NOP
-- 333. PassManager<Function> : Skipping NOP
-- 334. InstSimplifyPass

----------------------------------------
define i1 @eq_shl_by_constant_produces_poison(i8 %x) {
#0:
  %clear_high_bit = and i8 %x, 127
  %set_next_high_bits = or i8 %clear_high_bit, 112
  %poison = shl nsw i8 %set_next_high_bits, 3
  %cmp = icmp eq i8 %poison, 15
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 335. InstSimplifyPass

----------------------------------------
define i1 @eq_shl_by_constant_produces_poison(i8 %x) {
#0:
  %clear_high_bit = and i8 %x, 127
  %set_next_high_bits = or i8 %clear_high_bit, 112
  %poison = shl nsw i8 %set_next_high_bits, 3
  %cmp = icmp eq i8 %poison, 15
  ret i1 %cmp
}
=>
define i1 @eq_shl_by_constant_produces_poison(i8 %x) {
#0:
  ret i1 poison
}
Transformation seems to be correct!

-- 336. PassManager<Function> : Skipping NOP
-- 337. PassManager<Function> : Skipping NOP
-- 338. InstSimplifyPass

----------------------------------------
define i1 @eq_shl_by_variable_produces_poison(i8 %x) {
#0:
  %clear_high_bit = and i8 %x, 127
  %set_next_high_bits = or i8 %clear_high_bit, 112
  %notundef_shiftamt = and i8 %x, 3
  %nonzero_shiftamt = or i8 %notundef_shiftamt, 1
  %poison = shl nsw i8 %set_next_high_bits, %nonzero_shiftamt
  %cmp = icmp eq i8 %poison, 15
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 339. InstSimplifyPass

----------------------------------------
define i1 @eq_shl_by_variable_produces_poison(i8 %x) {
#0:
  %clear_high_bit = and i8 %x, 127
  %set_next_high_bits = or i8 %clear_high_bit, 112
  %notundef_shiftamt = and i8 %x, 3
  %nonzero_shiftamt = or i8 %notundef_shiftamt, 1
  %poison = shl nsw i8 %set_next_high_bits, %nonzero_shiftamt
  %cmp = icmp eq i8 %poison, 15
  ret i1 %cmp
}
=>
define i1 @eq_shl_by_variable_produces_poison(i8 %x) {
#0:
  ret i1 poison
}
Transformation seems to be correct!

-- 340. PassManager<Function> : Skipping NOP
-- 341. PassManager<Function> : Skipping NOP
-- 342. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant1(i8 %x) {
#0:
  %m = mul nuw i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 343. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant1(i8 %x) {
#0:
  %m = mul nuw i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
=>
define i1 @mul_nuw_urem_cmp_constant1(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 344. PassManager<Function> : Skipping NOP
-- 345. PassManager<Function> : Skipping NOP
-- 346. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 347. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 348. PassManager<Function> : Skipping NOP
-- 349. PassManager<Function> : Skipping NOP
-- 350. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, undef }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 351. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, undef }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 352. PassManager<Function> : Skipping NOP
-- 353. PassManager<Function> : Skipping NOP
-- 354. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { undef, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 355. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  %m = mul nuw <2 x i8> %x, { undef, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nuw_urem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 356. PassManager<Function> : Skipping NOP
-- 357. PassManager<Function> : Skipping NOP
-- 358. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant2(i8 %x) {
#0:
  %m = mul nuw i8 %x, 214
  %r = icmp eq i8 %m, 172
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 359. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant2(i8 %x) {
#0:
  %m = mul nuw i8 %x, 214
  %r = icmp eq i8 %m, 172
  ret i1 %r
}
=>
define i1 @mul_nuw_urem_cmp_constant2(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 360. PassManager<Function> : Skipping NOP
-- 361. PassManager<Function> : Skipping NOP
-- 362. InstSimplifyPass

----------------------------------------
define i1 @mul_urem_cmp_constant1(i8 %x) {
#0:
  %m = mul i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 363. InstSimplifyPass

----------------------------------------
define i1 @mul_urem_cmp_constant1(i8 %x) {
#0:
  %m = mul i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 364. PassManager<Function> : Skipping NOP
-- 365. PassManager<Function> : Skipping NOP
-- 366. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 23
  %r = icmp eq i8 %m, 0
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 367. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 23
  %r = icmp eq i8 %m, 0
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 368. PassManager<Function> : Skipping NOP
-- 369. PassManager<Function> : Skipping NOP
-- 370. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant_is_0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 42
  %r = icmp eq i8 %m, 84
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 371. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_constant_is_0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 42
  %r = icmp eq i8 %m, 84
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 372. PassManager<Function> : Skipping NOP
-- 373. PassManager<Function> : Skipping NOP
-- 374. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_neg_constant_is_0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 43
  %r = icmp eq i8 %m, 129
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 375. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_urem_cmp_neg_constant_is_0(i8 %x) {
#0:
  %m = mul nuw i8 %x, 43
  %r = icmp eq i8 %m, 129
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 376. PassManager<Function> : Skipping NOP
-- 377. PassManager<Function> : Skipping NOP
-- 378. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant1(i8 %x) {
#0:
  %m = mul nsw i8 %x, 43
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 379. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant1(i8 %x) {
#0:
  %m = mul nsw i8 %x, 43
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
=>
define i1 @mul_nsw_srem_cmp_constant1(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 380. PassManager<Function> : Skipping NOP
-- 381. PassManager<Function> : Skipping NOP
-- 382. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 383. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 384. PassManager<Function> : Skipping NOP
-- 385. PassManager<Function> : Skipping NOP
-- 386. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, undef }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 387. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { 45, 45 }
  %r = icmp ne <2 x i8> %m, { 15, undef }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef1(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 388. PassManager<Function> : Skipping NOP
-- 389. PassManager<Function> : Skipping NOP
-- 390. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { undef, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
Transformation seems to be correct! (syntactically equal)

-- 391. InstSimplifyPass

----------------------------------------
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  %m = mul nsw <2 x i8> %x, { undef, 45 }
  %r = icmp ne <2 x i8> %m, { 15, 15 }
  ret <2 x i1> %r
}
=>
define <2 x i1> @mul_nsw_srem_cmp_constant_vec_splat_undef2(<2 x i8> %x) {
#0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!

-- 392. PassManager<Function> : Skipping NOP
-- 393. PassManager<Function> : Skipping NOP
-- 394. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant2(i8 %x) {
#0:
  %m = mul nsw i8 %x, 43
  %r = icmp eq i8 %m, 129
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 395. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant2(i8 %x) {
#0:
  %m = mul nsw i8 %x, 43
  %r = icmp eq i8 %m, 129
  ret i1 %r
}
=>
define i1 @mul_nsw_srem_cmp_constant2(i8 %x) {
#0:
  ret i1 0
}
Transformation seems to be correct!

-- 396. PassManager<Function> : Skipping NOP
-- 397. PassManager<Function> : Skipping NOP
-- 398. InstSimplifyPass

----------------------------------------
define i1 @mul_srem_cmp_constant1(i8 %x) {
#0:
  %m = mul i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 399. InstSimplifyPass

----------------------------------------
define i1 @mul_srem_cmp_constant1(i8 %x) {
#0:
  %m = mul i8 %x, 43
  %r = icmp eq i8 %m, 42
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 400. PassManager<Function> : Skipping NOP
-- 401. PassManager<Function> : Skipping NOP
-- 402. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 23
  %r = icmp eq i8 %m, 0
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 403. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 23
  %r = icmp eq i8 %m, 0
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 404. PassManager<Function> : Skipping NOP
-- 405. PassManager<Function> : Skipping NOP
-- 406. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant_is_0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 42
  %r = icmp eq i8 %m, 84
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 407. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_constant_is_0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 42
  %r = icmp eq i8 %m, 84
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 408. PassManager<Function> : Skipping NOP
-- 409. PassManager<Function> : Skipping NOP
-- 410. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_neg_constant_is_0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 214
  %r = icmp eq i8 %m, 172
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 411. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_srem_cmp_neg_constant_is_0(i8 %x) {
#0:
  %m = mul nsw i8 %x, 214
  %r = icmp eq i8 %m, 172
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 412. PassManager<Function> : Skipping NOP
-- 413. PassManager<Function> : Skipping NOP
-- 414. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  %m = mul nsw i8 %x, 0
  br label %bb2

bb2:
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 415. InstSimplifyPass

----------------------------------------
define i1 @mul_nsw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  %m = mul nsw i8 %x, 0
  br label %bb2

bb2:
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
=>
define i1 @mul_nsw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  br label %bb2

bb2:
  ret i1 0
}
Transformation seems to be correct!

-- 416. PassManager<Function> : Skipping NOP
-- 417. PassManager<Function> : Skipping NOP
-- 418. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  %m = mul nuw i8 %x, 0
  br label %bb2

bb2:
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
Transformation seems to be correct! (syntactically equal)

-- 419. InstSimplifyPass

----------------------------------------
define i1 @mul_nuw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  %m = mul nuw i8 %x, 0
  br label %bb2

bb2:
  %r = icmp eq i8 %m, 45
  ret i1 %r
}
=>
define i1 @mul_nuw_by_zero(i8 %x) {
bb1:
  br label %bb3

bb3:
  br label %bb2

bb2:
  ret i1 0
}
Transformation seems to be correct!

-- 420. PassManager<Function> : Skipping NOP
-- 421. PassManager<Function> : Skipping NOP
-- 422. InstSimplifyPass

----------------------------------------
define <2 x i1> @heterogeneous_constvector(<2 x i8> %x) {
#0:
  %c = icmp ult <2 x i8> %x, { undef, poison }
  ret <2 x i1> %c
}
Transformation seems to be correct! (syntactically equal)

-- 423. InstSimplifyPass

----------------------------------------
define <2 x i1> @heterogeneous_constvector(<2 x i8> %x) {
#0:
  %c = icmp ult <2 x i8> %x, { undef, poison }
  ret <2 x i1> %c
}
=>
define <2 x i1> @heterogeneous_constvector(<2 x i8> %x) {
#0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!

-- 424. PassManager<Function> : Skipping NOP
-- 425. PassManager<Function> : Skipping NOP
-- 426. InstSimplifyPass

----------------------------------------
define i1 @icmp_eq_constant_range_attr(i8 %i) {
#0:
  %cmp = icmp eq i8 %i, 10
  ret i1 %cmp
}
Transformation seems to be correct! (syntactically equal)

-- 427. InstSimplifyPass

----------------------------------------
define i1 @icmp_eq_constant_range_attr(i8 %i) {
#0:
  %cmp = icmp eq i8 %i, 10
  ret i1 %cmp
}
=>
define i1 @icmp_eq_constant_range_attr(i8 %i) {
#0:
  ret i1 0
}
Transformation doesn't verify! (unsound)
ERROR: Value mismatch

Example:
i8 %i = #x0a (10)

Source:
i1 %cmp = #x1 (1)

Target:
Source value: #x1 (1)
Target value: #x0 (0)

Pass: InstSimplifyPass
Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-passes=instsimplify' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_pOHyhzMB_P60I.bc"


------------------- SMT STATS -------------------
Num queries: 237
Num invalid: 0
Num skips:   0
Num trivial: 418 (63.8%)
Num timeout: 0 (0.0%)
Num errors:  0 (0.0%)
Num SAT:     166 (70.0%)
Num UNSAT:   71 (30.0%)
Alive2: Transform doesn't verify; aborting!

stderr:

RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/icmp-constant.ll -passes=instsimplify -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/icmp-constant.ll
+ /home/nlopes/alive2/build/opt-alive.sh -passes=instsimplify -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/icmp-constant.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstSimplify/icmp-constant.ll

 

<-- Back