Test source: git
Source: <stdin> ---------------------------------------- define float @mul_zero_1(float %a) { %0: %b = fmul nnan nsz float %a, 0.000000 ret float %b } => define float @mul_zero_1(float %a) { %0: ret float 0.000000 } Transformation seems to be correct! ---------------------------------------- define float @mul_zero_2(float %a) { %0: %b = fmul fast float 0.000000, %a ret float %b } => define float @mul_zero_2(float %a) { %0: ret float 0.000000 } Transformation doesn't verify! ERROR: Invalid expr ---------------------------------------- define <2 x float> @mul_zero_nsz_nnan_vec_undef(<2 x float> %a) { %0: %b = fmul nnan nsz <2 x float> %a, { 0.000000, undef } ret <2 x float> %b } => define <2 x float> @mul_zero_nsz_nnan_vec_undef(<2 x float> %a) { %0: ret <2 x float> { 0.000000, 0.000000 } } Transformation seems to be correct! ---------------------------------------- define float @no_mul_zero_1(float %a) { %0: %b = fmul nsz float %a, 0.000000 ret float %b } => define float @no_mul_zero_1(float %a) { %0: %b = fmul nsz float %a, 0.000000 ret float %b } Transformation seems to be correct! ---------------------------------------- define float @no_mul_zero_2(float %a) { %0: %b = fmul nnan float %a, 0.000000 ret float %b } => define float @no_mul_zero_2(float %a) { %0: %b = fmul nnan float %a, 0.000000 ret float %b } Transformation seems to be correct! ---------------------------------------- define float @no_mul_zero_3(float %a) { %0: %b = fmul float %a, 0.000000 ret float %b } => define float @no_mul_zero_3(float %a) { %0: %b = fmul float %a, 0.000000 ret float %b } Transformation seems to be correct! ---------------------------------------- define float @fadd_binary_fnegx(float %x) { %0: %negx = fsub float -0.000000, %x %r = fadd nnan float %negx, %x ret float %r } => define float @fadd_binary_fnegx(float %x) { %0: ret float 0.000000 } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define float @fadd_unary_fnegx(float %x) { %0: %negx = fneg float %x %r = fadd nnan float %negx, %x ret float %r } => define float @fadd_unary_fnegx(float %x) { %0: ret float 0.000000 } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fadd_binary_fnegx_commute_vec(<2 x float> %x) { %0: %negx = fsub <2 x float> { -0.000000, -0.000000 }, %x %r = fadd nnan <2 x float> %x, %negx ret <2 x float> %r } => define <2 x float> @fadd_binary_fnegx_commute_vec(<2 x float> %x) { %0: ret <2 x float> { 0.000000, 0.000000 } } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fadd_unary_fnegx_commute_vec(<2 x float> %x) { %0: %negx = fneg <2 x float> %x %r = fadd nnan <2 x float> %x, %negx ret <2 x float> %r } => define <2 x float> @fadd_unary_fnegx_commute_vec(<2 x float> %x) { %0: ret <2 x float> { 0.000000, 0.000000 } } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fadd_fnegx_commute_vec_undef(<2 x float> %x) { %0: %negx = fsub <2 x float> { undef, -0.000000 }, %x %r = fadd nnan <2 x float> %x, %negx ret <2 x float> %r } => define <2 x float> @fadd_fnegx_commute_vec_undef(<2 x float> %x) { %0: ret <2 x float> { 0.000000, 0.000000 } } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define float @fadd_binary_fneg_nan(float %x) { %0: %t = fsub nnan float -0.000000, %x %could_be_nan = fadd ninf float %t, %x ret float %could_be_nan } => define float @fadd_binary_fneg_nan(float %x) { %0: %t = fsub nnan float -0.000000, %x %could_be_nan = fadd ninf float %t, %x ret float %could_be_nan } Transformation seems to be correct! ---------------------------------------- define float @fadd_unary_fneg_nan(float %x) { %0: %t = fneg nnan float %x %could_be_nan = fadd ninf float %t, %x ret float %could_be_nan } => define float @fadd_unary_fneg_nan(float %x) { %0: %t = fneg nnan float %x %could_be_nan = fadd ninf float %t, %x ret float %could_be_nan } Transformation doesn't verify! ERROR: Invalid expr ---------------------------------------- define float @fadd_binary_fneg_nan_commute(float %x) { %0: %t = fsub nnan ninf float -0.000000, %x %could_be_nan = fadd float %x, %t ret float %could_be_nan } => define float @fadd_binary_fneg_nan_commute(float %x) { %0: %t = fsub nnan ninf float -0.000000, %x %could_be_nan = fadd float %x, %t ret float %could_be_nan } Transformation seems to be correct! ---------------------------------------- define float @fadd_unary_fneg_nan_commute(float %x) { %0: %t = fneg nnan ninf float %x %could_be_nan = fadd float %x, %t ret float %could_be_nan } => define float @fadd_unary_fneg_nan_commute(float %x) { %0: %t = fneg nnan ninf float %x %could_be_nan = fadd float %x, %t ret float %could_be_nan } Transformation doesn't verify! ERROR: Invalid expr ---------------------------------------- define float @fadd_fsub_nnan_ninf(float %x) { %0: %sub = fsub float 0.000000, %x %zero = fadd nnan ninf float %x, %sub ret float %zero } => define float @fadd_fsub_nnan_ninf(float %x) { %0: ret float 0.000000 } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fadd_fsub_nnan_ninf_commute_vec(<2 x float> %x) { %0: %sub = fsub <2 x float> { 0.000000, 0.000000 }, %x %zero = fadd nnan ninf <2 x float> %sub, %x ret <2 x float> %zero } => define <2 x float> @fadd_fsub_nnan_ninf_commute_vec(<2 x float> %x) { %0: ret <2 x float> { 0.000000, 0.000000 } } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define float @fadd_fsub_nnan(float %x) { %0: %sub = fsub float 0.000000, %x %zero = fadd nnan float %sub, %x ret float %zero } => define float @fadd_fsub_nnan(float %x) { %0: ret float 0.000000 } Transformation seems to be correct! ---------------------------------------- define float @fsub_x_x(float %a) { %0: %zero1 = fsub nnan float %a, %a %no_zero1 = fsub ninf float %a, %a %no_zero2 = fsub float %a, %a %no_zero = fadd float %no_zero1, %no_zero2 %ret = fadd nsz float %no_zero, %zero1 ret float %ret } => define float @fsub_x_x(float %a) { %0: %no_zero1 = fsub ninf float %a, %a %no_zero2 = fsub float %a, %a %no_zero = fadd float %no_zero1, %no_zero2 ret float %no_zero } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define float @fsub_0_0_x(float %a) { %0: %t1 = fsub float 0.000000, %a %ret = fsub nsz float 0.000000, %t1 ret float %ret } => define float @fsub_0_0_x(float %a) { %0: ret float %a } Transformation seems to be correct! ---------------------------------------- define float @fneg_x(float %a) { %0: %t1 = fneg float %a %ret = fsub nsz float 0.000000, %t1 ret float %ret } => define float @fneg_x(float %a) { %0: ret float %a } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fsub_0_0_x_vec_undef1(<2 x float> %a) { %0: %t1 = fsub <2 x float> { 0.000000, undef }, %a %ret = fsub nsz <2 x float> { 0.000000, 0.000000 }, %t1 ret <2 x float> %ret } => define <2 x float> @fsub_0_0_x_vec_undef1(<2 x float> %a) { %0: ret <2 x float> %a } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fneg_x_vec_undef1(<2 x float> %a) { %0: %t1 = fneg <2 x float> %a %ret = fsub nsz <2 x float> { 0.000000, undef }, %t1 ret <2 x float> %ret } => define <2 x float> @fneg_x_vec_undef1(<2 x float> %a) { %0: ret <2 x float> %a } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x float> @fsub_0_0_x_vec_undef2(<2 x float> %a) { %0: %t1 = fsub <2 x float> { 0.000000, 0.000000 }, %a %ret = fsub nsz <2 x float> { undef, -0.000000 }, %t1 ret <2 x float> %ret } => define <2 x float> @fsub_0_0_x_vec_undef2(<2 x float> %a) { %0: ret <2 x float> %a } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define <2 x float> @fadd_zero_nsz_vec(<2 x float> %x) { %0: %r = fadd nsz <2 x float> %x, { 0.000000, 0.000000 } ret <2 x float> %r } => define <2 x float> @fadd_zero_nsz_vec(<2 x float> %x) { %0: ret <2 x float> %x } Transformation seems to be correct! ---------------------------------------- define <2 x float> @fadd_zero_nsz_vec_undef(<2 x float> %x) { %0: %r = fadd nsz <2 x float> %x, { 0.000000, undef } ret <2 x float> %r } => define <2 x float> @fadd_zero_nsz_vec_undef(<2 x float> %x) { %0: ret <2 x float> %x } Transformation doesn't verify! ERROR: Timeout ---------------------------------------- define float @nofold_fadd_x_0(float %a) { %0: %no_zero1 = fadd ninf float %a, 0.000000 %no_zero2 = fadd nnan float %a, 0.000000 %no_zero = fadd float %no_zero1, %no_zero2 ret float %no_zero } => define float @nofold_fadd_x_0(float %a) { %0: %no_zero1 = fadd ninf float %a, 0.000000 %no_zero2 = fadd nnan float %a, 0.000000 %no_zero = fadd float %no_zero1, %no_zero2 ret float %no_zero } Transformation seems to be correct! ---------------------------------------- define float @fold_fadd_nsz_x_0(float %a) { %0: %add = fadd nsz float %a, 0.000000 ret float %add } => define float @fold_fadd_nsz_x_0(float %a) { %0: ret float %a } Transformation seems to be correct! ---------------------------------------- define float @fold_fadd_cannot_be_neg0_nsz_src_x_0(float %a, float %b) { %0: %nsz = fmul nsz float %a, %b %add = fadd float %nsz, 0.000000 ret float %add } => define float @fold_fadd_cannot_be_neg0_nsz_src_x_0(float %a, float %b) { %0: %nsz = fmul nsz float %a, %b ret float %nsz } Transformation doesn't verify! ERROR: Value mismatch Example: float %a = undef float %b = undef Source: float %nsz = NaN [based on undef value] float %add = NaN Target: float %nsz = #x80000000 (-0.0) Source value: NaN Target value: #x80000000 (-0.0) ------------------- SMT STATS ------------------- Num queries: 61 Num invalid: 3 Num skips: 0 Num trivial: 68 (52.7%) Num timeout: 8 (13.1%) Num errors: 0 (0.0%) Num SAT: 30 (49.2%) Num UNSAT: 23 (37.7%)
+ : 'RUN: at line 2' + /home/nlopes/alive2/scripts/opt-alive.sh -instsimplify -S + /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstSimplify/fast-math.ll Alive2: Transform doesn't verify; aborting! FileCheck error: '<stdin>' is empty. FileCheck command line: /home/nlopes/llvm/build/bin/FileCheck /home/nlopes/llvm/llvm/test/Transforms/InstSimplify/fast-math.ll