Test source: git
Comments: LLVM PR49080
Source: <stdin> ---------------------------------------- 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! ---------------------------------------- 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! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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 seems to be correct! ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Timeout ---------------------------------------- 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! ERROR: Target is more poisonous than source Example: float %a = #x4fd60101 (7180780032) Source: float %b = NaN half %c = NaN Target: half %1 = #x7c00 (+oo) half %c = poison Source value: NaN Target value: poison ------------------- SMT STATS ------------------- Num queries: 36 Num invalid: 0 Num skips: 0 Num trivial: 36 (50.0%) Num timeout: 2 (5.6%) Num errors: 0 (0.0%) Num SAT: 25 (69.4%) Num UNSAT: 9 (25.0%) Alive2: Transform doesn't verify; aborting!
+ : 'RUN: at line 3' + /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/fpcast.ll + /home/nlopes/alive2/build/opt-alive.sh -passes=instcombine -S FileCheck error: '<stdin>' is empty. FileCheck command line: /tmp/nlopes/llvm/build/bin/FileCheck /tmp/nlopes/llvm/llvm/test/Transforms/InstCombine/fpcast.ll