Test source: git
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!
+ : '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