Enable constant propagation for more math functions

Vedant Kumar via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 26 10:51:42 PDT 2015


LGTM, this is ready to land.

It turns out that we _can_ combine these tests. I'll take care of it in a followup patch since existing tests need to be changed.

> >> +define float @test_atan2f() nounwind uwtable ssp {
> >> +entry:
> >> +; CHECK-LABEL: @test_atan2f(
> >> +; CHECK-NOT: call
> >> +  %0 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
> >> +  ret float %0
> >> +}
> >>
> >> +; Shouldn't fold because of -fno-builtin
> >> +define float @atan2f_() nounwind uwtable ssp {
> >> +; FNOBUILTIN-LABEL: @atan2f_(
> >> +; FNOBUILTIN: %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
> >> +  %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
> >> +  ret float %1
> >> +}
> 
> I've noticed many pairs of test functions like the one above. Can this pair be combined into one function? E.g:
> 
> >> +define float @atan2f_() nounwind uwtable ssp {
> >> +; CHECK-LABEL: @_atan2f(
> >> +; FNOBUILTIN-LABEL: @atan2f_(
> >> +; CHECK-NOT: call
> >> +; FNOBUILTIN: %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
> >> +  %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
> >> +  ret float %1
> >> +}
> 
> I don't know, I'm not too familiar with the test system. These are two different tests: in one, the call should be eliminated (constant-folded), in the other case, it should not. Do you have a pointer to documentation or other examples that cover this detail?

Your ">> +; CHECK-NOT: call" lines check that there is "NOT" a "call", i.e the call is folded away. When "-fno-builtin" is passed to the compiler however, we want the call preserved. FileCheck lets you specify different check prefixes for different usage scenarios.

Googling "llvm-lit" or "llvm FileCheck" should turn something up.

thanks!
vedant

> 
> If so, it would be nice to reduce the test case size. Apart from that, please run clang-format -style=llvm on your changes. Everything else looks good.
> 
> I attach the updated (re-formatted) patch.
> 
> -erik
> 
> vedant
> 
> On Aug 25, 2015, at 1:14 PM, Erik Schnetter via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> > It seems that constant propagation for single precision math functions (such as tanf) is already working, but was not enabled. This patch enables these for many single-precision functions, and adds respective test cases.
> >
> > List of newly handled functions: acosf asinf atanf atan2f ceilf coshf expf exp2f fabsf floorf fmodf logf log10f powf sinhf tanf tanhf
> >
> > -erik
> >
> > --
> > Erik Schnetter <schnetter at gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/
> > <constprop.diff>_______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=zIeTq7C24I26_ny62rhiVNnPUKhiL-ttf5E5SdvSYfM&s=hnzB8DZ-EJj3yM7S-bYX5mwxBMka0n18KAACB3fEHcQ&e=
> 
> 
> 
> 
> -- 
> Erik Schnetter <schnetter at gmail.com> http://www.perimeterinstitute.ca/personal/eschnetter/
> <constprop.diff>_______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=pdx8WaNzTKH4XL-GadzDAXtcW_0Dy5TSuEq-r6kr_Cw&s=p1rycXaVwpkLIJ6ivjsTu1JL_CRTjkncrT0wSb31Qy8&e=



More information about the llvm-commits mailing list