Test Failure: Transforms/InstCombine/select-select.ll

Test source: git

Log:

Source: <stdin>
-- 1. ModuleToFunctionPassAdaptor
-- 1. PassManager<Function> : Skipping NOP
-- 2. InstCombinePass

----------------------------------------
define float @foo1(float %a) {
#0:
  %b = fcmp ogt float %a, 0.000000
  %c = select i1 %b, float %a, float 0.000000
  %d = fcmp olt float %c, 1.000000
  %f = select i1 %d, float %c, float 1.000000
  ret float %f
}
Transformation seems to be correct! (syntactically equal)

-- 3. InstCombinePass

----------------------------------------
define float @foo1(float %a) {
#0:
  %b = fcmp ogt float %a, 0.000000
  %c = select i1 %b, float %a, float 0.000000
  %d = fcmp olt float %c, 1.000000
  %f = select i1 %d, float %c, float 1.000000
  ret float %f
}
Transformation seems to be correct! (syntactically equal)

-- 4. PassManager<Function> : Skipping NOP
-- 5. PassManager<Function> : Skipping NOP
-- 6. InstCombinePass

----------------------------------------
define float @foo2(float %a) {
#0:
  %b = fcmp ogt float %a, 0.000000
  %c = select i1 %b, float %a, float 0.000000
  %d = fcmp olt float %c, 1.000000
  %e = select i1 %b, float %a, float 0.000000
  %f = select i1 %d, float %e, float 1.000000
  ret float %f
}
Transformation seems to be correct! (syntactically equal)

-- 7. InstCombinePass

----------------------------------------
define float @foo2(float %a) {
#0:
  %b = fcmp ogt float %a, 0.000000
  %c = select i1 %b, float %a, float 0.000000
  %d = fcmp olt float %c, 1.000000
  %e = select i1 %b, float %a, float 0.000000
  %f = select i1 %d, float %e, float 1.000000
  ret float %f
}
=>
define float @foo2(float %a) {
#0:
  %b = fcmp ule float %a, 0.000000
  %#1 = fcmp olt float %a, 1.000000
  %e = select i1 %#1, float %a, float 1.000000
  %f = select i1 %b, float 0.000000, float %e
  ret float %f
}
Transformation seems to be correct!

-- 8. PassManager<Function> : Skipping NOP
-- 9. PassManager<Function> : Skipping NOP
-- 10. InstCombinePass

----------------------------------------
define <2 x i32> @foo3(<2 x i1> %vec_bool, i1 %bool, <2 x i32> %V) {
#0:
  %sel0 = select <2 x i1> %vec_bool, <2 x i32> { 0, 0 }, <2 x i32> %V
  %sel1 = select i1 %bool, <2 x i32> %sel0, <2 x i32> %V
  ret <2 x i32> %sel1
}
Transformation seems to be correct! (syntactically equal)

-- 11. InstCombinePass

----------------------------------------
define <2 x i32> @foo3(<2 x i1> %vec_bool, i1 %bool, <2 x i32> %V) {
#0:
  %sel0 = select <2 x i1> %vec_bool, <2 x i32> { 0, 0 }, <2 x i32> %V
  %sel1 = select i1 %bool, <2 x i32> %sel0, <2 x i32> %V
  ret <2 x i32> %sel1
}
Transformation seems to be correct! (syntactically equal)

-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
-- 14. InstCombinePass

----------------------------------------
define <4 x i8> @sel_shuf_commute0(<4 x i8> %x, <4 x i8> %y, <4 x i1> %cmp) {
#0:
  %blend = shufflevector <4 x i8> %x, <4 x i8> %y, 0, 5, 2, 7
  %r = select <4 x i1> %cmp, <4 x i8> %blend, <4 x i8> %x
  ret <4 x i8> %r
}
Transformation seems to be correct! (syntactically equal)

-- 15. InstCombinePass

