Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. InstCombinePass ---------------------------------------- define i32 @and_to_xor1(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %or, %not ret i32 %and2 } Transformation seems to be correct! (syntactically equal) -- 3. InstCombinePass ---------------------------------------- define i32 @and_to_xor1(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %or, %not ret i32 %and2 } => define i32 @and_to_xor1(i32 %a, i32 %b) { #0: %and2 = xor i32 %a, %b ret i32 %and2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. InstCombinePass ---------------------------------------- define i32 @and_to_xor2(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %not, %or ret i32 %and2 } Transformation seems to be correct! (syntactically equal) -- 7. InstCombinePass ---------------------------------------- define i32 @and_to_xor2(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %not, %or ret i32 %and2 } => define i32 @and_to_xor2(i32 %a, i32 %b) { #0: %and2 = xor i32 %a, %b ret i32 %and2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. InstCombinePass ---------------------------------------- define i32 @and_to_xor3(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %b, %a %not = xor i32 %and, 4294967295 %and2 = and i32 %or, %not ret i32 %and2 } Transformation seems to be correct! (syntactically equal) -- 11. InstCombinePass ---------------------------------------- define i32 @and_to_xor3(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %b, %a %not = xor i32 %and, 4294967295 %and2 = and i32 %or, %not ret i32 %and2 } => define i32 @and_to_xor3(i32 %a, i32 %b) { #0: %and2 = xor i32 %a, %b ret i32 %and2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. InstCombinePass ---------------------------------------- define i32 @and_to_xor4(i32 %a, i32 %b) { #0: %or = or i32 %b, %a %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %not, %or ret i32 %and2 } Transformation seems to be correct! (syntactically equal) -- 15. InstCombinePass ---------------------------------------- define i32 @and_to_xor4(i32 %a, i32 %b) { #0: %or = or i32 %b, %a %and = and i32 %a, %b %not = xor i32 %and, 4294967295 %and2 = and i32 %not, %or ret i32 %and2 } => define i32 @and_to_xor4(i32 %a, i32 %b) { #0: %and2 = xor i32 %b, %a ret i32 %and2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. InstCombinePass ---------------------------------------- define <4 x i32> @and_to_xor1_vec(<4 x i32> %a, <4 x i32> %b) { #0: %or = or <4 x i32> %a, %b %and = and <4 x i32> %a, %b %not = xor <4 x i32> %and, { 4294967295, 4294967295, 4294967295, 4294967295 } %and2 = and <4 x i32> %or, %not ret <4 x i32> %and2 } Transformation seems to be correct! (syntactically equal) -- 19. InstCombinePass ---------------------------------------- define <4 x i32> @and_to_xor1_vec(<4 x i32> %a, <4 x i32> %b) { #0: %or = or <4 x i32> %a, %b %and = and <4 x i32> %a, %b %not = xor <4 x i32> %and, { 4294967295, 4294967295, 4294967295, 4294967295 } %and2 = and <4 x i32> %or, %not ret <4 x i32> %and2 } => define <4 x i32> @and_to_xor1_vec(<4 x i32> %a, <4 x i32> %b) { #0: %and2 = xor <4 x i32> %a, %b ret <4 x i32> %and2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. InstCombinePass ---------------------------------------- define i32 @and_to_nxor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %and = and i32 %or1, %or2 ret i32 %and } Transformation seems to be correct! (syntactically equal) -- 23. InstCombinePass ---------------------------------------- define i32 @and_to_nxor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %and = and i32 %or1, %or2 ret i32 %and } => define i32 @and_to_nxor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %#1 = xor i32 %a, %b %and = xor i32 %#1, 4294967295 ret i32 %and } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. InstCombinePass ---------------------------------------- define i32 @and_to_nxor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %b, %nota %and = and i32 %or1, %or2 ret i32 %and } Transformation seems to be correct! (syntactically equal) -- 27. InstCombinePass ---------------------------------------- define i32 @and_to_nxor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %b, %nota %and = and i32 %or1, %or2 ret i32 %and } => define i32 @and_to_nxor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %#1 = xor i32 %a, %b %and = xor i32 %#1, 4294967295 ret i32 %and } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. InstCombinePass ---------------------------------------- define i32 @and_to_nxor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %a, %notb %and = and i32 %or1, %or2 ret i32 %and } Transformation seems to be correct! (syntactically equal) -- 31. InstCombinePass ---------------------------------------- define i32 @and_to_nxor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %a, %notb %and = and i32 %or1, %or2 ret i32 %and } => define i32 @and_to_nxor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %#1 = xor i32 %b, %a %and = xor i32 %#1, 4294967295 ret i32 %and } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 32. PassManager<Function> : Skipping NOP -- 33. PassManager<Function> : Skipping NOP -- 34. InstCombinePass ---------------------------------------- define i32 @and_to_nxor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %notb, %a %and = and i32 %or1, %or2 ret i32 %and } Transformation seems to be correct! (syntactically equal) -- 35. InstCombinePass ---------------------------------------- define i32 @and_to_nxor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %notb, %a %and = and i32 %or1, %or2 ret i32 %and } => define i32 @and_to_nxor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %#1 = xor i32 %b, %a %and = xor i32 %#1, 4294967295 ret i32 %and } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 36. PassManager<Function> : Skipping NOP -- 37. PassManager<Function> : Skipping NOP -- 38. InstCombinePass ---------------------------------------- define i32 @or_to_xor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %or = or i32 %and1, %and2 ret i32 %or } Transformation seems to be correct! (syntactically equal) -- 39. InstCombinePass ---------------------------------------- define i32 @or_to_xor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %or = or i32 %and1, %and2 ret i32 %or } => define i32 @or_to_xor1(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %or = xor i32 %a, %b ret i32 %or } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 40. PassManager<Function> : Skipping NOP -- 41. PassManager<Function> : Skipping NOP -- 42. InstCombinePass ---------------------------------------- define i32 @or_to_xor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %b, %nota %or = or i32 %and1, %and2 ret i32 %or } Transformation seems to be correct! (syntactically equal) -- 43. InstCombinePass ---------------------------------------- define i32 @or_to_xor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %b, %nota %or = or i32 %and1, %and2 ret i32 %or } => define i32 @or_to_xor2(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %or = xor i32 %a, %b ret i32 %or } Transformation seems to be correct! -- 44. PassManager<Function> : Skipping NOP -- 45. PassManager<Function> : Skipping NOP -- 46. InstCombinePass ---------------------------------------- define i32 @or_to_xor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %nota, %b %and2 = and i32 %notb, %a %or = or i32 %and1, %and2 ret i32 %or } Transformation seems to be correct! (syntactically equal) -- 47. InstCombinePass ---------------------------------------- define i32 @or_to_xor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %nota, %b %and2 = and i32 %notb, %a %or = or i32 %and1, %and2 ret i32 %or } => define i32 @or_to_xor3(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %or = xor i32 %b, %a ret i32 %or } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 48. PassManager<Function> : Skipping NOP -- 49. PassManager<Function> : Skipping NOP -- 50. InstCombinePass ---------------------------------------- define i32 @or_to_xor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %nota, %b %and2 = and i32 %a, %notb %or = or i32 %and1, %and2 ret i32 %or } Transformation seems to be correct! (syntactically equal) -- 51. InstCombinePass ---------------------------------------- define i32 @or_to_xor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %nota, %b %and2 = and i32 %a, %notb %or = or i32 %and1, %and2 ret i32 %or } => define i32 @or_to_xor4(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %or = xor i32 %b, %a ret i32 %or } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 52. PassManager<Function> : Skipping NOP -- 53. PassManager<Function> : Skipping NOP -- 54. InstCombinePass ---------------------------------------- define i32 @or_to_nxor1(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor ret i32 %or2 } Transformation seems to be correct! (syntactically equal) -- 55. InstCombinePass ---------------------------------------- define i32 @or_to_nxor1(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor ret i32 %or2 } => define i32 @or_to_nxor1(i32 %a, i32 %b) { #0: %#1 = xor i32 %a, %b %or2 = xor i32 %#1, 4294967295 ret i32 %or2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 56. PassManager<Function> : Skipping NOP -- 57. PassManager<Function> : Skipping NOP -- 58. InstCombinePass ---------------------------------------- define i32 @or_to_nxor2(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %b, %a %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor ret i32 %or2 } Transformation seems to be correct! (syntactically equal) -- 59. InstCombinePass ---------------------------------------- define i32 @or_to_nxor2(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %b, %a %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor ret i32 %or2 } => define i32 @or_to_nxor2(i32 %a, i32 %b) { #0: %#1 = xor i32 %a, %b %or2 = xor i32 %#1, 4294967295 ret i32 %or2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 60. PassManager<Function> : Skipping NOP -- 61. PassManager<Function> : Skipping NOP -- 62. InstCombinePass ---------------------------------------- define i32 @or_to_nxor3(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %notor, %and ret i32 %or2 } Transformation seems to be correct! (syntactically equal) -- 63. InstCombinePass ---------------------------------------- define i32 @or_to_nxor3(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %notor, %and ret i32 %or2 } => define i32 @or_to_nxor3(i32 %a, i32 %b) { #0: %#1 = xor i32 %a, %b %or2 = xor i32 %#1, 4294967295 ret i32 %or2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 64. PassManager<Function> : Skipping NOP -- 65. PassManager<Function> : Skipping NOP -- 66. InstCombinePass ---------------------------------------- define i32 @or_to_nxor4(i32 %a, i32 %b) { #0: %and = and i32 %b, %a %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %notor, %and ret i32 %or2 } Transformation seems to be correct! (syntactically equal) -- 67. InstCombinePass ---------------------------------------- define i32 @or_to_nxor4(i32 %a, i32 %b) { #0: %and = and i32 %b, %a %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %notor, %and ret i32 %or2 } => define i32 @or_to_nxor4(i32 %a, i32 %b) { #0: %#1 = xor i32 %b, %a %or2 = xor i32 %#1, 4294967295 ret i32 %or2 } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 68. PassManager<Function> : Skipping NOP -- 69. PassManager<Function> : Skipping NOP -- 70. InstCombinePass ---------------------------------------- define i32 @xor_to_xor1(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %xor = xor i32 %and, %or ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 71. InstCombinePass ---------------------------------------- define i32 @xor_to_xor1(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %xor = xor i32 %and, %or ret i32 %xor } => define i32 @xor_to_xor1(i32 %a, i32 %b) { #0: %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 72. PassManager<Function> : Skipping NOP -- 73. PassManager<Function> : Skipping NOP -- 74. InstCombinePass ---------------------------------------- define i32 @xor_to_xor2(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %b, %a %xor = xor i32 %and, %or ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 75. InstCombinePass ---------------------------------------- define i32 @xor_to_xor2(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %b, %a %xor = xor i32 %and, %or ret i32 %xor } => define i32 @xor_to_xor2(i32 %a, i32 %b) { #0: %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 76. PassManager<Function> : Skipping NOP -- 77. PassManager<Function> : Skipping NOP -- 78. InstCombinePass ---------------------------------------- define i32 @xor_to_xor3(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %xor = xor i32 %or, %and ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 79. InstCombinePass ---------------------------------------- define i32 @xor_to_xor3(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %a, %b %xor = xor i32 %or, %and ret i32 %xor } => define i32 @xor_to_xor3(i32 %a, i32 %b) { #0: %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 80. PassManager<Function> : Skipping NOP -- 81. PassManager<Function> : Skipping NOP -- 82. InstCombinePass ---------------------------------------- define i32 @xor_to_xor4(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %b, %a %xor = xor i32 %or, %and ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 83. InstCombinePass ---------------------------------------- define i32 @xor_to_xor4(i32 %a, i32 %b) { #0: %or = or i32 %a, %b %and = and i32 %b, %a %xor = xor i32 %or, %and ret i32 %xor } => define i32 @xor_to_xor4(i32 %a, i32 %b) { #0: %xor = xor i32 %b, %a ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 84. PassManager<Function> : Skipping NOP -- 85. PassManager<Function> : Skipping NOP -- 86. InstCombinePass ---------------------------------------- define i32 @xor_to_xor5(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %xor = xor i32 %or1, %or2 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 87. InstCombinePass ---------------------------------------- define i32 @xor_to_xor5(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %xor = xor i32 %or1, %or2 ret i32 %xor } => define i32 @xor_to_xor5(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 88. PassManager<Function> : Skipping NOP -- 89. PassManager<Function> : Skipping NOP -- 90. InstCombinePass ---------------------------------------- define i32 @xor_to_xor6(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %b, %nota %xor = xor i32 %or1, %or2 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 91. InstCombinePass ---------------------------------------- define i32 @xor_to_xor6(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %b, %nota %xor = xor i32 %or1, %or2 ret i32 %xor } => define i32 @xor_to_xor6(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 92. PassManager<Function> : Skipping NOP -- 93. PassManager<Function> : Skipping NOP -- 94. InstCombinePass ---------------------------------------- define i32 @xor_to_xor7(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %xor = xor i32 %or2, %or1 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 95. InstCombinePass ---------------------------------------- define i32 @xor_to_xor7(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %a, %notb %or2 = or i32 %nota, %b %xor = xor i32 %or2, %or1 ret i32 %xor } => define i32 @xor_to_xor7(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %b, %a ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 96. PassManager<Function> : Skipping NOP -- 97. PassManager<Function> : Skipping NOP -- 98. InstCombinePass ---------------------------------------- define i32 @xor_to_xor8(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %notb, %a %or2 = or i32 %nota, %b %xor = xor i32 %or2, %or1 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 99. InstCombinePass ---------------------------------------- define i32 @xor_to_xor8(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %notb, %a %or2 = or i32 %nota, %b %xor = xor i32 %or2, %or1 ret i32 %xor } => define i32 @xor_to_xor8(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %b, %a ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 100. PassManager<Function> : Skipping NOP -- 101. PassManager<Function> : Skipping NOP -- 102. InstCombinePass ---------------------------------------- define i32 @xor_to_xor9(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %xor = xor i32 %and1, %and2 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 103. InstCombinePass ---------------------------------------- define i32 @xor_to_xor9(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %xor = xor i32 %and1, %and2 ret i32 %xor } => define i32 @xor_to_xor9(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 104. PassManager<Function> : Skipping NOP -- 105. PassManager<Function> : Skipping NOP -- 106. InstCombinePass ---------------------------------------- define i32 @xor_to_xor10(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %b, %nota %xor = xor i32 %and1, %and2 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 107. InstCombinePass ---------------------------------------- define i32 @xor_to_xor10(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %b, %nota %xor = xor i32 %and1, %and2 ret i32 %xor } => define i32 @xor_to_xor10(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %a, %b ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 108. PassManager<Function> : Skipping NOP -- 109. PassManager<Function> : Skipping NOP -- 110. InstCombinePass ---------------------------------------- define i32 @xor_to_xor11(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %xor = xor i32 %and2, %and1 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 111. InstCombinePass ---------------------------------------- define i32 @xor_to_xor11(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %a, %notb %and2 = and i32 %nota, %b %xor = xor i32 %and2, %and1 ret i32 %xor } => define i32 @xor_to_xor11(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %b, %a ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 112. PassManager<Function> : Skipping NOP -- 113. PassManager<Function> : Skipping NOP -- 114. InstCombinePass ---------------------------------------- define i32 @xor_to_xor12(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %notb, %a %and2 = and i32 %nota, %b %xor = xor i32 %and2, %and1 ret i32 %xor } Transformation seems to be correct! (syntactically equal) -- 115. InstCombinePass ---------------------------------------- define i32 @xor_to_xor12(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %and1 = and i32 %notb, %a %and2 = and i32 %nota, %b %xor = xor i32 %and2, %and1 ret i32 %xor } => define i32 @xor_to_xor12(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %xor = xor i32 %b, %a ret i32 %xor } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 116. PassManager<Function> : Skipping NOP -- 117. PassManager<Function> : Skipping NOP -- 118. InstCombinePass ---------------------------------------- define i64 @PR32830(i64 %a, i64 %b, i64 %c) { #0: %nota = xor i64 %a, -1 %notb = xor i64 %b, -1 %or1 = or i64 %notb, %a %or2 = or i64 %nota, %c %and = and i64 %or1, %or2 ret i64 %and } Transformation seems to be correct! (syntactically equal) -- 119. InstCombinePass ---------------------------------------- define i64 @PR32830(i64 %a, i64 %b, i64 %c) { #0: %nota = xor i64 %a, -1 %notb = xor i64 %b, -1 %or1 = or i64 %notb, %a %or2 = or i64 %nota, %c %and = and i64 %or1, %or2 ret i64 %and } Transformation seems to be correct! (syntactically equal) -- 120. PassManager<Function> : Skipping NOP -- 121. PassManager<Function> : Skipping NOP -- 122. InstCombinePass ---------------------------------------- define i32 @and_to_nxor_multiuse(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %notb, %a %and = and i32 %or1, %or2 %mul1 = mul i32 %or1, %or2 %mul2 = mul i32 %mul1, %and ret i32 %mul2 } Transformation seems to be correct! (syntactically equal) -- 123. InstCombinePass ---------------------------------------- define i32 @and_to_nxor_multiuse(float %fa, float %fb) { #0: %a = fptosi float %fa to i32 %b = fptosi float %fb to i32 %nota = xor i32 %a, 4294967295 %notb = xor i32 %b, 4294967295 %or1 = or i32 %nota, %b %or2 = or i32 %notb, %a %and = and i32 %or1, %or2 %mul1 = mul i32 %or1, %or2 %mul2 = mul i32 %mul1, %and ret i32 %mul2 } Transformation seems to be correct! (syntactically equal) -- 124. PassManager<Function> : Skipping NOP -- 125. PassManager<Function> : Skipping NOP -- 126. InstCombinePass ---------------------------------------- define i32 @or_to_nxor_multiuse(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor %mul1 = mul i32 %and, %notor %mul2 = mul i32 %mul1, %or2 ret i32 %mul2 } Transformation seems to be correct! (syntactically equal) -- 127. InstCombinePass ---------------------------------------- define i32 @or_to_nxor_multiuse(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or i32 %and, %notor %mul1 = mul i32 %and, %notor %mul2 = mul i32 %mul1, %or2 ret i32 %mul2 } => define i32 @or_to_nxor_multiuse(i32 %a, i32 %b) { #0: %and = and i32 %a, %b %or = or i32 %a, %b %notor = xor i32 %or, 4294967295 %or2 = or disjoint i32 %and, %notor %mul1 = mul i32 %and, %notor %mul2 = mul i32 %mul1, %or2 ret i32 %mul2 } Transformation doesn't verify! (unsound) ERROR: Target is more poisonous than source Example: i32 %a = undef i32 %b = undef Source: i32 %and = #x00000000 (0) [based on undef value] i32 %or = #x00000000 (0) [based on undef value] i32 %notor = #xffffffff (4294967295, -1) i32 %or2 = #xffffffff (4294967295, -1) i32 %mul1 = #x00000000 (0) [based on undef value] i32 %mul2 = #x00000000 (0) Target: i32 %and = #x0000000f (15) i32 %or = #x00000000 (0) i32 %notor = #xffffffff (4294967295, -1) i32 %or2 = poison i32 %mul1 = #x00000000 (0) [based on undef value] i32 %mul2 = poison Source value: #x00000000 (0) Target value: poison Pass: InstCombinePass 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=instcombine' '-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_g4aR5O25_fYwY.bc" ------------------- SMT STATS ------------------- Num queries: 164 Num invalid: 0 Num skips: 0 Num trivial: 81 (33.1%) Num timeout: 28 (17.1%) Num errors: 0 (0.0%) Num SAT: 97 (59.1%) Num UNSAT: 39 (23.8%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/and-or-not.ll -passes=instcombine -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/and-or-not.ll + /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/and-or-not.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/and-or-not.ll
NOTE: This test would pass if undef didn't exist!