Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. SLPVectorizerPass ---------------------------------------- define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: %mul89 = fmul double 0.000000, 0.000000, exceptions=ignore %mul90 = fmul double 0.000000, 0.000000, exceptions=ignore %sub91 = fsub double %mul89, %mul90, exceptions=ignore %div92 = fdiv double %sub91, undef, exceptions=ignore %mul94 = fmul double 0.000000, 0.000000, exceptions=ignore %mul95 = fmul double 0.000000, 0.000000, exceptions=ignore %sub96 = fsub double %mul94, %mul95, exceptions=ignore %div97 = fdiv double %sub96, undef, exceptions=ignore br label %if.end103 %if.else: br label %if.end103 %if.end103: %0 = phi double [ 0.000000, %for.end39 ], [ %div97, %if.then88 ], [ 0.000000, %if.else ], [ 0.000000, %for.cond14.preheader ], [ 0.000000, %for.end ] %1 = phi double [ undef, %for.end39 ], [ %div92, %if.then88 ], [ undef, %if.else ], [ 0.000000, %for.cond14.preheader ], [ 0.000000, %for.end ] ret void } Transformation seems to be correct! (syntactically equal) -- 3. SLPVectorizerPass ---------------------------------------- define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: %mul89 = fmul double 0.000000, 0.000000, exceptions=ignore %mul90 = fmul double 0.000000, 0.000000, exceptions=ignore %sub91 = fsub double %mul89, %mul90, exceptions=ignore %div92 = fdiv double %sub91, undef, exceptions=ignore %mul94 = fmul double 0.000000, 0.000000, exceptions=ignore %mul95 = fmul double 0.000000, 0.000000, exceptions=ignore %sub96 = fsub double %mul94, %mul95, exceptions=ignore %div97 = fdiv double %sub96, undef, exceptions=ignore br label %if.end103 %if.else: br label %if.end103 %if.end103: %0 = phi double [ 0.000000, %for.end39 ], [ %div97, %if.then88 ], [ 0.000000, %if.else ], [ 0.000000, %for.cond14.preheader ], [ 0.000000, %for.end ] %1 = phi double [ undef, %for.end39 ], [ %div92, %if.then88 ], [ undef, %if.else ], [ 0.000000, %for.cond14.preheader ], [ 0.000000, %for.end ] ret void } => define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: br label %if.end103 %if.else: br label %if.end103 %if.end103: %0 = phi <2 x double> [ { 0.000000, undef }, %for.end39 ], [ { 0x7ff8000000000000, 0x7ff8000000000000 }, %if.then88 ], [ { 0.000000, undef }, %if.else ], [ { 0.000000, 0.000000 }, %for.cond14.preheader ], [ { 0.000000, 0.000000 }, %for.end ] ret void } Transformation seems to be correct! -- 4. DCEPass ---------------------------------------- define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: br label %if.end103 %if.else: br label %if.end103 %if.end103: %0 = phi <2 x double> [ { 0.000000, undef }, %for.end39 ], [ { 0x7ff8000000000000, 0x7ff8000000000000 }, %if.then88 ], [ { 0.000000, undef }, %if.else ], [ { 0.000000, 0.000000 }, %for.cond14.preheader ], [ { 0.000000, 0.000000 }, %for.end ] ret void } Transformation seems to be correct! (syntactically equal) -- 5. DCEPass ---------------------------------------- define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: br label %if.end103 %if.else: br label %if.end103 %if.end103: %0 = phi <2 x double> [ { 0.000000, undef }, %for.end39 ], [ { 0x7ff8000000000000, 0x7ff8000000000000 }, %if.then88 ], [ { 0.000000, undef }, %if.else ], [ { 0.000000, 0.000000 }, %for.cond14.preheader ], [ { 0.000000, 0.000000 }, %for.end ] ret void } => define void @RCModelEstimator() { %entry: br i1 undef, label %for.body.lr.ph, label %for.end.thread %for.end.thread: assume i1 0 %for.body.lr.ph: br i1 undef, label %for.end, label %for.body %for.body: br i1 undef, label %for.end, label %for.body %for.end: br i1 undef, label %for.body3, label %if.end103 %for.body3: br i1 undef, label %if.then7, label %for.inc11 %if.then7: br label %for.inc11 %for.inc11: br i1 0, label %for.cond14.preheader, label %for.body3 %for.cond14.preheader: br i1 undef, label %for.body16.lr.ph, label %if.end103 %for.body16.lr.ph: br label %for.body16 %for.body16: br i1 undef, label %for.end39, label %for.body16 %for.end39: br i1 undef, label %if.end103, label %for.cond45.preheader %for.cond45.preheader: br i1 undef, label %if.then88, label %if.else %if.then88: br label %if.end103 %if.else: br label %if.end103 %if.end103: ret void } Transformation seems to be correct! -- 6. PassManager<Function> : Skipping NOP -- 7. PassManager<Function> : Skipping NOP -- 8. SLPVectorizerPass ---------------------------------------- define void @intrapred_luma() { %entry: %conv153 = trunc i32 undef to i16 %arrayidx154 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 12 store i16 %conv153, ptr %arrayidx154, align 8 %arrayidx155 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 11 store i16 %conv153, ptr %arrayidx155, align 2 %arrayidx156 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 10 store i16 %conv153, ptr %arrayidx156, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 9. SLPVectorizerPass ---------------------------------------- define void @intrapred_luma() { %entry: %conv153 = trunc i32 undef to i16 %arrayidx154 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 12 store i16 %conv153, ptr %arrayidx154, align 8 %arrayidx155 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 11 store i16 %conv153, ptr %arrayidx155, align 2 %arrayidx156 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 10 store i16 %conv153, ptr %arrayidx156, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 10. DCEPass ---------------------------------------- define void @intrapred_luma() { %entry: %conv153 = trunc i32 undef to i16 %arrayidx154 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 12 store i16 %conv153, ptr %arrayidx154, align 8 %arrayidx155 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 11 store i16 %conv153, ptr %arrayidx155, align 2 %arrayidx156 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 10 store i16 %conv153, ptr %arrayidx156, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 11. DCEPass ---------------------------------------- define void @intrapred_luma() { %entry: %conv153 = trunc i32 undef to i16 %arrayidx154 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 12 store i16 %conv153, ptr %arrayidx154, align 8 %arrayidx155 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 11 store i16 %conv153, ptr %arrayidx155, align 2 %arrayidx156 = gep inbounds ptr undef, 26 x i64 0, 2 x i64 10 store i16 %conv153, ptr %arrayidx156, align 4 ret void } Transformation seems to be correct! (syntactically equal) -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. SLPVectorizerPass ---------------------------------------- define void @dct36(ptr %inbuf) { %entry: %arrayidx41 = gep inbounds ptr %inbuf, 8 x i64 2 %arrayidx44 = gep inbounds ptr %inbuf, 8 x i64 1 %0 = load double, ptr %arrayidx44, align 8 %add46 = fadd double %0, undef, exceptions=ignore store double %add46, ptr %arrayidx41, align 8 %1 = load double, ptr %inbuf, align 8 %add49 = fadd double %1, %0, exceptions=ignore store double %add49, ptr %arrayidx44, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 15. SLPVectorizerPass ---------------------------------------- define void @dct36(ptr %inbuf) { %entry: %arrayidx41 = gep inbounds ptr %inbuf, 8 x i64 2 %arrayidx44 = gep inbounds ptr %inbuf, 8 x i64 1 %0 = load double, ptr %arrayidx44, align 8 %add46 = fadd double %0, undef, exceptions=ignore store double %add46, ptr %arrayidx41, align 8 %1 = load double, ptr %inbuf, align 8 %add49 = fadd double %1, %0, exceptions=ignore store double %add49, ptr %arrayidx44, align 8 ret void } => define void @dct36(ptr %inbuf) { %entry: %arrayidx44 = gep inbounds ptr %inbuf, 8 x i64 1 %0 = bitcast ptr %inbuf to ptr %1 = load <2 x double>, ptr %0, align 8 %2 = shufflevector <2 x double> %1, <2 x double> poison, 1, 4294967295 %3 = fadd <2 x double> %1, %2, exceptions=ignore %4 = bitcast ptr %arrayidx44 to ptr store <2 x double> %3, ptr %4, align 8 ret void } Transformation doesn't verify! (unsound) ERROR: Mismatch in memory Example: ptr %inbuf = pointer(non-local, block_id=1, offset=80) Source: ptr %arrayidx41 = pointer(non-local, block_id=1, offset=96) ptr %arrayidx44 = pointer(non-local, block_id=1, offset=88) double %0 = #xbff11516ff000080 (-1.067648883909?) double %add46 = #xbff11516ff000080 (-1.067648883909?) [based on undef value] double %1 = poison double %add49 = poison SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 0 align: 8 alloc type: 0 Block 1 > size: 225 align: 4294967296 alloc type: 0 Target: ptr %arrayidx44 = pointer(non-local, block_id=1, offset=88) ptr %0 = pointer(non-local, block_id=1, offset=80) <2 x double> %1 = < poison, #xbff11516ff000080 (-1.067648883909?) > <2 x double> %2 = < #xbff11516ff000080 (-1.067648883909?), poison > <2 x double> %3 = < poison, poison > ptr %4 = pointer(non-local, block_id=1, offset=88) Mismatch in pointer(non-local, block_id=1, offset=96) Source value: #xbff11516ff000080 Target value: poison Pass: SLPVectorizerPass 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=slp-vectorizer,dce' '-S' '-mtriple=x86_64-apple-macosx10.8.0' '-mcpu=corei7' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' ------------------- SMT STATS ------------------- Num queries: 11 Num invalid: 0 Num skips: 0 Num trivial: 26 (70.3%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 10 (90.9%) Num UNSAT: 1 (9.1%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -passes=slp-vectorizer,dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/crash_lencod.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/X86/crash_lencod.ll
NOTE: This test would pass if undef didn't exist!