Test Failure: Transforms/InstSimplify/AndOrXor.ll

Test source: git

Log:

Source: <stdin>

----------------------------------------
define i8 @and0(i8 %x) denormal-fp-math=ieee,ieee {
%0:
  %r = and i8 %x, 0
  ret i8 %r
}
=>
define i8 @and0(i8 %x) denormal-fp-math=ieee,ieee {
%0:
  ret i8 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i8> @and0_vec_undef_elt(<2 x i8> %x) denormal-fp-math=ieee,ieee {
%0:
  %r = and <2 x i8> %x, { undef, 0 }
  ret <2 x i8> %r
}
=>
define <2 x i8> @and0_vec_undef_elt(<2 x i8> %x) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i8> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define <2 x i32> @add_nsw_signbit(<2 x i32> %x) denormal-fp-math=ieee,ieee {
%0:
  %y = xor <2 x i32> %x, { 2147483648, 2147483648 }
  %z = add nsw <2 x i32> %y, { 2147483648, 2147483648 }
  ret <2 x i32> %z
}
=>
define <2 x i32> @add_nsw_signbit(<2 x i32> %x) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i32> %x
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define <2 x i32> @add_nsw_signbit_undef(<2 x i32> %x) denormal-fp-math=ieee,ieee {
%0:
  %y = xor <2 x i32> %x, { undef, 2147483648 }
  %z = add nsw <2 x i32> %y, { 2147483648, undef }
  ret <2 x i32> %z
}
=>
define <2 x i32> @add_nsw_signbit_undef(<2 x i32> %x) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i32> %x
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define <2 x i5> @add_nuw_signbit(<2 x i5> %x) denormal-fp-math=ieee,ieee {
%0:
  %y = xor <2 x i5> %x, { 16, 16 }
  %z = add nuw <2 x i5> %y, { 16, 16 }
  ret <2 x i5> %z
}
=>
define <2 x i5> @add_nuw_signbit(<2 x i5> %x) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i5> %x
}
Transformation seems to be correct!


----------------------------------------
define <2 x i5> @add_nuw_signbit_undef(<2 x i5> %x) denormal-fp-math=ieee,ieee {
%0:
  %y = xor <2 x i5> %x, { 16, undef }
  %z = add nuw <2 x i5> %y, { undef, 16 }
  ret <2 x i5> %z
}
=>
define <2 x i5> @add_nuw_signbit_undef(<2 x i5> %x) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i5> %x
}
Transformation seems to be correct!


