Test source: git
Comments: LLVM PR44185
Source: /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. InstCombinePass ---------------------------------------- define <4 x float> @PR29126(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, undef }, 0, 5, 6, 3 %ins = insertelement <4 x float> %shuf, float 42.000000, i32 3 ret <4 x float> %ins } Transformation seems to be correct! (syntactically equal) -- 3. InstCombinePass ---------------------------------------- define <4 x float> @PR29126(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, undef }, 0, 5, 6, 3 %ins = insertelement <4 x float> %shuf, float 42.000000, i32 3 ret <4 x float> %ins } => define <4 x float> @PR29126(<4 x float> %x) { %0: %ins = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, 42.000000 }, 0, 5, 6, 7 ret <4 x float> %ins } Transformation seems to be correct! -- 4. PassManager<Function> : Skipping NOP -- 5. PassManager<Function> : Skipping NOP -- 6. InstCombinePass ---------------------------------------- define <4 x float> @twoInserts(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { 0.000000, 0.000000, 0.000000, 0.000000 }, 0, 5, 6, 3 %ins1 = insertelement <4 x float> %shuf, float 42.000000, i32 2 %ins2 = insertelement <4 x float> %ins1, float 11.000000, i32 3 ret <4 x float> %ins2 } Transformation seems to be correct! (syntactically equal) -- 7. InstCombinePass ---------------------------------------- define <4 x float> @twoInserts(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { 0.000000, 0.000000, 0.000000, 0.000000 }, 0, 5, 6, 3 %ins1 = insertelement <4 x float> %shuf, float 42.000000, i32 2 %ins2 = insertelement <4 x float> %ins1, float 11.000000, i32 3 ret <4 x float> %ins2 } => define <4 x float> @twoInserts(<4 x float> %x) { %0: %ins2 = shufflevector <4 x float> %x, <4 x float> { poison, 0.000000, 42.000000, 11.000000 }, 0, 5, 6, 7 ret <4 x float> %ins2 } Transformation seems to be correct! -- 8. PassManager<Function> : Skipping NOP -- 9. PassManager<Function> : Skipping NOP -- 10. InstCombinePass ---------------------------------------- define <4 x i32> @shuffleRetain(<4 x i32> %base) { %0: %shuf = shufflevector <4 x i32> %base, <4 x i32> { 4, 3, 2, 1 }, 1, 2, 4294967295, 7 ret <4 x i32> %shuf } Transformation seems to be correct! (syntactically equal) -- 11. InstCombinePass ---------------------------------------- define <4 x i32> @shuffleRetain(<4 x i32> %base) { %0: %shuf = shufflevector <4 x i32> %base, <4 x i32> { 4, 3, 2, 1 }, 1, 2, 4294967295, 7 ret <4 x i32> %shuf } => define <4 x i32> @shuffleRetain(<4 x i32> %base) { %0: %shuf = shufflevector <4 x i32> %base, <4 x i32> { poison, poison, poison, 1 }, 1, 2, 4294967295, 7 ret <4 x i32> %shuf } Transformation seems to be correct! -- 12. PassManager<Function> : Skipping NOP -- 13. PassManager<Function> : Skipping NOP -- 14. InstCombinePass ---------------------------------------- define <4 x float> @disguisedSelect(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 7, 6, 5, 3 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 0 ret <4 x float> %ins } Transformation seems to be correct! (syntactically equal) -- 15. InstCombinePass ---------------------------------------- define <4 x float> @disguisedSelect(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 7, 6, 5, 3 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 0 ret <4 x float> %ins } => define <4 x float> @disguisedSelect(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, poison }, 4294967295, 6, 5, 3 %ins = insertelement <4 x float> %shuf, float 4.000000, i64 0 ret <4 x float> %ins } Transformation seems to be correct! -- 16. PassManager<Function> : Skipping NOP -- 17. PassManager<Function> : Skipping NOP -- 18. InstCombinePass ---------------------------------------- define <4 x float> @notSelectButNoMaskDifference(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 1, 5, 6, 3 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3 ret <4 x float> %ins } Transformation seems to be correct! (syntactically equal) -- 19. InstCombinePass ---------------------------------------- define <4 x float> @notSelectButNoMaskDifference(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { undef, 1.000000, 2.000000, 3.000000 }, 1, 5, 6, 3 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3 ret <4 x float> %ins } => define <4 x float> @notSelectButNoMaskDifference(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { poison, 1.000000, 2.000000, poison }, 1, 5, 6, 4294967295 %ins = insertelement <4 x float> %shuf, float 4.000000, i64 3 ret <4 x float> %ins } Transformation seems to be correct! -- 20. PassManager<Function> : Skipping NOP -- 21. PassManager<Function> : Skipping NOP -- 22. InstCombinePass ---------------------------------------- define <4 x float> @tooRisky(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { 1.000000, undef, undef, undef }, 1, 4, 4, 4 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3 ret <4 x float> %ins } Transformation seems to be correct! (syntactically equal) -- 23. InstCombinePass ---------------------------------------- define <4 x float> @tooRisky(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { 1.000000, undef, undef, undef }, 1, 4, 4, 4 %ins = insertelement <4 x float> %shuf, float 4.000000, i32 3 ret <4 x float> %ins } => define <4 x float> @tooRisky(<4 x float> %x) { %0: %shuf = shufflevector <4 x float> %x, <4 x float> { 1.000000, poison, poison, poison }, 1, 4, 4, 4294967295 %ins = insertelement <4 x float> %shuf, float 4.000000, i64 3 ret <4 x float> %ins } Transformation seems to be correct! -- 24. PassManager<Function> : Skipping NOP -- 25. PassManager<Function> : Skipping NOP -- 26. InstCombinePass ---------------------------------------- define <3 x float> @twoShufUses(<3 x float> %x) { %0: %shuf = shufflevector <3 x float> %x, <3 x float> { undef, 1.000000, 2.000000 }, 0, 4, 5 %ins = insertelement <3 x float> %shuf, float 42.000000, i2 1 %add = fadd <3 x float> %shuf, %ins, exceptions=ignore ret <3 x float> %add } Transformation seems to be correct! (syntactically equal) -- 27. InstCombinePass ---------------------------------------- define <3 x float> @twoShufUses(<3 x float> %x) { %0: %shuf = shufflevector <3 x float> %x, <3 x float> { undef, 1.000000, 2.000000 }, 0, 4, 5 %ins = insertelement <3 x float> %shuf, float 42.000000, i2 1 %add = fadd <3 x float> %shuf, %ins, exceptions=ignore ret <3 x float> %add } => define <3 x float> @twoShufUses(<3 x float> %x) { %0: %shuf = shufflevector <3 x float> %x, <3 x float> { poison, 1.000000, 2.000000 }, 0, 4, 5 %ins = insertelement <3 x float> %shuf, float 42.000000, i64 1 %add = fadd <3 x float> %shuf, %ins, exceptions=ignore ret <3 x float> %add } Transformation doesn't verify! (not unsound) ERROR: Timeout -- 28. PassManager<Function> : Skipping NOP -- 29. PassManager<Function> : Skipping NOP -- 30. InstCombinePass ---------------------------------------- define <5 x i8> @longerMask(<3 x i8> %x) { %0: %shuf = shufflevector <3 x i8> %x, <3 x i8> { undef, 1, 2 }, 2, 1, 4, 3, 0 %ins = insertelement <5 x i8> %shuf, i8 42, i17 4 ret <5 x i8> %ins } Transformation seems to be correct! (syntactically equal) -- 31. InstCombinePass ---------------------------------------- define <5 x i8> @longerMask(<3 x i8> %x) { %0: %shuf = shufflevector <3 x i8> %x, <3 x i8> { undef, 1, 2 }, 2, 1, 4, 3, 0 %ins = insertelement <5 x i8> %shuf, i8 42, i17 4 ret <5 x i8> %ins } => define <5 x i8> @longerMask(<3 x i8> %x) { %0: %shuf = shufflevector <3 x i8> %x, <3 x i8> { poison, 1, poison }, 2, 1, 4, 4294967295, 4294967295 %ins = insertelement <5 x i8> %shuf, i8 42, i64 4 ret <5 x i8> %ins } Transformation doesn't verify! (unsound) ERROR: Target is more poisonous than source Example: <3 x i8> %x = < poison, poison, poison > Source: <5 x i8> %shuf = < poison, poison, #x01 (1), #x00 (0) [based on undef value], poison > <5 x i8> %ins = < poison, poison, #x01 (1), #x00 (0), #x2a (42) > Target: <5 x i8> %shuf = < poison, poison, #x01 (1), poison, poison > <5 x i8> %ins = < poison, poison, #x01 (1), poison, #x2a (42) > Source value: < poison, poison, #x01 (1), #x00 (0), #x2a (42) > Target value: < poison, poison, #x01 (1), poison, #x2a (42) > Pass: InstCombinePass 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' '-S' '-passes=instcombine' '/bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' ------------------- SMT STATS ------------------- Num queries: 57 Num invalid: 0 Num skips: 0 Num trivial: 40 (41.2%) Num timeout: 1 (1.8%) Num errors: 0 (0.0%) Num SAT: 41 (71.9%) Num UNSAT: 15 (26.3%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 2' + /home/nlopes/alive2/build/opt-alive.sh -S -passes=instcombine /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/insert-const-shuf.ll