Test Failure: Transforms/InstCombine/fpcast.ll

Test source: git

Comments: LLVM PR49080

Log:

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

----------------------------------------
define i8 @test1() {
%0:
  %x = fptoui float 255.000000 to i8, exceptions=ignore
  ret i8 %x
}
Transformation seems to be correct! (syntactically equal)

-- 3. InstCombinePass

----------------------------------------
define i8 @test1() {
%0:
  %x = fptoui float 255.000000 to i8, exceptions=ignore
  ret i8 %x
}
=>
define i8 @test1() {
%0:
  ret i8 255
}
Transformation seems to be correct!

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

----------------------------------------
define i8 @test2() {
%0:
  %x = fptosi float -1.000000 to i8, exceptions=ignore
  ret i8 %x
}
Transformation seems to be correct! (syntactically equal)

-- 7. InstCombinePass

----------------------------------------
define i8 @test2() {
%0:
  %x = fptosi float -1.000000 to i8, exceptions=ignore
  ret i8 %x
}
=>
define i8 @test2() {
%0:
  ret i8 255
}
Transformation seems to be correct!

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

----------------------------------------
define half @test3(float %a) {
%0:
  %b = fabs float %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
Transformation seems to be correct! (syntactically equal)

-- 11. InstCombinePass

----------------------------------------
define half @test3(float %a) {
%0:
  %b = fabs float %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
=>
define half @test3(float %a) {
%0:
  %1 = fptrunc float %a to half, exceptions=ignore
  %c = fabs half %1, exceptions=ignore
  ret half %c
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 12. PassManager<Function> : Skipping NOP
-- 13. PassManager<Function> : Skipping NOP
-- 14. InstCombinePass

----------------------------------------
define half @fneg_fptrunc(float %a) {
%0:
  %b = fsub float -0.000000, %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
Transformation seems to be correct! (syntactically equal)

-- 15. InstCombinePass

----------------------------------------
define half @fneg_fptrunc(float %a) {
%0:
  %b = fsub float -0.000000, %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
=>
define half @fneg_fptrunc(float %a) {
%0:
  %1 = fptrunc float %a to half, exceptions=ignore
  %c = fneg half %1, exceptions=ignore
  ret half %c
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 16. PassManager<Function> : Skipping NOP
-- 17. PassManager<Function> : Skipping NOP
-- 18. InstCombinePass

----------------------------------------
define half @unary_fneg_fptrunc(float %a) {
%0:
  %b = fneg float %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
Transformation seems to be correct! (syntactically equal)

-- 19. InstCombinePass

----------------------------------------
define half @unary_fneg_fptrunc(float %a) {
%0:
  %b = fneg float %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
=>
define half @unary_fneg_fptrunc(float %a) {
%0:
  %1 = fptrunc float %a to half, exceptions=ignore
  %c = fneg half %1, exceptions=ignore
  ret half %c
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 20. PassManager<Function> : Skipping NOP
-- 21. PassManager<Function> : Skipping NOP
-- 22. InstCombinePass

----------------------------------------
define <2 x half> @fneg_fptrunc_vec_undef(<2 x float> %a) {
%0:
  %b = fsub <2 x float> { -0.000000, undef }, %a, exceptions=ignore
  %c = fptrunc <2 x float> %b to <2 x half>, exceptions=ignore
  ret <2 x half> %c
}
Transformation seems to be correct! (syntactically equal)

-- 23. InstCombinePass

----------------------------------------
define <2 x half> @fneg_fptrunc_vec_undef(<2 x float> %a) {
%0:
  %b = fsub <2 x float> { -0.000000, undef }, %a, exceptions=ignore
  %c = fptrunc <2 x float> %b to <2 x half>, exceptions=ignore
  ret <2 x half> %c
}
=>
define <2 x half> @fneg_fptrunc_vec_undef(<2 x float> %a) {
%0:
  %1 = fptrunc <2 x float> %a to <2 x half>, exceptions=ignore
  %c = fneg <2 x half> %1, exceptions=ignore
  ret <2 x half> %c
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 24. PassManager<Function> : Skipping NOP
-- 25. PassManager<Function> : Skipping NOP
-- 26. InstCombinePass

----------------------------------------
define <2 x half> @unary_fneg_fptrunc_vec(<2 x float> %a) {
%0:
  %b = fneg <2 x float> %a, exceptions=ignore
  %c = fptrunc <2 x float> %b to <2 x half>, exceptions=ignore
  ret <2 x half> %c
}
Transformation seems to be correct! (syntactically equal)

-- 27. InstCombinePass

----------------------------------------
define <2 x half> @unary_fneg_fptrunc_vec(<2 x float> %a) {
%0:
  %b = fneg <2 x float> %a, exceptions=ignore
  %c = fptrunc <2 x float> %b to <2 x half>, exceptions=ignore
  ret <2 x half> %c
}
=>
define <2 x half> @unary_fneg_fptrunc_vec(<2 x float> %a) {
%0:
  %1 = fptrunc <2 x float> %a to <2 x half>, exceptions=ignore
  %c = fneg <2 x half> %1, exceptions=ignore
  ret <2 x half> %c
}
Transformation doesn't verify! (not unsound)
ERROR: Timeout
-- 28. PassManager<Function> : Skipping NOP
-- 29. PassManager<Function> : Skipping NOP
-- 30. InstCombinePass

----------------------------------------
define half @test4-fast(float %a) {
%0:
  %b = fsub fast float -0.000000, %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
Transformation seems to be correct! (syntactically equal)

-- 31. InstCombinePass

----------------------------------------
define half @test4-fast(float %a) {
%0:
  %b = fsub fast float -0.000000, %a, exceptions=ignore
  %c = fptrunc float %b to half, exceptions=ignore
  ret half %c
}
=>
define half @test4-fast(float %a) {
%0:
  %1 = fptrunc float %a to half, exceptions=ignore
  %c = fneg fast half %1, exceptions=ignore
  ret half %c
}
Transformation doesn't verify! (unsound)
ERROR: Target is more poisonous than source

Example:
float %a = #x5a3a0252 (13089224219688960)

Source:
float %b = #x7f800000 (QNaN)
half %c = #x7c00 (QNaN)

Target:
half %1 = #x7c00 (QNaN)
half %c = poison
Source value: #x7c00 (QNaN)
Target value: 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'


------------------- SMT STATS -------------------
Num queries: 35
Num invalid: 0
Num skips:   0
Num trivial: 33 (48.5%)
Num timeout: 5 (14.3%)
Num errors:  0 (0.0%)
Num SAT:     25 (71.4%)
Num UNSAT:   5 (14.3%)
Alive2: Transform doesn't verify; aborting!

stderr:

+ : 'RUN: at line 3'
+ /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S
+ /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/InstCombine/fpcast.ll

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

 

<-- Back