----------------------------------------
define i64 @pow2(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  %negx = sub i32 0, %x
  %x2 = and i32 %x, %negx
  %e = zext i32 %x2 to i64
  %nege = sub i64 0, %e
  %e2 = and i64 %e, %nege
  ret i64 %e2
}
=>
define i64 @pow2(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  %negx = sub i32 0, %x
  %x2 = and i32 %x, %negx
  %e = zext i32 %x2 to i64
  ret i64 %e
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i64 @pow2b(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  %sh = shl i32 2, %x
  %e = zext i32 %sh to i64
  %nege = sub i64 0, %e
  %e2 = and i64 %e, %nege
  ret i64 %e2
}
=>
define i64 @pow2b(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  %sh = shl i32 2, %x
  %e = zext i32 %sh to i64
  ret i64 %e
}
Transformation seems to be correct!


----------------------------------------
define i32 @pow2b_max(i32 %x, i32 %y) denormal-fp-math=ieee,ieee {
%0:
  %shx = shl i32 2, %x
  %shy = shl i32 32, %y
  %m = smax i32 %shx, %shy
  %neg = sub i32 0, %m
  %r = and i32 %m, %neg
  ret i32 %r
}
=>
define i32 @pow2b_max(i32 %x, i32 %y) denormal-fp-math=ieee,ieee {
%0:
  %shx = shl i32 2, %x
  %shy = shl i32 32, %y
  %m = smax i32 %shx, %shy
  ret i32 %m
}
Transformation seems to be correct!


----------------------------------------
define i32 @pow2_decrement(i32 %p) denormal-fp-math=ieee,ieee {
%0:
  %x = shl i32 1, %p
  %a = add i32 %x, 4294967295
  %r = and i32 %a, %x
  ret i32 %r
}
=>
define i32 @pow2_decrement(i32 %p) denormal-fp-math=ieee,ieee {
%0:
  ret i32 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i32> @pow2_decrement_commute_vec(<2 x i32> %p) denormal-fp-math=ieee,ieee {
%0:
  %x = and <2 x i32> %p, { 2048, 2048 }
  %a = add <2 x i32> %x, { 4294967295, 4294967295 }
  %r = and <2 x i32> %x, %a
  ret <2 x i32> %r
}
=>
define <2 x i32> @pow2_decrement_commute_vec(<2 x i32> %p) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i32> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define <2 x i32> @pow2_decrement_min_vec(<2 x i32> %x, <2 x i32> %y) denormal-fp-math=ieee,ieee {
%0:
  %p1 = and <2 x i32> %x, { 2048, 2048 }
  %p2 = shl <2 x i32> { 1, 1 }, %y
  %m = umin <2 x i32> %p1, %p2
  %a = add <2 x i32> %m, { 4294967295, 4294967295 }
  %r = and <2 x i32> %m, %a
  ret <2 x i32> %r
}
=>
define <2 x i32> @pow2_decrement_min_vec(<2 x i32> %x, <2 x i32> %y) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i32> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps0(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add i32 %b, 2
  %2 = icmp ult i32 %1, 4
  %cmp3 = icmp sgt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps0(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps0_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add <2 x i32> %b, { 2, 2 }
  %2 = icmp ult <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp sgt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps0_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps1(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw i32 %b, 2
  %2 = icmp slt i32 %1, 4
  %cmp3 = icmp sgt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps1(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps1_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw <2 x i32> %b, { 2, 2 }
  %2 = icmp slt <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp sgt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps1_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps2(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add i32 %b, 2
  %2 = icmp ule i32 %1, 3
  %cmp3 = icmp sgt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps2(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps2_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add <2 x i32> %b, { 2, 2 }
  %2 = icmp ule <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp sgt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps2_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps3(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw i32 %b, 2
  %2 = icmp sle i32 %1, 3
  %cmp3 = icmp sgt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps3(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps3_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw <2 x i32> %b, { 2, 2 }
  %2 = icmp sle <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp sgt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps3_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps4(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw i32 %b, 2
  %2 = icmp ult i32 %1, 4
  %cmp3 = icmp ugt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps4(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps4_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw <2 x i32> %b, { 2, 2 }
  %2 = icmp ult <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp ugt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps4_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @and_of_icmps5(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw i32 %b, 2
  %2 = icmp ule i32 %1, 3
  %cmp3 = icmp ugt i32 %b, 2
  %cmp = and i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @and_of_icmps5(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 0
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @and_of_icmps5_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw <2 x i32> %b, { 2, 2 }
  %2 = icmp ule <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp ugt <2 x i32> %b, { 2, 2 }
  %cmp = and <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @and_of_icmps5_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps0(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add i32 %b, 2
  %2 = icmp uge i32 %1, 4
  %cmp3 = icmp sle i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps0(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps0_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add <2 x i32> %b, { 2, 2 }
  %2 = icmp uge <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp sle <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps0_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps1(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw i32 %b, 2
  %2 = icmp sge i32 %1, 4
  %cmp3 = icmp sle i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps1(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps1_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw <2 x i32> %b, { 2, 2 }
  %2 = icmp sge <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp sle <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps1_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps2(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add i32 %b, 2
  %2 = icmp ugt i32 %1, 3
  %cmp3 = icmp sle i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps2(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps2_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add <2 x i32> %b, { 2, 2 }
  %2 = icmp ugt <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp sle <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps2_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps3(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw i32 %b, 2
  %2 = icmp sgt i32 %1, 3
  %cmp3 = icmp sle i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps3(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps3_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nsw <2 x i32> %b, { 2, 2 }
  %2 = icmp sgt <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp sle <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps3_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps4(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw i32 %b, 2
  %2 = icmp uge i32 %1, 4
  %cmp3 = icmp ule i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps4(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps4_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw <2 x i32> %b, { 2, 2 }
  %2 = icmp uge <2 x i32> %1, { 4, 4 }
  %cmp3 = icmp ule <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps4_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i1 @or_of_icmps5(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw i32 %b, 2
  %2 = icmp ugt i32 %1, 3
  %cmp3 = icmp ule i32 %b, 2
  %cmp = or i1 %2, %cmp3
  ret i1 %cmp
}
=>
define i1 @or_of_icmps5(i32 %b) denormal-fp-math=ieee,ieee {
%0:
  ret i1 1
}
Transformation seems to be correct!


----------------------------------------
define <2 x i1> @or_of_icmps5_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %1 = add nuw <2 x i32> %b, { 2, 2 }
  %2 = icmp ugt <2 x i32> %1, { 3, 3 }
  %cmp3 = icmp ule <2 x i32> %b, { 2, 2 }
  %cmp = or <2 x i1> %2, %cmp3
  ret <2 x i1> %cmp
}
=>
define <2 x i1> @or_of_icmps5_vec(<2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  ret <2 x i1> { 1, 1 }
}
Transformation seems to be correct!


----------------------------------------
define i32 @neg_nuw(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  %neg = sub nuw i32 0, %x
  ret i32 %neg
}
=>
define i32 @neg_nuw(i32 %x) denormal-fp-math=ieee,ieee {
%0:
  ret i32 0
}
Transformation seems to be correct!


----------------------------------------
define i32 @and_of_zexted_icmps(i32 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq i32 %i, 0
  %conv0 = zext i1 %cmp0 to i32
  %cmp1 = icmp ugt i32 %i, 4
  %conv1 = zext i1 %cmp1 to i32
  %and = and i32 %conv0, %conv1
  ret i32 %and
}
=>
define i32 @and_of_zexted_icmps(i32 %i) denormal-fp-math=ieee,ieee {
%0:
  ret i32 0
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @and_of_zexted_icmps_vec(<4 x i32> %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq <4 x i32> %i, { 0, 0, 0, 0 }
  %conv0 = zext <4 x i1> %cmp0 to <4 x i32>
  %cmp1 = icmp slt <4 x i32> %i, { 0, 0, 0, 0 }
  %conv1 = zext <4 x i1> %cmp1 to <4 x i32>
  %and = and <4 x i32> %conv0, %conv1
  ret <4 x i32> %and
}
=>
define <4 x i32> @and_of_zexted_icmps_vec(<4 x i32> %i) denormal-fp-math=ieee,ieee {
%0:
  ret <4 x i32> { 0, 0, 0, 0 }
}
Transformation seems to be correct!


----------------------------------------
define i5 @and_of_sexted_icmps(i3 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq i3 %i, 0
  %conv0 = sext i1 %cmp0 to i5
  %cmp1 = icmp ugt i3 %i, 1
  %conv1 = sext i1 %cmp1 to i5
  %and = and i5 %conv0, %conv1
  ret i5 %and
}
=>
define i5 @and_of_sexted_icmps(i3 %i) denormal-fp-math=ieee,ieee {
%0:
  ret i5 0
}
Transformation seems to be correct!


----------------------------------------
define i3 @and_of_bitcast_icmps_vec(<3 x i65> %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp sgt <3 x i65> %i, { 0, 0, 0 }
  %conv0 = bitcast <3 x i1> %cmp0 to i3
  %cmp1 = icmp slt <3 x i65> %i, { 0, 0, 0 }
  %conv1 = bitcast <3 x i1> %cmp1 to i3
  %and = and i3 %conv0, %conv1
  ret i3 %and
}
=>
define i3 @and_of_bitcast_icmps_vec(<3 x i65> %i) denormal-fp-math=ieee,ieee {
%0:
  ret i3 0
}
Transformation seems to be correct!


----------------------------------------
define i16 @and_of_different_cast_icmps(i8 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq i8 %i, 0
  %conv0 = zext i1 %cmp0 to i16
  %cmp1 = icmp eq i8 %i, 1
  %conv1 = sext i1 %cmp1 to i16
  %and = and i16 %conv0, %conv1
  ret i16 %and
}
=>
define i16 @and_of_different_cast_icmps(i8 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq i8 %i, 0
  %conv0 = zext i1 %cmp0 to i16
  %cmp1 = icmp eq i8 %i, 1
  %conv1 = sext i1 %cmp1 to i16
  %and = and i16 %conv0, %conv1
  ret i16 %and
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <2 x i3> @and_of_different_cast_icmps_vec(<2 x i8> %i, <2 x i16> %j) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq <2 x i8> %i, { 0, 0 }
  %conv0 = zext <2 x i1> %cmp0 to <2 x i3>
  %cmp1 = icmp ugt <2 x i16> %j, { 1, 1 }
  %conv1 = zext <2 x i1> %cmp1 to <2 x i3>
  %and = and <2 x i3> %conv0, %conv1
  ret <2 x i3> %and
}
=>
define <2 x i3> @and_of_different_cast_icmps_vec(<2 x i8> %i, <2 x i16> %j) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp eq <2 x i8> %i, { 0, 0 }
  %conv0 = zext <2 x i1> %cmp0 to <2 x i3>
  %cmp1 = icmp ugt <2 x i16> %j, { 1, 1 }
  %conv1 = zext <2 x i1> %cmp1 to <2 x i3>
  %and = and <2 x i3> %conv0, %conv1
  ret <2 x i3> %and
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i32 @or_of_zexted_icmps(i32 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp ne i32 %i, 0
  %conv0 = zext i1 %cmp0 to i32
  %cmp1 = icmp uge i32 4, %i
  %conv1 = zext i1 %cmp1 to i32
  %or = or i32 %conv0, %conv1
  ret i32 %or
}
=>
define i32 @or_of_zexted_icmps(i32 %i) denormal-fp-math=ieee,ieee {
%0:
  ret i32 1
}
Transformation seems to be correct!


----------------------------------------
define i3 @or_of_bitcast_icmps_vec(<3 x i65> %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp sge <3 x i65> %i, { 0, 0, 0 }
  %conv0 = bitcast <3 x i1> %cmp0 to i3
  %cmp1 = icmp slt <3 x i65> %i, { 0, 0, 0 }
  %conv1 = bitcast <3 x i1> %cmp1 to i3
  %or = or i3 %conv0, %conv1
  ret i3 %or
}
=>
define i3 @or_of_bitcast_icmps_vec(<3 x i65> %i) denormal-fp-math=ieee,ieee {
%0:
  %__constexpr_0 = bitcast <3 x i1> { 1, 1, 1 } to i3
  ret i3 %__constexpr_0
}
Transformation seems to be correct!


----------------------------------------
define i16 @or_of_different_cast_icmps(i8 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp ne i8 %i, 0
  %conv0 = zext i1 %cmp0 to i16
  %cmp1 = icmp ne i8 %i, 1
  %conv1 = sext i1 %cmp1 to i16
  %or = or i16 %conv0, %conv1
  ret i16 %or
}
=>
define i16 @or_of_different_cast_icmps(i8 %i) denormal-fp-math=ieee,ieee {
%0:
  %cmp0 = icmp ne i8 %i, 0
  %conv0 = zext i1 %cmp0 to i16
  %cmp1 = icmp ne i8 %i, 1
  %conv1 = sext i1 %cmp1 to i16
  %or = or i16 %conv0, %conv1
  ret i16 %or
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define i3 @or_xor_andn_commute0(i3 %a, i3 %b) denormal-fp-math=ieee,ieee {
%0:
  %neg = xor i3 %b, 7
  %and = and i3 %a, %neg
  %xor = xor i3 %a, %b
  %or = or i3 %and, %xor
  ret i3 %or
}
=>
define i3 @or_xor_andn_commute0(i3 %a, i3 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i3 %a, %b
  ret i3 %xor
}
Transformation seems to be correct!


----------------------------------------
define i32 @or_xor_andn_commute1(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %neg = xor i32 %b, 4294967295
  %and = and i32 %neg, %a
  %xor = xor i32 %a, %b
  %or = or i32 %and, %xor
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute1(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %a, %b
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define <2 x i32> @or_xor_andn_commute2(<2 x i32> %a, <2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor <2 x i32> %a, %b
  %neg = xor <2 x i32> %b, { 4294967295, undef }
  %and = and <2 x i32> %a, %neg
  %or = or <2 x i32> %xor, %and
  ret <2 x i32> %or
}
=>
define <2 x i32> @or_xor_andn_commute2(<2 x i32> %a, <2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor <2 x i32> %a, %b
  ret <2 x i32> %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xor_andn_commute3(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %a, %b
  %neg = xor i32 %b, 4294967295
  %and = and i32 %neg, %a
  %or = or i32 %xor, %and
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute3(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %a, %b
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xor_andn_commute4(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %neg = xor i32 %b, 4294967295
  %and = and i32 %a, %neg
  %xor = xor i32 %b, %a
  %or = or i32 %and, %xor
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute4(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xor_andn_commute5(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %neg = xor i32 %b, 4294967295
  %and = and i32 %neg, %a
  %xor = xor i32 %b, %a
  %or = or i32 %and, %xor
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute5(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xor_andn_commute6(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  %neg = xor i32 %b, 4294967295
  %and = and i32 %a, %neg
  %or = or i32 %xor, %and
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute6(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xor_andn_commute7(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  %neg = xor i32 %b, 4294967295
  %and = and i32 %neg, %a
  %or = or i32 %xor, %and
  ret i32 %or
}
=>
define i32 @or_xor_andn_commute7(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %xor = xor i32 %b, %a
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i32 @or_xorn_and_commute0(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor i32 %a, 4294967295
  %and = and i32 %a, %b
  %xor = xor i32 %nega, %b
  %or = or i32 %xor, %and
  ret i32 %or
}
=>
define i32 @or_xorn_and_commute0(i32 %a, i32 %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor i32 %a, 4294967295
  %xor = xor i32 %nega, %b
  ret i32 %xor
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout

----------------------------------------
define i3 @or_xorn_and_commute1(i3 %a, i3 %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor i3 %a, 7
  %and = and i3 %a, %b
  %xor = xor i3 %b, %nega
  %or = or i3 %xor, %and
  ret i3 %or
}
=>
define i3 @or_xorn_and_commute1(i3 %a, i3 %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor i3 %a, 7
  %xor = xor i3 %b, %nega
  ret i3 %xor
}
Transformation seems to be correct!


----------------------------------------
define <2 x i32> @or_xorn_and_commute2(<2 x i32> %a, <2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor <2 x i32> %a, { undef, 4294967295 }
  %and = and <2 x i32> %b, %a
  %xor = xor <2 x i32> %b, %nega
  %or = or <2 x i32> %xor, %and
  ret <2 x i32> %or
}
=>
define <2 x i32> @or_xorn_and_commute2(<2 x i32> %a, <2 x i32> %b) denormal-fp-math=ieee,ieee {
%0:
  %nega = xor <2 x i32> %a, { undef, 4294967295 }
  %xor = xor <2 x i32> %b, %nega
  ret <2 x i32> %xor
}
Transformation doesn't verify! (unsound)
ERROR: Target's return value is more undefined

Example:
<2 x i32> %a = < #xffffffff (4294967295, -1), undef >
<2 x i32> %b = < #xffffffff (4294967295, -1), undef >

Source:
<2 x i32> %nega = < #xffffffff (4294967295, -1)	[based on undef value], #xffffffff (4294967295, -1)	[based on undef value] >
<2 x i32> %and = < #xffffffff (4294967295, -1), #x00000000 (0)	[based on undef value] >
<2 x i32> %xor = < #x00000000 (0), #xffffffff (4294967295, -1)	[based on undef value] >
<2 x i32> %or = < #xffffffff (4294967295, -1), #xffffffff (4294967295, -1) >

Target:
<2 x i32> %nega = < #xadda079c (2916747164, -1378220132), #x39deec07 (970910727) >
<2 x i32> %xor = < #x5225f863 (1378220131), #xffffeeb7 (4294962871, -4425) >
Source value: < #xffffffff (4294967295, -1), #xffffffff (4294967295, -1) >
Target value: < #x5225f863 (1378220131), #xffffeeb7 (4294962871, -4425) >

Pass: ModuleToFunctionPassAdaptor
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=module(tv),function(instsimplify),module(tv)' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'


------------------- SMT STATS -------------------
Num queries: 243
Num invalid: 0
Num skips:   0
Num trivial: 250 (50.7%)
Num timeout: 11 (4.5%)
Num errors:  0 (0.0%)
Num SAT:     163 (67.1%)
Num UNSAT:   69 (28.4%)
Alive2: Transform doesn't verify; aborting!

stderr:

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

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

 

<-- Back