Test source: git
Source: <stdin> ---------------------------------------- define i32 @max_na_b_minux_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, %B %l1 = select i1 %l0, i32 %not, i32 %B %x = sub i32 %l1, %not ret i32 %x } => define i32 @max_na_b_minux_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %1 = usub_sat i32 %not, %B %x = sub i32 0, %1 ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_na_b(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, %B %l1 = select i1 %l0, i32 %not, i32 %B %x = sub i32 %not, %l1 ret i32 %x } => define i32 @na_minus_max_na_b(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %1 = usub_sat i32 %not, %B ret i32 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i5 @sub_umin(i5 %a, i5 %b) { %0: %umin = umin i5 %a, %b %r = sub i5 %a, %umin ret i5 %r } => define i5 @sub_umin(i5 %a, i5 %b) { %0: %1 = usub_sat i5 %a, %b ret i5 %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i8> @sub_umin_commute_vec(<2 x i8> %a, <2 x i8> %b) { %0: %umin = umin <2 x i8> %b, %a %r = sub <2 x i8> %b, %umin ret <2 x i8> %r } => define <2 x i8> @sub_umin_commute_vec(<2 x i8> %a, <2 x i8> %b) { %0: %1 = usub_sat <2 x i8> %b, %a ret <2 x i8> %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i5 @sub_umin_uses(i5 %a, i5 %b, ptr %p) { %0: %umin = umin i5 %a, %b store i5 %umin, ptr %p, align 1 %r = sub i5 %a, %umin ret i5 %r } => define i5 @sub_umin_uses(i5 %a, i5 %b, ptr %p) { %0: %umin = umin i5 %a, %b store i5 %umin, ptr %p, align 1 %r = sub i5 %a, %umin ret i5 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i5 @sub_umin_no_common_op(i5 %a, i5 %b, i5 %c) { %0: %umin = umin i5 %a, %b %r = sub i5 %c, %umin ret i5 %r } => define i5 @sub_umin_no_common_op(i5 %a, i5 %b, i5 %c) { %0: %umin = umin i5 %a, %b %r = sub i5 %c, %umin ret i5 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i32 @max_b_na_minus_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ugt i32 %not, %B %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %l1, %not ret i32 %x } => define i32 @max_b_na_minus_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %1 = usub_sat i32 %not, %B %x = sub i32 0, %1 ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_b_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ugt i32 %not, %B %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %not, %l1 ret i32 %x } => define i32 @na_minus_max_b_na(i32 %A, i32 %B) { %0: %not = xor i32 %A, 4294967295 %1 = usub_sat i32 %not, %B ret i32 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @max_na_bi_minux_na(i32 %A, i32 %Bi) { %0: %B = xor i32 %Bi, 4294967295 %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, %B %l1 = select i1 %l0, i32 %not, i32 %B %x = sub i32 %l1, %not ret i32 %x } => define i32 @max_na_bi_minux_na(i32 %A, i32 %Bi) { %0: %1 = usub_sat i32 %Bi, %A %x = sub i32 0, %1 ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_na_bi(i32 %A, i32 %Bi) { %0: %B = xor i32 %Bi, 4294967295 %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, %B %l1 = select i1 %l0, i32 %not, i32 %B %x = sub i32 %not, %l1 ret i32 %x } => define i32 @na_minus_max_na_bi(i32 %A, i32 %Bi) { %0: %1 = usub_sat i32 %Bi, %A ret i32 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @max_bi_na_minus_na(i32 %A, i32 %Bi) { %0: %B = xor i32 %Bi, 4294967295 %not = xor i32 %A, 4294967295 %l0 = icmp ugt i32 %not, %B %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %l1, %not ret i32 %x } => define i32 @max_bi_na_minus_na(i32 %A, i32 %Bi) { %0: %1 = usub_sat i32 %Bi, %A %x = sub i32 0, %1 ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_bi_na(i32 %A, i32 %Bi) { %0: %B = xor i32 %Bi, 4294967295 %not = xor i32 %A, 4294967295 %l0 = icmp ugt i32 %not, %B %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %not, %l1 ret i32 %x } => define i32 @na_minus_max_bi_na(i32 %A, i32 %Bi) { %0: %1 = usub_sat i32 %Bi, %A ret i32 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @max_na_bi_minux_na_use(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, 31 %l1 = select i1 %l0, i32 %not, i32 31 %x = sub i32 %l1, %not call void @use32(i32 %l1) ret i32 %x } => define i32 @max_na_bi_minux_na_use(i32 %A, i32 %Bi) { %0: %1 = umax i32 %A, 4294967264 %2 = xor i32 %1, 4294967295 %x = sub i32 %A, %1 call void @use32(i32 %2) ret i32 %x } Transformation seems to be correct! ---------------------------------------- define i32 @na_minus_max_na_bi_use(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, 31 %l1 = select i1 %l0, i32 %not, i32 31 %x = sub i32 %not, %l1 call void @use32(i32 %l1) ret i32 %x } => define i32 @na_minus_max_na_bi_use(i32 %A, i32 %Bi) { %0: %1 = umax i32 %A, 4294967264 %2 = xor i32 %1, 4294967295 %x = sub i32 %1, %A call void @use32(i32 %2) ret i32 %x } Transformation seems to be correct! ---------------------------------------- define i32 @max_bi_na_minus_na_use(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %B = xor i32 %Bi, 4294967295 %l0 = icmp ult i32 %B, %not %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %l1, %not call void @use32(i32 %l1) ret i32 %x } => define i32 @max_bi_na_minus_na_use(i32 %A, i32 %Bi) { %0: %1 = umax i32 %Bi, %A %2 = xor i32 %1, 4294967295 %x = sub i32 %A, %1 call void @use32(i32 %2) ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_bi_na_use(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %B = xor i32 %Bi, 4294967295 %l0 = icmp ult i32 %B, %not %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %not, %l1 call void @use32(i32 %l1) ret i32 %x } => define i32 @na_minus_max_bi_na_use(i32 %A, i32 %Bi) { %0: %1 = umax i32 %Bi, %A %2 = xor i32 %1, 4294967295 %x = sub i32 %1, %A call void @use32(i32 %2) ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @max_na_bi_minux_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, 31 %l1 = select i1 %l0, i32 %not, i32 31 %x = sub i32 %l1, %not call void @use32(i32 %l1) call void @use32(i32 %not) ret i32 %x } => define i32 @max_na_bi_minux_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %1 = umin i32 %not, 31 %x = sub i32 %1, %not call void @use32(i32 %1) call void @use32(i32 %not) ret i32 %x } Transformation seems to be correct! ---------------------------------------- define i32 @na_minus_max_na_bi_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %l0 = icmp ult i32 %not, 31 %l1 = select i1 %l0, i32 %not, i32 31 %x = sub i32 %not, %l1 call void @use32(i32 %l1) call void @use32(i32 %not) ret i32 %x } => define i32 @na_minus_max_na_bi_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %1 = umin i32 %not, 31 %x = sub i32 %not, %1 call void @use32(i32 %1) call void @use32(i32 %not) ret i32 %x } Transformation seems to be correct! ---------------------------------------- define i32 @max_bi_na_minus_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %B = xor i32 %Bi, 4294967295 %l0 = icmp ult i32 %B, %not %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %l1, %not call void @use32(i32 %l1) call void @use32(i32 %not) ret i32 %x } => define i32 @max_bi_na_minus_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %1 = umax i32 %Bi, %A %2 = xor i32 %1, 4294967295 %x = sub i32 %A, %1 call void @use32(i32 %2) call void @use32(i32 %not) ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i32 @na_minus_max_bi_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %B = xor i32 %Bi, 4294967295 %l0 = icmp ult i32 %B, %not %l1 = select i1 %l0, i32 %B, i32 %not %x = sub i32 %not, %l1 call void @use32(i32 %l1) call void @use32(i32 %not) ret i32 %x } => define i32 @na_minus_max_bi_na_use2(i32 %A, i32 %Bi) { %0: %not = xor i32 %A, 4294967295 %1 = umax i32 %Bi, %A %2 = xor i32 %1, 4294967295 %x = sub i32 %1, %A call void @use32(i32 %2) call void @use32(i32 %not) ret i32 %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umin_not_sub(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 %cmpxy = icmp ult i8 %nx, %ny %minxy = select i1 %cmpxy, i8 %nx, i8 %ny %subx = sub i8 %nx, %minxy %suby = sub i8 %ny, %minxy call void @use8(i8 %subx) call void @use8(i8 %suby) ret i8 %minxy } => define i8 @umin_not_sub(i8 %x, i8 %y) { %0: %1 = umax i8 %x, %y %2 = xor i8 %1, 255 %subx = sub i8 %1, %x %suby = sub i8 %1, %y call void @use8(i8 %subx) call void @use8(i8 %suby) ret i8 %2 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umin_not_sub_rev(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 %cmpxy = icmp ult i8 %nx, %ny %minxy = select i1 %cmpxy, i8 %nx, i8 %ny %subx = sub i8 %minxy, %nx %suby = sub i8 %minxy, %ny call void @use8(i8 %subx) call void @use8(i8 %suby) ret i8 %minxy } => define i8 @umin_not_sub_rev(i8 %x, i8 %y) { %0: %1 = umax i8 %x, %y %2 = xor i8 %1, 255 %subx = sub i8 %x, %1 %suby = sub i8 %y, %1 call void @use8(i8 %subx) call void @use8(i8 %suby) ret i8 %2 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define void @umin3_not_all_ops_extra_uses_invert_subs(i8 %x, i8 %y, i8 %z) { %0: %xn = xor i8 %x, 255 %yn = xor i8 %y, 255 %zn = xor i8 %z, 255 %cmpxz = icmp ult i8 %xn, %zn %minxz = select i1 %cmpxz, i8 %xn, i8 %zn %cmpxyz = icmp ult i8 %minxz, %yn %minxyz = select i1 %cmpxyz, i8 %minxz, i8 %yn %xmin = sub i8 %xn, %minxyz %ymin = sub i8 %yn, %minxyz %zmin = sub i8 %zn, %minxyz call void @use8(i8 %minxyz) call void @use8(i8 %xmin) call void @use8(i8 %ymin) call void @use8(i8 %zmin) ret void } => define void @umin3_not_all_ops_extra_uses_invert_subs(i8 %x, i8 %y, i8 %z) { %0: %1 = umax i8 %x, %z %2 = umax i8 %y, %1 %3 = xor i8 %2, 255 %xmin = sub i8 %2, %x %ymin = sub i8 %2, %y %zmin = sub i8 %2, %z call void @use8(i8 %3) call void @use8(i8 %xmin) call void @use8(i8 %ymin) call void @use8(i8 %zmin) ret void } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umin_not_sub_intrinsic_commute0(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = umin i8 %nx, %ny call void @use8(i8 %m) %subx = sub i8 %nx, %m ret i8 %subx } => define i8 @umin_not_sub_intrinsic_commute0(i8 %x, i8 %y) { %0: %ny = xor i8 %y, 255 call void @use8(i8 %ny) %1 = umax i8 %x, %y %m = xor i8 %1, 255 call void @use8(i8 %m) %subx = sub i8 %1, %x ret i8 %subx } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umax_not_sub_intrinsic_commute1(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = umax i8 %ny, %nx call void @use8(i8 %m) %subx = sub i8 %nx, %m ret i8 %subx } => define i8 @umax_not_sub_intrinsic_commute1(i8 %x, i8 %y) { %0: %ny = xor i8 %y, 255 call void @use8(i8 %ny) %1 = umin i8 %x, %y %m = xor i8 %1, 255 call void @use8(i8 %m) %subx = sub i8 %1, %x ret i8 %subx } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @smin_not_sub_intrinsic_commute2(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = smin i8 %nx, %ny call void @use8(i8 %m) %subx = sub i8 %m, %nx ret i8 %subx } => define i8 @smin_not_sub_intrinsic_commute2(i8 %x, i8 %y) { %0: %ny = xor i8 %y, 255 call void @use8(i8 %ny) %1 = smax i8 %x, %y %m = xor i8 %1, 255 call void @use8(i8 %m) %subx = sub i8 %x, %1 ret i8 %subx } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @smax_not_sub_intrinsic_commute3(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = smax i8 %ny, %nx call void @use8(i8 %m) %subx = sub i8 %m, %nx ret i8 %subx } => define i8 @smax_not_sub_intrinsic_commute3(i8 %x, i8 %y) { %0: %ny = xor i8 %y, 255 call void @use8(i8 %ny) %1 = smin i8 %x, %y %m = xor i8 %1, 255 call void @use8(i8 %m) %subx = sub i8 %x, %1 ret i8 %subx } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umin_not_sub_intrinsic_uses(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 call void @use8(i8 %nx) %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = umin i8 %nx, %ny call void @use8(i8 %m) %subx = sub i8 %nx, %m ret i8 %subx } => define i8 @umin_not_sub_intrinsic_uses(i8 %x, i8 %y) { %0: %nx = xor i8 %x, 255 call void @use8(i8 %nx) %ny = xor i8 %y, 255 call void @use8(i8 %ny) %m = umin i8 %nx, %ny call void @use8(i8 %m) %subx = sub i8 %nx, %m ret i8 %subx } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @umax_sub_op0(i8 %x, i8 %y) { %0: %u = umax i8 %y, %x %r = sub i8 %u, %y ret i8 %r } => define i8 @umax_sub_op0(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %x, %y ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define <2 x i8> @umax_sub_op0_vec_commute(<2 x i8> %x, <2 x i8> %y) { %0: %u = umax <2 x i8> %x, %y %r = sub <2 x i8> %u, %y ret <2 x i8> %r } => define <2 x i8> @umax_sub_op0_vec_commute(<2 x i8> %x, <2 x i8> %y) { %0: %1 = usub_sat <2 x i8> %x, %y ret <2 x i8> %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umax_sub_op0_use(i8 %x, i8 %y) { %0: %u = umax i8 %x, %y call void @use8(i8 %u) %r = sub i8 %u, %y ret i8 %r } => define i8 @umax_sub_op0_use(i8 %x, i8 %y) { %0: %u = umax i8 %x, %y call void @use8(i8 %u) %r = sub i8 %u, %y ret i8 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @umax_sub_op1(i8 %x, i8 %y) { %0: %u = umax i8 %x, %y %r = sub i8 %y, %u ret i8 %r } => define i8 @umax_sub_op1(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %x, %y %r = sub i8 0, %1 ret i8 %r } Transformation seems to be correct! ---------------------------------------- define <2 x i8> @umax_sub_op1_vec_commute(<2 x i8> %x, <2 x i8> %y) { %0: %u = umax <2 x i8> %y, %x %r = sub <2 x i8> %y, %u ret <2 x i8> %r } => define <2 x i8> @umax_sub_op1_vec_commute(<2 x i8> %x, <2 x i8> %y) { %0: %1 = usub_sat <2 x i8> %x, %y %r = sub <2 x i8> { 0, 0 }, %1 ret <2 x i8> %r } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @umax_sub_op1_use(i8 %x, i8 %y) { %0: %u = umax i8 %x, %y call void @use8(i8 %u) %r = sub i8 %y, %u ret i8 %r } => define i8 @umax_sub_op1_use(i8 %x, i8 %y) { %0: %u = umax i8 %x, %y call void @use8(i8 %u) %r = sub i8 %y, %u ret i8 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @umin_sub_op1(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x %r = sub i8 %y, %u ret i8 %r } => define i8 @umin_sub_op1(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %y, %x ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define i8 @umin_sub_op1_commute(i8 %x, i8 %y) { %0: %u = umin i8 %x, %y %r = sub i8 %y, %u ret i8 %r } => define i8 @umin_sub_op1_commute(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %y, %x ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define i8 @umin_sub_op0(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x %r = sub i8 %u, %y ret i8 %r } => define i8 @umin_sub_op0(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %y, %x %r = sub i8 0, %1 ret i8 %r } Transformation seems to be correct! ---------------------------------------- define i8 @umin_sub_op0_commute(i8 %x, i8 %y) { %0: %u = umin i8 %x, %y %r = sub i8 %u, %y ret i8 %r } => define i8 @umin_sub_op0_commute(i8 %x, i8 %y) { %0: %1 = usub_sat i8 %y, %x %r = sub i8 0, %1 ret i8 %r } Transformation seems to be correct! ---------------------------------------- define i8 @umin_sub_op1_use(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x call void @use8(i8 %u) %r = sub i8 %y, %u ret i8 %r } => define i8 @umin_sub_op1_use(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x call void @use8(i8 %u) %r = sub i8 %y, %u ret i8 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @umin_sub_op0_use(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x call void @use8(i8 %u) %r = sub i8 %u, %y ret i8 %r } => define i8 @umin_sub_op0_use(i8 %x, i8 %y) { %0: %u = umin i8 %y, %x call void @use8(i8 %u) %r = sub i8 %u, %y ret i8 %r } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @diff_add_smin(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = smin i8 %x, %y %s = sub i8 %a, %m ret i8 %s } => define i8 @diff_add_smin(i8 %x, i8 %y) { %0: %1 = smax i8 %x, %y ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define i8 @diff_add_smax(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = smax i8 %y, %x %s = sub i8 %a, %m ret i8 %s } => define i8 @diff_add_smax(i8 %x, i8 %y) { %0: %1 = smin i8 %y, %x ret i8 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @diff_add_umin(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = umin i8 %x, %y %s = sub i8 %a, %m ret i8 %s } => define i8 @diff_add_umin(i8 %x, i8 %y) { %0: %1 = umax i8 %x, %y ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define i8 @diff_add_umax(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = umax i8 %y, %x %s = sub i8 %a, %m ret i8 %s } => define i8 @diff_add_umax(i8 %x, i8 %y) { %0: %1 = umin i8 %y, %x ret i8 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @diff_add_smin_use(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = smin i8 %x, %y %s = sub i8 %a, %m call void @use8(i8 %m) ret i8 %s } => define i8 @diff_add_smin_use(i8 %x, i8 %y) { %0: %m = smin i8 %x, %y %1 = smax i8 %x, %y call void @use8(i8 %m) ret i8 %1 } Transformation seems to be correct! ---------------------------------------- define i8 @diff_add_use_smax(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = smax i8 %y, %x %s = sub i8 %a, %m call void @use8(i8 %a) ret i8 %s } => define i8 @diff_add_use_smax(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %1 = smin i8 %y, %x call void @use8(i8 %a) ret i8 %1 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @diff_add_use_umin_use(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = umin i8 %x, %y %s = sub i8 %a, %m call void @use8(i8 %a) call void @use8(i8 %m) ret i8 %s } => define i8 @diff_add_use_umin_use(i8 %x, i8 %y) { %0: %a = add i8 %x, %y %m = umin i8 %x, %y %s = sub i8 %a, %m call void @use8(i8 %a) call void @use8(i8 %m) ret i8 %s } Transformation seems to be correct! (syntactically equal) ---------------------------------------- define i8 @sub_add_umin(i8 %x, i8 %y, i8 %z) { %0: %a = add i8 %x, %y %m = umin i8 %y, %z %s = sub i8 %a, %m ret i8 %s } => define i8 @sub_add_umin(i8 %x, i8 %y, i8 %z) { %0: %1 = usub_sat i8 %y, %z %s = add i8 %1, %x ret i8 %s } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define i8 @sub_add_umin_commute_umin(i8 %x, i8 %y, i8 %z) { %0: %a = add i8 %x, %y %m = umin i8 %z, %y %s = sub i8 %a, %m ret i8 %s } => define i8 @sub_add_umin_commute_umin(i8 %x, i8 %y, i8 %z) { %0: %1 = usub_sat i8 %z, %y %s = add i8 %1, %x ret i8 %s } Transformation doesn't verify! ERROR: Target's return value is more undefined Example: i8 %x = any i8 %y = #x00 (0) i8 %z = undef Source: i8 %a = any i8 %m = #x00 (0) [based on undef value] i8 %s = any Target: i8 %1 = #x8b (139, -117) i8 %s = any Source value: any Target value: any ------------------- SMT STATS ------------------- Num queries: 235 Num invalid: 0 Num skips: 0 Num trivial: 75 (24.2%) Num timeout: 26 (11.1%) Num errors: 0 (0.0%) Num SAT: 125 (53.2%) Num UNSAT: 84 (35.7%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/sub-minmax.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstCombine/sub-minmax.ll