----------------------------------------
define <4 x i8> @sel_shuf_commute0(<4 x i8> %x, <4 x i8> %y, <4 x i1> %cmp) {
#0:
  %blend = shufflevector <4 x i8> %x, <4 x i8> %y, 0, 5, 2, 7
  %r = select <4 x i1> %cmp, <4 x i8> %blend, <4 x i8> %x
  ret <4 x i8> %r
}
=>
define <4 x i8> @sel_shuf_commute0(<4 x i8> %x, <4 x i8> %y, <4 x i1> %cmp) {
#0:
  %sel = select <4 x i1> %cmp, <4 x i8> %y, <4 x i8> %x
  %r = shufflevector <4 x i8> %x, <4 x i8> %sel, 0, 5, 2, 7
  ret <4 x i8> %r
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 16. PassManager<Function> : Skipping NOP
-- 17. PassManager<Function> : Skipping NOP
-- 18. InstCombinePass

----------------------------------------
define <5 x i9> @sel_shuf_commute1(<5 x i9> %x, <5 x i9> %y, <5 x i1> %cmp) {
#0:
  %blend = shufflevector <5 x i9> %x, <5 x i9> %y, 0, 6, 2, 8, 9
  %r = select <5 x i1> %cmp, <5 x i9> %blend, <5 x i9> %y
  ret <5 x i9> %r
}
Transformation seems to be correct! (syntactically equal)

-- 19. InstCombinePass

----------------------------------------
define <5 x i9> @sel_shuf_commute1(<5 x i9> %x, <5 x i9> %y, <5 x i1> %cmp) {
#0:
  %blend = shufflevector <5 x i9> %x, <5 x i9> %y, 0, 6, 2, 8, 9
  %r = select <5 x i1> %cmp, <5 x i9> %blend, <5 x i9> %y
  ret <5 x i9> %r
}
=>
define <5 x i9> @sel_shuf_commute1(<5 x i9> %x, <5 x i9> %y, <5 x i1> %cmp) {
#0:
  %sel = select <5 x i1> %cmp, <5 x i9> %x, <5 x i9> %y
  %r = shufflevector <5 x i9> %sel, <5 x i9> %y, 0, 6, 2, 8, 9
  ret <5 x i9> %r
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 20. PassManager<Function> : Skipping NOP
-- 21. PassManager<Function> : Skipping NOP
-- 22. InstCombinePass

----------------------------------------
define <4 x float> @sel_shuf_commute2(<4 x float> %x, <4 x float> %y, <4 x i1> %cmp) {
#0:
  %blend = shufflevector <4 x float> %x, <4 x float> %y, 0, 1, 2, 7
  %r = select <4 x i1> %cmp, <4 x float> %x, <4 x float> %blend
  ret <4 x float> %r
}
Transformation seems to be correct! (syntactically equal)

-- 23. InstCombinePass

----------------------------------------
define <4 x float> @sel_shuf_commute2(<4 x float> %x, <4 x float> %y, <4 x i1> %cmp) {
#0:
  %blend = shufflevector <4 x float> %x, <4 x float> %y, 0, 1, 2, 7
  %r = select <4 x i1> %cmp, <4 x float> %x, <4 x float> %blend
  ret <4 x float> %r
}
=>
define <4 x float> @sel_shuf_commute2(<4 x float> %x, <4 x float> %y, <4 x i1> %cmp) {
#0:
  %sel = select <4 x i1> %cmp, <4 x float> %x, <4 x float> %y
  %r = shufflevector <4 x float> %x, <4 x float> %sel, 0, 1, 2, 7
  ret <4 x float> %r
}
Transformation seems to be correct!

-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. InstCombinePass

----------------------------------------
define <4 x i8> @sel_shuf_commute3(<4 x i8> %x, <4 x i8> %y, i1 %cmp) {
#0:
  %blend = shufflevector <4 x i8> %x, <4 x i8> %y, 0, 5, 2, 3
  %r = select i1 %cmp, <4 x i8> %y, <4 x i8> %blend
  ret <4 x i8> %r
}
Transformation seems to be correct! (syntactically equal)

-- 27. InstCombinePass

----------------------------------------
define <4 x i8> @sel_shuf_commute3(<4 x i8> %x, <4 x i8> %y, i1 %cmp) {
#0:
  %blend = shufflevector <4 x i8> %x, <4 x i8> %y, 0, 5, 2, 3
  %r = select i1 %cmp, <4 x i8> %y, <4 x i8> %blend
  ret <4 x i8> %r
}
=>
define <4 x i8> @sel_shuf_commute3(<4 x i8> %x, <4 x i8> %y, i1 %cmp) {
#0:
  %sel = select i1 %cmp, <4 x i8> %y, <4 x i8> %x
  %r = shufflevector <4 x i8> %sel, <4 x i8> %y, 0, 5, 2, 3
  ret <4 x i8> %r
}
Transformation doesn't verify! (unsound)
ERROR: Target is more poisonous than source

Example:
<4 x i8> %x = < #x00 (0)	[based on undef value], poison, poison, #x00 (0)	[based on undef value] >
<4 x i8> %y = < #x00 (0)	[based on undef value], poison, #x00 (0)	[based on undef value], poison >
i1 %cmp = undef

Source:
<4 x i8> %blend = < #x00 (0), poison, poison, #x00 (0) >
<4 x i8> %r = < #x00 (0), poison, poison, #x00 (0) >

Target:
<4 x i8> %sel = < #x00 (0), poison, poison, #x00 (0) >
<4 x i8> %r = < #x00 (0), poison, poison, poison >
Source value: < #x00 (0), poison, poison, #x00 (0) >
Target value: < #x00 (0), poison, poison, poison >

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' '-passes=instcombine' '-S' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats'
Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_xLBaeWll_7FZk.bc"


------------------- SMT STATS -------------------
Num queries: 43
Num invalid: 0
Num skips:   0
Num trivial: 27 (38.6%)
Num timeout: 2 (4.7%)
Num errors:  0 (0.0%)
Num SAT:     27 (62.8%)
Num UNSAT:   14 (32.6%)
Alive2: Transform doesn't verify; aborting!

stderr:

RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S < /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-select.ll | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-select.ll
+ /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/select-select.ll

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

 

NOTE: This test would pass if undef didn't exist!

 

<-- Back