http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57056



             Bug #: 57056

           Summary: Missed optimization of finite finite builtin

    Classification: Unclassified

           Product: gcc

           Version: 4.7.1

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: target

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: nel...@seznam.cz





Created attachment 29930

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29930

benchmark



Hi,



Current builtin finite is slower on attached benchmark than my version.

It also needs to load 64bit constants which is not friendly to code size. 

My version is:



int finite4(double x)

{

  uint64_t lx;

  EXTRACT_WORDS64(lx,x);

  lx=lx>>52;

  return ((lx&0x7ff)!=0x7ff);

}



Most of uses of isfinite()/finite() function are in condition so I benchmark

finite in condition.



Benchmark is run by



for i in `seq 0 7`; do echo finite$i;  gcc finite_bench.c -O3 -Wall -W

-fno-builtin-finite -Dfinite=finite$i; for j in `seq 1 8`; do /usr/bin/time -f

"%U" ./a.out; done; done

Reply via email to