Test source: git
Comments: Alive2 missing support for speculatable attribute
Source: <stdin> ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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 } => 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 doesn't verify! ERROR: Timeout ---------------------------------------- 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! ---------------------------------------- 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 } => 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! ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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 } => 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 doesn't verify! ERROR: Timeout ---------------------------------------- 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 } => 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 doesn't verify! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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 } => 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! ---------------------------------------- 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! ---------------------------------------- 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 } => 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! ---------------------------------------- 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! ---------------------------------------- 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 } => 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 doesn't verify! ERROR: Timeout ---------------------------------------- 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 } => 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! ---------------------------------------- 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 } => 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! ---------------------------------------- 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 %x, %z %C = select i1 %A, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! ---------------------------------------- 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 } => 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! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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 %x, %z %C = select i1 %A.not, i32 %B, i32 %y ret i32 %C } Transformation seems to be correct! ---------------------------------------- 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 } => 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 doesn't verify! ERROR: Timeout ---------------------------------------- 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 } => 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 } %C = select <2 x i1> %A, <2 x i8> %z, <2 x i8> %y ret <2 x i8> %C } Transformation doesn't verify! ERROR: Target's return value is more undefined Example: <2 x i8> %x = < poison, #x01 (1) > <2 x i8> %y = < poison, #x00 (0) > <2 x i8> %z = < poison, #x01 (1) > Source: <2 x i1> %A = < poison, any > <2 x i8> %B = < poison, #x00 (0) > <2 x i8> %C = < poison, #x00 (0) > Target: <2 x i1> %A = < poison, #x1 (1) > <2 x i8> %C = < poison, #x01 (1) > Source value: < poison, #x00 (0) > Target value: < poison, #x01 (1) > ------------------- SMT STATS ------------------- Num queries: 183 Num invalid: 0 Num skips: 0 Num trivial: 103 (36.0%) Num timeout: 18 (9.8%) Num errors: 0 (0.0%) Num SAT: 45 (24.6%) Num UNSAT: 120 (65.6%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/scripts/opt-alive.sh -instcombine -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/select-binop-cmp.ll