Test source: git
Comments: Alive2 missing support for speculatable attribute
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 3. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_xor_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 7. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => define i32 @select_xor_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A.not = icmp eq i32 %x, 0 %C = select i1 %A.not, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_meta(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 11. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_meta(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_xor_icmp_meta(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. InstCombinePass ---------------------------------------- define i32 @select_mul_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = mul i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 15. InstCombinePass ---------------------------------------- define i32 @select_mul_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = mul i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_mul_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. InstCombinePass ---------------------------------------- define i32 @select_add_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = add i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 19. InstCombinePass ---------------------------------------- define i32 @select_add_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = add i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_add_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. InstCombinePass ---------------------------------------- define i32 @select_or_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = or i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 23. InstCombinePass ---------------------------------------- define i32 @select_or_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = or i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_or_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. InstCombinePass ---------------------------------------- define i32 @select_and_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 4294967295 %B = and i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 27. InstCombinePass ---------------------------------------- define i32 @select_and_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 4294967295 %B = and i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_and_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 4294967295 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 31. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } => define <2 x i8> @select_xor_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %C = select <2 x i1> %A, <2 x i8> %z, <2 x i8> %y ret <2 x i8> %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 32. PassManager<Function> : Skipping NOP -- 33. PassManager<Function> : Skipping NOP -- 34. InstCombinePass ---------------------------------------- declare void @use(<2 x i1>) define <2 x i8> @select_xor_icmp_vec_use(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp ne <2 x i8> %x, { 0, 0 } call void @use(<2 x i1> %A) %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %y, <2 x i8> %B ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 35. InstCombinePass ---------------------------------------- declare void @use(<2 x i1>) define <2 x i8> @select_xor_icmp_vec_use(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp ne <2 x i8> %x, { 0, 0 } call void @use(<2 x i1> %A) %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %y, <2 x i8> %B ret <2 x i8> %C } => declare void @use(<2 x i1>) define <2 x i8> @select_xor_icmp_vec_use(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp ne <2 x i8> %x, { 0, 0 } call void @use(<2 x i1> %A) %C = select <2 x i1> %A, <2 x i8> %y, <2 x i8> %z ret <2 x i8> %C } Transformation seems to be correct! -- 36. PassManager<Function> : Skipping NOP -- 37. PassManager<Function> : Skipping NOP -- 38. InstCombinePass ---------------------------------------- define i32 @select_xor_inv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 39. InstCombinePass ---------------------------------------- define i32 @select_xor_inv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_xor_inv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 40. PassManager<Function> : Skipping NOP -- 41. PassManager<Function> : Skipping NOP -- 42. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_xor_inv_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 43. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_xor_inv_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => declare void @use2(i1) define i32 @select_xor_inv_icmp2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %C = select i1 %A, i32 %y, i32 %z ret i32 %C } Transformation seems to be correct! -- 44. PassManager<Function> : Skipping NOP -- 45. PassManager<Function> : Skipping NOP -- 46. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 47. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 48. PassManager<Function> : Skipping NOP -- 49. PassManager<Function> : Skipping NOP -- 50. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 51. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 52. PassManager<Function> : Skipping NOP -- 53. PassManager<Function> : Skipping NOP -- 54. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_2(float %x, float %y, float %v) { #0: %A = fcmp une float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 55. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_2(float %x, float %y, float %v) { #0: %A = fcmp une float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_2(float %x, float %y, float %v) { #0: %A = fcmp une float %x, 0.000000 %z = fadd float %v, 0.000000 %C = select i1 %A, float %y, float %z ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 56. PassManager<Function> : Skipping NOP -- 57. PassManager<Function> : Skipping NOP -- 58. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_2_poszero(float %x, float %y, float %v) { #0: %A = fcmp une float %x, 0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 59. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_2_poszero(float %x, float %y, float %v) { #0: %A = fcmp une float %x, 0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_2_poszero(float %x, float %y, float %v) { #0: %A = fcmp une float %x, 0.000000 %z = fadd float %v, 0.000000 %C = select i1 %A, float %y, float %z ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 60. PassManager<Function> : Skipping NOP -- 61. PassManager<Function> : Skipping NOP -- 62. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_3(float %x, float %y) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float 6.000000, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 63. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_3(float %x, float %y) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float 6.000000, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_3(float %x, float %y) { #0: %A = fcmp une float %x, 0.000000 %C = select i1 %A, float %y, float 6.000000 ret float %C } Transformation seems to be correct! -- 64. PassManager<Function> : Skipping NOP -- 65. PassManager<Function> : Skipping NOP -- 66. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_3_poszero(float %x, float %y) { #0: %A = fcmp une float %x, 0.000000 %B = fadd float 6.000000, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 67. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_3_poszero(float %x, float %y) { #0: %A = fcmp une float %x, 0.000000 %B = fadd float 6.000000, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_3_poszero(float %x, float %y) { #0: %A = fcmp une float %x, 0.000000 %C = select i1 %A, float %y, float 6.000000 ret float %C } Transformation seems to be correct! -- 68. PassManager<Function> : Skipping NOP -- 69. PassManager<Function> : Skipping NOP -- 70. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 71. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %C = select i1 %A, float %y, float %z ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 72. PassManager<Function> : Skipping NOP -- 73. PassManager<Function> : Skipping NOP -- 74. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_4_poszero(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 75. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_4_poszero(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_4_poszero(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %C = select i1 %A, float %y, float %z ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 76. PassManager<Function> : Skipping NOP -- 77. PassManager<Function> : Skipping NOP -- 78. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_5(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 79. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_5(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_5(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, 0.000000 %z = fadd float %v, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 80. PassManager<Function> : Skipping NOP -- 81. PassManager<Function> : Skipping NOP -- 82. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_5_poszero(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, 0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 83. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_5_poszero(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, 0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_5_poszero(float %x, float %y, float %v) { #0: %A = fcmp oeq float %x, 0.000000 %z = fadd float %v, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 84. PassManager<Function> : Skipping NOP -- 85. PassManager<Function> : Skipping NOP -- 86. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd float %x, 6.000000 %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 87. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd float %x, 6.000000 %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float 6.000000, float %y ret float %C } Transformation seems to be correct! -- 88. PassManager<Function> : Skipping NOP -- 89. PassManager<Function> : Skipping NOP -- 90. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_6_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd float %x, 6.000000 %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 91. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_6_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd float %x, 6.000000 %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_6_poszero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float 6.000000, float %y ret float %C } Transformation seems to be correct! -- 92. PassManager<Function> : Skipping NOP -- 93. PassManager<Function> : Skipping NOP -- 94. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 95. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fmul_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 96. PassManager<Function> : Skipping NOP -- 97. PassManager<Function> : Skipping NOP -- 98. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 99. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fsub_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 100. PassManager<Function> : Skipping NOP -- 101. PassManager<Function> : Skipping NOP -- 102. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_negzero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 103. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_negzero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fsub_fcmp_negzero(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 104. PassManager<Function> : Skipping NOP -- 105. PassManager<Function> : Skipping NOP -- 106. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fdiv nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 107. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fdiv nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fdiv_fcmp(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %C = select i1 %A, float %z, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 108. PassManager<Function> : Skipping NOP -- 109. PassManager<Function> : Skipping NOP -- 110. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 111. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_sub_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 112. PassManager<Function> : Skipping NOP -- 113. PassManager<Function> : Skipping NOP -- 114. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 115. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => declare void @use2(i1) define i32 @select_sub_icmp_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 call void @use2(i1 %A) %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 116. PassManager<Function> : Skipping NOP -- 117. PassManager<Function> : Skipping NOP -- 118. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 119. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => declare void @use2(i1) define i32 @select_sub_icmp_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %C = select i1 %A, i32 %y, i32 %z ret i32 %C } Transformation seems to be correct! -- 120. PassManager<Function> : Skipping NOP -- 121. PassManager<Function> : Skipping NOP -- 122. InstCombinePass ---------------------------------------- define <2 x i8> @select_sub_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %B = sub <2 x i8> %z, %x %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 123. InstCombinePass ---------------------------------------- define <2 x i8> @select_sub_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %B = sub <2 x i8> %z, %x %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } => define <2 x i8> @select_sub_icmp_vec(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, 0 } %C = select <2 x i1> %A, <2 x i8> %z, <2 x i8> %y ret <2 x i8> %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 124. PassManager<Function> : Skipping NOP -- 125. PassManager<Function> : Skipping NOP -- 126. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_shl_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = shl i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 127. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_shl_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = shl i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => declare void @use2(i1) define i32 @select_shl_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %C = select i1 %A, i32 %y, i32 %z ret i32 %C } Transformation seems to be correct! -- 128. PassManager<Function> : Skipping NOP -- 129. PassManager<Function> : Skipping NOP -- 130. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = lshr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 131. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = lshr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_lshr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 132. PassManager<Function> : Skipping NOP -- 133. PassManager<Function> : Skipping NOP -- 134. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_ashr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = ashr i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 135. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_ashr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = ashr i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => declare void @use2(i1) define i32 @select_ashr_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %C = select i1 %A, i32 %y, i32 %z ret i32 %C } Transformation seems to be correct! -- 136. PassManager<Function> : Skipping NOP -- 137. PassManager<Function> : Skipping NOP -- 138. InstCombinePass ---------------------------------------- define i32 @select_udiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = udiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 139. InstCombinePass ---------------------------------------- define i32 @select_udiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = udiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_udiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %C = select i1 %A, i32 %z, i32 %y ret i32 %C } Transformation seems to be correct! -- 140. PassManager<Function> : Skipping NOP -- 141. PassManager<Function> : Skipping NOP -- 142. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sdiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 1 call void @use2(i1 %A) %B = sdiv i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 143. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sdiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 1 call void @use2(i1 %A) %B = sdiv i32 %z, %x %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => declare void @use2(i1) define i32 @select_sdiv_icmp(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 1 call void @use2(i1 %A) %C = select i1 %A, i32 %y, i32 %z ret i32 %C } Transformation seems to be correct! -- 144. PassManager<Function> : Skipping NOP -- 145. PassManager<Function> : Skipping NOP -- 146. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_1(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, %k %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 147. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_1(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, %k %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 148. PassManager<Function> : Skipping NOP -- 149. PassManager<Function> : Skipping NOP -- 150. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_2(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %k, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 151. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_2(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 0 %B = xor i32 %k, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 152. PassManager<Function> : Skipping NOP -- 153. PassManager<Function> : Skipping NOP -- 154. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 155. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_xor_icmp_bad_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = xor i32 %z, 3 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! -- 156. PassManager<Function> : Skipping NOP -- 157. PassManager<Function> : Skipping NOP -- 158. InstCombinePass ---------------------------------------- define i32 @select_xor_fcmp_bad_4(i32 %x, i32 %y, i32 %z, float %k) { #0: %A = fcmp oeq float %k, 0.000000 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 159. InstCombinePass ---------------------------------------- define i32 @select_xor_fcmp_bad_4(i32 %x, i32 %y, i32 %z, float %k) { #0: %A = fcmp oeq float %k, 0.000000 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 160. PassManager<Function> : Skipping NOP -- 161. PassManager<Function> : Skipping NOP -- 162. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_5(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 163. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_5(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_xor_icmp_bad_5(i32 %x, i32 %y, i32 %z) { #0: %A.not = icmp eq i32 %x, 0 %B = xor i32 %x, %z %C = select i1 %A.not, i32 %y, i32 %B ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 164. PassManager<Function> : Skipping NOP -- 165. PassManager<Function> : Skipping NOP -- 166. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_6(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 1 %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 167. InstCombinePass ---------------------------------------- define i32 @select_xor_icmp_bad_6(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 1 %B = xor i32 %x, %z %C = select i1 %A, i32 %y, i32 %B ret i32 %C } => define i32 @select_xor_icmp_bad_6(i32 %x, i32 %y, i32 %z) { #0: %A.not = icmp eq i32 %x, 1 %B = xor i32 %z, 1 %C = select i1 %A.not, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! -- 168. PassManager<Function> : Skipping NOP -- 169. PassManager<Function> : Skipping NOP -- 170. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec_bad(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 5, 3 } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 171. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec_bad(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 5, 3 } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 172. PassManager<Function> : Skipping NOP -- 173. PassManager<Function> : Skipping NOP -- 174. InstCombinePass ---------------------------------------- define <2 x i32> @vec_select_no_equivalence(<2 x i32> %x) { #0: %x10 = shufflevector <2 x i32> %x, <2 x i32> undef, 1, 0 %cond = icmp eq <2 x i32> %x, { 0, 0 } %s = select <2 x i1> %cond, <2 x i32> %x10, <2 x i32> %x ret <2 x i32> %s } Transformation seems to be correct! (syntactically equal) -- 175. InstCombinePass ---------------------------------------- define <2 x i32> @vec_select_no_equivalence(<2 x i32> %x) { #0: %x10 = shufflevector <2 x i32> %x, <2 x i32> undef, 1, 0 %cond = icmp eq <2 x i32> %x, { 0, 0 } %s = select <2 x i1> %cond, <2 x i32> %x10, <2 x i32> %x ret <2 x i32> %s } => define <2 x i32> @vec_select_no_equivalence(<2 x i32> %x) { #0: %x10 = shufflevector <2 x i32> %x, <2 x i32> poison, 1, 0 %cond = icmp eq <2 x i32> %x, { 0, 0 } %s = select <2 x i1> %cond, <2 x i32> %x10, <2 x i32> %x ret <2 x i32> %s } Transformation seems to be correct! -- 176. PassManager<Function> : Skipping NOP -- 177. PassManager<Function> : Skipping NOP -- 178. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec_undef(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, undef } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 179. InstCombinePass ---------------------------------------- define <2 x i8> @select_xor_icmp_vec_undef(<2 x i8> %x, <2 x i8> %y, <2 x i8> %z) { #0: %A = icmp eq <2 x i8> %x, { 0, undef } %B = xor <2 x i8> %x, %z %C = select <2 x i1> %A, <2 x i8> %B, <2 x i8> %y ret <2 x i8> %C } Transformation seems to be correct! (syntactically equal) -- 180. PassManager<Function> : Skipping NOP -- 181. PassManager<Function> : Skipping NOP -- 182. InstCombinePass ---------------------------------------- define i32 @select_mul_icmp_bad(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 3 %B = mul i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 183. InstCombinePass ---------------------------------------- define i32 @select_mul_icmp_bad(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 3 %B = mul i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_mul_icmp_bad(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 3 %B = mul i32 %z, 3 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 184. PassManager<Function> : Skipping NOP -- 185. PassManager<Function> : Skipping NOP -- 186. InstCombinePass ---------------------------------------- define i32 @select_add_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = add i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 187. InstCombinePass ---------------------------------------- define i32 @select_add_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = add i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_add_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = add i32 %z, 1 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 188. PassManager<Function> : Skipping NOP -- 189. PassManager<Function> : Skipping NOP -- 190. InstCombinePass ---------------------------------------- define i32 @select_and_icmp_zero(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = and i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 191. InstCombinePass ---------------------------------------- define i32 @select_and_icmp_zero(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = and i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_and_icmp_zero(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %C = select i1 %A, i32 0, i32 %y ret i32 %C } Transformation seems to be correct! -- 192. PassManager<Function> : Skipping NOP -- 193. PassManager<Function> : Skipping NOP -- 194. InstCombinePass ---------------------------------------- define i32 @select_or_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = or i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 195. InstCombinePass ---------------------------------------- define i32 @select_or_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = or i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_or_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = or i32 %z, 3 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 196. PassManager<Function> : Skipping NOP -- 197. PassManager<Function> : Skipping NOP -- 198. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const(i32 %x) { #0: %A = icmp ugt i32 %x, 31 %B = lshr i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 199. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const(i32 %x) { #0: %A = icmp ugt i32 %x, 31 %B = lshr i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } => define i32 @select_lshr_icmp_const(i32 %x) { #0: %B = lshr i32 %x, 5 ret i32 %B } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 200. PassManager<Function> : Skipping NOP -- 201. PassManager<Function> : Skipping NOP -- 202. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_reordered(i32 %x) { #0: %A = icmp ult i32 %x, 32 %B = lshr i32 %x, 5 %C = select i1 %A, i32 0, i32 %B ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 203. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_reordered(i32 %x) { #0: %A = icmp ult i32 %x, 32 %B = lshr i32 %x, 5 %C = select i1 %A, i32 0, i32 %B ret i32 %C } => define i32 @select_lshr_icmp_const_reordered(i32 %x) { #0: %B = lshr i32 %x, 5 ret i32 %B } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 204. PassManager<Function> : Skipping NOP -- 205. PassManager<Function> : Skipping NOP -- 206. InstCombinePass ---------------------------------------- define i32 @select_exact_lshr_icmp_const(i32 %x) { #0: %A = icmp ugt i32 %x, 31 %B = lshr exact i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 207. InstCombinePass ---------------------------------------- define i32 @select_exact_lshr_icmp_const(i32 %x) { #0: %A = icmp ugt i32 %x, 31 %B = lshr exact i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } => define i32 @select_exact_lshr_icmp_const(i32 %x) { #0: %B = lshr i32 %x, 5 ret i32 %B } Transformation seems to be correct! -- 208. PassManager<Function> : Skipping NOP -- 209. PassManager<Function> : Skipping NOP -- 210. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_large_exact_range(i32 %x) { #0: %A = icmp ugt i32 %x, 63 %B = lshr i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 211. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_large_exact_range(i32 %x) { #0: %A = icmp ugt i32 %x, 63 %B = lshr i32 %x, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 212. PassManager<Function> : Skipping NOP -- 213. PassManager<Function> : Skipping NOP -- 214. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_different_values(i32 %x, i32 %y) { #0: %A = icmp ugt i32 %x, 31 %B = lshr i32 %y, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 215. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_const_different_values(i32 %x, i32 %y) { #0: %A = icmp ugt i32 %x, 31 %B = lshr i32 %y, 5 %C = select i1 %A, i32 %B, i32 0 ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 216. PassManager<Function> : Skipping NOP -- 217. PassManager<Function> : Skipping NOP -- 218. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -1.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 219. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -1.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 220. PassManager<Function> : Skipping NOP -- 221. PassManager<Function> : Skipping NOP -- 222. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp ueq float %x, -1.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 223. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp ueq float %x, -1.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 224. PassManager<Function> : Skipping NOP -- 225. PassManager<Function> : Skipping NOP -- 226. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_3(float %x, float %y, float %z, float %k) { #0: %A = fcmp one float %x, %k %B = fadd float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 227. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_3(float %x, float %y, float %z, float %k) { #0: %A = fcmp one float %x, %k %B = fadd float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 228. PassManager<Function> : Skipping NOP -- 229. PassManager<Function> : Skipping NOP -- 230. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 231. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_bad_4(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 232. PassManager<Function> : Skipping NOP -- 233. PassManager<Function> : Skipping NOP -- 234. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_5(float %x, float %y, float %z) { #0: %A = fcmp one float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 235. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_5(float %x, float %y, float %z) { #0: %A = fcmp one float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_5(float %x, float %y, float %z) { #0: %A = fcmp one float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 236. PassManager<Function> : Skipping NOP -- 237. PassManager<Function> : Skipping NOP -- 238. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 239. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_6(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 240. PassManager<Function> : Skipping NOP -- 241. PassManager<Function> : Skipping NOP -- 242. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_7(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 243. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_7(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } => define float @select_fadd_fcmp_bad_7(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 244. PassManager<Function> : Skipping NOP -- 245. PassManager<Function> : Skipping NOP -- 246. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_8(float %x, float %y, float %v) { #0: %A = fcmp one float %x, -0.000000 %z = fadd float %v, -1.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 247. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_8(float %x, float %y, float %v) { #0: %A = fcmp one float %x, -0.000000 %z = fadd float %v, -1.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_8(float %x, float %y, float %v) { #0: %A = fcmp one float %x, 0.000000 %z = fadd float %v, -1.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 248. PassManager<Function> : Skipping NOP -- 249. PassManager<Function> : Skipping NOP -- 250. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_9(float %x, float %y, float %z) { #0: %A = fcmp one float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 251. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_9(float %x, float %y, float %z) { #0: %A = fcmp one float %x, -0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_9(float %x, float %y, float %z) { #0: %A = fcmp one float %x, 0.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 252. PassManager<Function> : Skipping NOP -- 253. PassManager<Function> : Skipping NOP -- 254. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_10(float %x, float %y, float %v) { #0: %A = fcmp one float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 255. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_10(float %x, float %y, float %v) { #0: %A = fcmp one float %x, -0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_10(float %x, float %y, float %v) { #0: %A = fcmp one float %x, 0.000000 %z = fadd float %v, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 256. PassManager<Function> : Skipping NOP -- 257. PassManager<Function> : Skipping NOP -- 258. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_11(float %x, float %y, float %v) { #0: %A = fcmp une float %x, -0.000000 %z = fadd float %v, -1.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 259. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_11(float %x, float %y, float %v) { #0: %A = fcmp une float %x, -0.000000 %z = fadd float %v, -1.000000 %B = fadd nsz float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_11(float %x, float %y, float %v) { #0: %A = fcmp une float %x, 0.000000 %z = fadd float %v, -1.000000 %C = select i1 %A, float %y, float %z ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 260. PassManager<Function> : Skipping NOP -- 261. PassManager<Function> : Skipping NOP -- 262. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_12(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 263. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_12(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_12(float %x, float %y, float %z) { #0: %A = fcmp une float %x, 0.000000 %B = fadd float %z, %x %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 264. PassManager<Function> : Skipping NOP -- 265. PassManager<Function> : Skipping NOP -- 266. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_13(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 267. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_13(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, -0.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %y, float %B ret float %C } => define float @select_fadd_fcmp_bad_13(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 268. PassManager<Function> : Skipping NOP -- 269. PassManager<Function> : Skipping NOP -- 270. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_14(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -1.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 271. InstCombinePass ---------------------------------------- define float @select_fadd_fcmp_bad_14(float %x, float %y, float %z) { #0: %A = fcmp une float %x, -1.000000 %B = fadd nsz float %x, %z %C = select i1 %A, float %y, float %B ret float %C } Transformation seems to be correct! (syntactically equal) -- 272. PassManager<Function> : Skipping NOP -- 273. PassManager<Function> : Skipping NOP -- 274. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 3.000000 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 275. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 3.000000 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 276. PassManager<Function> : Skipping NOP -- 277. PassManager<Function> : Skipping NOP -- 278. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fmul float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 279. InstCombinePass ---------------------------------------- define float @select_fmul_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fmul float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 280. PassManager<Function> : Skipping NOP -- 281. PassManager<Function> : Skipping NOP -- 282. InstCombinePass ---------------------------------------- define float @select_fmul_icmp_bad(float %x, float %y, float %z, i32 %k) { #0: %A = icmp eq i32 %k, 0 %B = fmul float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 283. InstCombinePass ---------------------------------------- define float @select_fmul_icmp_bad(float %x, float %y, float %z, i32 %k) { #0: %A = icmp eq i32 %k, 0 %B = fmul float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 284. PassManager<Function> : Skipping NOP -- 285. PassManager<Function> : Skipping NOP -- 286. InstCombinePass ---------------------------------------- define float @select_fmul_icmp_bad_2(float %x, float %y, float %z, i32 %k) { #0: %A = icmp eq i32 %k, 0 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 287. InstCombinePass ---------------------------------------- define float @select_fmul_icmp_bad_2(float %x, float %y, float %z, i32 %k) { #0: %A = icmp eq i32 %k, 0 %B = fmul nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 288. PassManager<Function> : Skipping NOP -- 289. PassManager<Function> : Skipping NOP -- 290. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fdiv float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 291. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fdiv float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 292. PassManager<Function> : Skipping NOP -- 293. PassManager<Function> : Skipping NOP -- 294. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 3.000000 %B = fdiv nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 295. InstCombinePass ---------------------------------------- define float @select_fdiv_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 3.000000 %B = fdiv nsz float %x, %z %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 296. PassManager<Function> : Skipping NOP -- 297. PassManager<Function> : Skipping NOP -- 298. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fsub float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 299. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_bad(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 0.000000 %B = fsub float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 300. PassManager<Function> : Skipping NOP -- 301. PassManager<Function> : Skipping NOP -- 302. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 303. InstCombinePass ---------------------------------------- define float @select_fsub_fcmp_bad_2(float %x, float %y, float %z) { #0: %A = fcmp oeq float %x, 1.000000 %B = fsub nsz float %z, %x %C = select i1 %A, float %B, float %y ret float %C } Transformation seems to be correct! (syntactically equal) -- 304. PassManager<Function> : Skipping NOP -- 305. PassManager<Function> : Skipping NOP -- 306. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 307. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_sub_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 0, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 308. PassManager<Function> : Skipping NOP -- 309. PassManager<Function> : Skipping NOP -- 310. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 311. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_sub_icmp_bad_2(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = add i32 %z, 4294967295 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 312. PassManager<Function> : Skipping NOP -- 313. PassManager<Function> : Skipping NOP -- 314. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_bad_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 315. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_bad_3(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 316. PassManager<Function> : Skipping NOP -- 317. PassManager<Function> : Skipping NOP -- 318. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_4(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 319. InstCombinePass ---------------------------------------- declare void @use2(i1) define i32 @select_sub_icmp_4(i32 %x, i32 %y, i32 %z) { #0: %A = icmp ne i32 %x, 0 call void @use2(i1 %A) %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 320. PassManager<Function> : Skipping NOP -- 321. PassManager<Function> : Skipping NOP -- 322. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_4(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %z, %k %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 323. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_4(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, 0 %B = sub i32 %z, %k %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 324. PassManager<Function> : Skipping NOP -- 325. PassManager<Function> : Skipping NOP -- 326. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_5(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, %k %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 327. InstCombinePass ---------------------------------------- define i32 @select_sub_icmp_bad_5(i32 %x, i32 %y, i32 %z, i32 %k) { #0: %A = icmp eq i32 %x, %k %B = sub i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 328. PassManager<Function> : Skipping NOP -- 329. PassManager<Function> : Skipping NOP -- 330. InstCombinePass ---------------------------------------- define i32 @select_shl_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = shl i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 331. InstCombinePass ---------------------------------------- define i32 @select_shl_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = shl i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_shl_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = shl i32 %z, 1 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 332. PassManager<Function> : Skipping NOP -- 333. PassManager<Function> : Skipping NOP -- 334. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = lshr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 335. InstCombinePass ---------------------------------------- define i32 @select_lshr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = lshr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_lshr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = lshr i32 %z, 1 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 336. PassManager<Function> : Skipping NOP -- 337. PassManager<Function> : Skipping NOP -- 338. InstCombinePass ---------------------------------------- define i32 @select_ashr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = ashr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 339. InstCombinePass ---------------------------------------- define i32 @select_ashr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = ashr i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } => define i32 @select_ashr_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 1 %B = ashr i32 %z, 1 %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! -- 340. PassManager<Function> : Skipping NOP -- 341. PassManager<Function> : Skipping NOP -- 342. InstCombinePass ---------------------------------------- define i32 @select_udiv_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = udiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 343. InstCombinePass ---------------------------------------- define i32 @select_udiv_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = udiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 344. PassManager<Function> : Skipping NOP -- 345. PassManager<Function> : Skipping NOP -- 346. InstCombinePass ---------------------------------------- define i32 @select_sdiv_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = sdiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 347. InstCombinePass ---------------------------------------- define i32 @select_sdiv_icmp_bad(i32 %x, i32 %y, i32 %z) { #0: %A = icmp eq i32 %x, 3 %B = sdiv i32 %z, %x %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! (syntactically equal) -- 348. PassManager<Function> : Skipping NOP -- 349. PassManager<Function> : Skipping NOP -- 350. InstCombinePass ---------------------------------------- define i32 @select_replace_one_use(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %x, %y %s = select i1 %c, i32 %sub, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 351. InstCombinePass ---------------------------------------- define i32 @select_replace_one_use(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %x, %y %s = select i1 %c, i32 %sub, i32 %y ret i32 %s } => define i32 @select_replace_one_use(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 0, %y %s = select i1 %c, i32 %sub, i32 %y ret i32 %s } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 352. PassManager<Function> : Skipping NOP -- 353. PassManager<Function> : Skipping NOP -- 354. InstCombinePass ---------------------------------------- declare void @use_i32(i32) define i32 @select_replace_multi_use(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %x, %y call void @use_i32(i32 %sub) %s = select i1 %c, i32 %sub, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 355. InstCombinePass ---------------------------------------- declare void @use_i32(i32) define i32 @select_replace_multi_use(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %x, %y call void @use_i32(i32 %sub) %s = select i1 %c, i32 %sub, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 356. PassManager<Function> : Skipping NOP -- 357. PassManager<Function> : Skipping NOP -- 358. InstCombinePass ---------------------------------------- define i32 @select_replace_fold(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %fshr = fshr i32 %y, i32 %z, i32 %x %s = select i1 %c, i32 %fshr, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 359. InstCombinePass ---------------------------------------- define i32 @select_replace_fold(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %fshr = fshr i32 %y, i32 %z, i32 %x %s = select i1 %c, i32 %fshr, i32 %y ret i32 %s } => define i32 @select_replace_fold(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %s = select i1 %c, i32 %z, i32 %y ret i32 %s } Transformation seems to be correct! -- 360. PassManager<Function> : Skipping NOP -- 361. PassManager<Function> : Skipping NOP -- 362. InstCombinePass ---------------------------------------- define i32 @select_replace_nested(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 363. InstCombinePass ---------------------------------------- define i32 @select_replace_nested(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } => define i32 @select_replace_nested(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %add = select i1 %c, i32 %z, i32 0 %s = add i32 %add, %y ret i32 %s } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 364. PassManager<Function> : Skipping NOP -- 365. PassManager<Function> : Skipping NOP -- 366. InstCombinePass ---------------------------------------- declare void @use.i32(i32) define i32 @select_replace_nested_extra_use(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x call void @use.i32(i32 %sub) %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 367. InstCombinePass ---------------------------------------- declare void @use.i32(i32) define i32 @select_replace_nested_extra_use(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x call void @use.i32(i32 %sub) %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 368. PassManager<Function> : Skipping NOP -- 369. PassManager<Function> : Skipping NOP -- 370. InstCombinePass ---------------------------------------- define i32 @select_replace_nested_no_simplify(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 1 %sub = sub i32 %y, %x %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 371. InstCombinePass ---------------------------------------- define i32 @select_replace_nested_no_simplify(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 1 %sub = sub i32 %y, %x %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } => define i32 @select_replace_nested_no_simplify(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 1 %sub = add i32 %y, 4294967295 %add = add i32 %sub, %z %s = select i1 %c, i32 %add, i32 %y ret i32 %s } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 372. PassManager<Function> : Skipping NOP -- 373. PassManager<Function> : Skipping NOP -- 374. InstCombinePass ---------------------------------------- define i32 @select_replace_deeply_nested(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x %add = add i32 %sub, %z %shl = shl i32 %add, 1 %s = select i1 %c, i32 %shl, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 375. InstCombinePass ---------------------------------------- define i32 @select_replace_deeply_nested(i32 %x, i32 %y, i32 %z) { #0: %c = icmp eq i32 %x, 0 %sub = sub i32 %y, %x %add = add i32 %sub, %z %shl = shl i32 %add, 1 %s = select i1 %c, i32 %shl, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 376. PassManager<Function> : Skipping NOP -- 377. PassManager<Function> : Skipping NOP -- 378. InstCombinePass ---------------------------------------- @g = global 4 bytes, align 4 define i32 @select_replace_constexpr(i32 %x, i32 %y, i32 %z) { #0: %__constexpr_0 = ptrtoint ptr @g to i32 %c = icmp eq i32 %x, %__constexpr_0 %add = add i32 %x, %y %s = select i1 %c, i32 %add, i32 %z ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 379. InstCombinePass ---------------------------------------- @g = global 4 bytes, align 4 define i32 @select_replace_constexpr(i32 %x, i32 %y, i32 %z) { #0: %__constexpr_0 = ptrtoint ptr @g to i32 %c = icmp eq i32 %x, %__constexpr_0 %add = add i32 %x, %y %s = select i1 %c, i32 %add, i32 %z ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 380. PassManager<Function> : Skipping NOP -- 381. PassManager<Function> : Skipping NOP -- 382. InstCombinePass ---------------------------------------- define <2 x i32> @select_replace_undef(<2 x i32> %x, <2 x i32> %y) { #0: %c = icmp eq <2 x i32> %x, { 0, undef } %sub = sub <2 x i32> %x, %y %s = select <2 x i1> %c, <2 x i32> %sub, <2 x i32> %y ret <2 x i32> %s } Transformation seems to be correct! (syntactically equal) -- 383. InstCombinePass ---------------------------------------- define <2 x i32> @select_replace_undef(<2 x i32> %x, <2 x i32> %y) { #0: %c = icmp eq <2 x i32> %x, { 0, undef } %sub = sub <2 x i32> %x, %y %s = select <2 x i1> %c, <2 x i32> %sub, <2 x i32> %y ret <2 x i32> %s } Transformation seems to be correct! (syntactically equal) -- 384. PassManager<Function> : Skipping NOP -- 385. PassManager<Function> : Skipping NOP -- 386. InstCombinePass ---------------------------------------- declare i32 @call_speculatable(i32, i32) define i32 @select_replace_call_speculatable(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %call = call i32 @call_speculatable(i32 %x, i32 %x) %s = select i1 %c, i32 %call, i32 %y ret i32 %s } Transformation seems to be correct! (syntactically equal) -- 387. InstCombinePass ---------------------------------------- declare i32 @call_speculatable(i32, i32) define i32 @select_replace_call_speculatable(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %call = call i32 @call_speculatable(i32 %x, i32 %x) %s = select i1 %c, i32 %call, i32 %y ret i32 %s } => declare i32 @call_speculatable(i32, i32) define i32 @select_replace_call_speculatable(i32 %x, i32 %y) { #0: %c = icmp eq i32 %x, 0 %call = call i32 @call_speculatable(i32 0, i32 0) %s = select i1 %c, i32 %call, i32 %y ret i32 %s } Transformation doesn't verify! (unsound) ERROR: Source is more defined than target Example: i32 %x = #x00000001 (1) i32 %y = poison Source: i1 %c = #x0 (0) i32 %call = function did not return! SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 1 alloc type: 0 alive: false address: 0 Block 1 > size: 1 align: 1 alloc type: 0 alive: true address: 0 Target: i1 %c = #x0 (0) i32 %call = function did not return! 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_Fp5j93WY_hi6X.bc" ------------------- SMT STATS ------------------- Num queries: 347 Num invalid: 0 Num skips: 0 Num trivial: 148 (29.9%) Num timeout: 39 (11.2%) Num errors: 0 (0.0%) Num SAT: 141 (40.6%) Num UNSAT: 167 (48.1%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll -passes=instcombine -S | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll + /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll