Test source: git
Source: <stdin> ---------------------------------------- define <2 x i4> @splat(<2 x i4> %x, <2 x i4> %y) { %0: %n0 = xor <2 x i4> %x, %y %n1 = and <2 x i4> %n0, { 14, 14 } %r = xor <2 x i4> %n1, %y ret <2 x i4> %r } => define <2 x i4> @splat(<2 x i4> %x, <2 x i4> %y) { %0: %1 = and <2 x i4> %x, { 14, 14 } %2 = and <2 x i4> %y, { 1, 1 } %r = or <2 x i4> %1, %2 ret <2 x i4> %r } Transformation seems to be correct! ---------------------------------------- define <3 x i4> @splat_undef(<3 x i4> %x, <3 x i4> %y) { %0: %n0 = xor <3 x i4> %x, %y %n1 = and <3 x i4> %n0, { 14, undef, 14 } %r = xor <3 x i4> %n1, %y ret <3 x i4> %r } => define <3 x i4> @splat_undef(<3 x i4> %x, <3 x i4> %y) { %0: %1 = and <3 x i4> %x, { 14, undef, 14 } %2 = and <3 x i4> %y, { 1, undef, 1 } %r = or <3 x i4> %1, %2 ret <3 x i4> %r } Transformation doesn't verify! ERROR: Value mismatch Example: <3 x i4> %x = < #x0 (0), #xd (13, -3), #x0 (0) > <3 x i4> %y = < undef, #x8 (8, -8), #x0 (0) > Source: <3 x i4> %n0 = < #x0 (0), #x5 (5), #x0 (0) > <3 x i4> %n1 = < #x0 (0), #x0 (0) [based on undef value], #x0 (0) > <3 x i4> %r = < #x0 (0), #x8 (8, -8), #x0 (0) > Target: <3 x i4> %1 = < #x0 (0), #x1 (1), #x0 (0) > <3 x i4> %2 = < #x0 (0), #x0 (0), #x0 (0) > <3 x i4> %r = < #x0 (0), #x1 (1), #x0 (0) > Source value: < #x0 (0), #x8 (8, -8), #x0 (0) > Target value: < #x0 (0), #x1 (1), #x0 (0) > ------------------- SMT STATS ------------------- Num queries: 6 Num invalid: 0 Num skips: 0 Num trivial: 7 (53.8%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 4 (66.7%) Num UNSAT: 2 (33.3%)
+ : '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/unfold-masked-merge-with-const-mask-vector.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/unfold-masked-merge-with-const-mask-vector.ll