Test Failure: Transforms/InstCombine/shuffle_select-inseltpoison.ll

Test source: git

Comments: LLVM PR74326

Log:

Source: <stdin>

----------------------------------------
define <4 x i32> @add(<4 x i32> %v) {
%0:
  %b = add <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @add(<4 x i32> %v) {
%0:
  %s = add <4 x i32> %v, { 11, 0, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @add_nuw_nsw(<4 x i32> %v) {
%0:
  %b = add nsw nuw <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @add_nuw_nsw(<4 x i32> %v) {
%0:
  %s = add nsw nuw <4 x i32> %v, { 11, 0, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @add_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = add <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 5, 4294967295, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @add_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = add <4 x i32> %v, { 11, 0, undef, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @add_nuw_nsw_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = add nsw nuw <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 4294967295, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @add_nuw_nsw_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = add <4 x i32> %v, { 11, undef, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @sub(<4 x i32> %v) {
%0:
  %b = sub <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 0, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @sub(<4 x i32> %v) {
%0:
  %b = sub <4 x i32> { poison, poison, poison, 14 }, %v
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 0, 1, 2, 7
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @mul(<4 x i32> %v) {
%0:
  %b = mul nsw nuw <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4294967295, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @mul(<4 x i32> %v) {
%0:
  %s = mul <4 x i32> %v, { undef, 12, 1, 14 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @shl(<4 x i32> %v) {
%0:
  %b = shl <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @shl(<4 x i32> %v) {
%0:
  %s = shl <4 x i32> %v, { 0, 12, 13, 0 }
  ret <4 x i32> %s
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @shl_nsw(<4 x i32> %v) {
%0:
  %b = shl nsw <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @shl_nsw(<4 x i32> %v) {
%0:
  %s = shl nsw <4 x i32> %v, { 0, 12, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @shl_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = shl <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4294967295, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @shl_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = shl <4 x i32> %v, { 0, 12, 13, 0 }
  ret <4 x i32> %s
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @shl_nuw_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = shl nuw <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4294967295, 5, 2, 4294967295
  ret <4 x i32> %s
}
=>
define <4 x i32> @shl_nuw_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = shl nuw <4 x i32> %v, { 0, 0, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @lshr_constant_op0(<4 x i32> %v) {
%0:
  %b = lshr <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @lshr_constant_op0(<4 x i32> %v) {
%0:
  %s = lshr <4 x i32> %v, { 11, 12, 0, 14 }
  ret <4 x i32> %s
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @lshr_exact_constant_op0(<4 x i32> %v) {
%0:
  %b = lshr exact <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @lshr_exact_constant_op0(<4 x i32> %v) {
%0:
  %s = lshr exact <4 x i32> %v, { 11, 12, 0, 14 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @lshr_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = shl <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4294967295, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @lshr_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = shl <4 x i32> %v, { 0, 12, 13, 0 }
  ret <4 x i32> %s
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @lshr_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = lshr exact <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4294967295, 5, 2, 4294967295
  ret <4 x i32> %s
}
=>
define <4 x i32> @lshr_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = lshr exact <4 x i32> %v, { 0, 0, 13, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @lshr_constant_op1(<4 x i32> %v) {
%0:
  %b = lshr exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4, 5, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @lshr_constant_op1(<4 x i32> %v) {
%0:
  %b = lshr exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 6, 3
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <3 x i32> @ashr(<3 x i32> %v) {
%0:
  %b = ashr <3 x i32> %v, { 11, 12, 13 }
  %s = shufflevector <3 x i32> %b, <3 x i32> %v, 3, 1, 2
  ret <3 x i32> %s
}
=>
define <3 x i32> @ashr(<3 x i32> %v) {
%0:
  %s = ashr <3 x i32> %v, { 0, 12, 13 }
  ret <3 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <3 x i42> @and(<3 x i42> %v) {
%0:
  %b = and <3 x i42> %v, { 11, 12, 13 }
  %s = shufflevector <3 x i42> %v, <3 x i42> %b, 0, 4, 4294967295
  ret <3 x i42> %s
}
=>
define <3 x i42> @and(<3 x i42> %v) {
%0:
  %s = and <3 x i42> %v, { 4398046511103, 12, undef }
  ret <3 x i42> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @or(<4 x i32> %v) {
%0:
  %b = or <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 4, 5, 2, 3
  call void @use_v4i32(<4 x i32> %b)
  ret <4 x i32> %s
}
=>
define <4 x i32> @or(<4 x i32> %v) {
%0:
  %b = or <4 x i32> %v, { 11, 12, 13, 14 }
  %s = or <4 x i32> %v, { 0, 0, 13, 14 }
  call void @use_v4i32(<4 x i32> %b)
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @xor(<4 x i32> %v) {
%0:
  %b = xor <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 0, 5, 2, 3
  ret <4 x i32> %s
}
=>
define <4 x i32> @xor(<4 x i32> %v) {
%0:
  %s = xor <4 x i32> %v, { 0, 12, 0, 0 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @udiv(<4 x i32> %v) {
%0:
  %b = udiv <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @udiv(<4 x i32> %v) {
%0:
  %b = udiv <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 2, 7
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @udiv_exact(<4 x i32> %v) {
%0:
  %b = udiv exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @udiv_exact(<4 x i32> %v) {
%0:
  %b = udiv exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 2, 7
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @udiv_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = udiv <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 4294967295, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @udiv_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = udiv <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 4294967295, 2, 7
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @udiv_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = udiv exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 4294967295, 2, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @udiv_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = udiv exact <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 4294967295, 2, 7
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @sdiv(<4 x i32> %v) {
%0:
  %b = sdiv <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4, 1, 6, 3
  ret <4 x i32> %s
}
=>
define <4 x i32> @sdiv(<4 x i32> %v) {
%0:
  %s = sdiv <4 x i32> %v, { 11, 1, 13, 1 }
  ret <4 x i32> %s
}
Transformation doesn't verify!
ERROR: Timeout


----------------------------------------
define <4 x i32> @sdiv_exact(<4 x i32> %v) {
%0:
  %b = sdiv exact <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4, 1, 6, 3
  ret <4 x i32> %s
}
=>
define <4 x i32> @sdiv_exact(<4 x i32> %v) {
%0:
  %s = sdiv exact <4 x i32> %v, { 11, 1, 13, 1 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @sdiv_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = sdiv <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4294967295, 1, 6, 4294967295
  ret <4 x i32> %s
}
=>
define <4 x i32> @sdiv_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = sdiv <4 x i32> %v, { 1, 1, 13, 1 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @sdiv_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = sdiv exact <4 x i32> %v, { 11, 12, 13, 14 }
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 4294967295, 1, 6, 4294967295
  ret <4 x i32> %s
}
=>
define <4 x i32> @sdiv_exact_undef_mask_elt(<4 x i32> %v) {
%0:
  %s = sdiv exact <4 x i32> %v, { 1, 1, 13, 1 }
  ret <4 x i32> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x i32> @urem(<4 x i32> %v) {
%0:
  %b = urem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 6, 7
  ret <4 x i32> %s
}
=>
define <4 x i32> @urem(<4 x i32> %v) {
%0:
  %b = urem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 6, 7
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @urem_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = urem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 6, 4294967295
  ret <4 x i32> %s
}
=>
define <4 x i32> @urem_undef_mask_elt(<4 x i32> %v) {
%0:
  %b = urem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %b, <4 x i32> %v, 0, 1, 6, 4294967295
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x i32> @srem(<4 x i32> %v) {
%0:
  %b = srem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 0, 1, 6, 3
  ret <4 x i32> %s
}
=>
define <4 x i32> @srem(<4 x i32> %v) {
%0:
  %b = srem <4 x i32> { 11, 12, 13, 14 }, %v
  %s = shufflevector <4 x i32> %v, <4 x i32> %b, 0, 1, 6, 3
  ret <4 x i32> %s
}
Transformation seems to be correct! (syntactically equal)


----------------------------------------
define <4 x float> @fadd(<4 x float> %v) {
%0:
  %b = fadd <4 x float> %v, { 41.000000, 42.000000, 43.000000, 44.000000 }, exceptions=ignore
  %s = shufflevector <4 x float> %b, <4 x float> %v, 0, 1, 6, 7
  ret <4 x float> %s
}
=>
define <4 x float> @fadd(<4 x float> %v) {
%0:
  %s = fadd <4 x float> %v, { 41.000000, 42.000000, -0.000000, -0.000000 }, exceptions=ignore
  ret <4 x float> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x double> @fsub(<4 x double> %v) {
%0:
  %b = fsub <4 x double> { 41.000000, 42.000000, 43.000000, 44.000000 }, %v, exceptions=ignore
  %s = shufflevector <4 x double> %v, <4 x double> %b, 4294967295, 1, 6, 7
  ret <4 x double> %s
}
=>
define <4 x double> @fsub(<4 x double> %v) {
%0:
  %b = fsub <4 x double> { poison, poison, 43.000000, 44.000000 }, %v, exceptions=ignore
  %s = shufflevector <4 x double> %v, <4 x double> %b, 4294967295, 1, 6, 7
  ret <4 x double> %s
}
Transformation seems to be correct!


----------------------------------------
define <4 x float> @fmul(<4 x float> %v) {
%0:
  %b = fmul nnan ninf <4 x float> %v, { 41.000000, 42.000000, 43.000000, 44.000000 }, exceptions=ignore
  %s = shufflevector <4 x float> %b, <4 x float> %v, 0, 5, 6, 7
  ret <4 x float> %s
}
=>
define <4 x float> @fmul(<4 x float> %v) {
%0:
  %s = fmul nnan ninf <4 x float> %v, { 41.000000, 1.000000, 1.000000, 1.000000 }, exceptions=ignore
  ret <4 x float> %s
}
Transformation doesn't verify!
ERROR: Target is more poisonous than source

Example:
<4 x float> %v = < poison, poison, undef, poison >

Source:
<4 x float> %b = < poison, poison, poison, poison >
<4 x float> %s = < poison, poison, NaN	[based on undef value], poison >

Target:
<4 x float> %s = < poison, poison, poison, poison >
Source value: < poison, poison, NaN, poison >
Target value: < poison, poison, poison, poison >


------------------- SMT STATS -------------------
Num queries: 142
Num invalid: 0
Num skips:   0
Num trivial: 88 (38.3%)
Num timeout: 5 (3.5%)
Num errors:  0 (0.0%)
Num SAT:     80 (56.3%)
Num UNSAT:   57 (40.1%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 2'
+ /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S
+ /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/shuffle_select-inseltpoison.ll

FileCheck error: '<stdin>' is empty.
FileCheck command line:  /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/shuffle_select-inseltpoison.ll

 

<-- Back