public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Richard Guenther <rguenth@tat.physik.uni-tuebingen.de>
To: Steven Bosscher <s.bosscher@student.tudelft.nl>
Cc: gcc@gcc.gnu.org
Subject: Re: std::pow implementation
Date: Tue, 29 Jul 2003 14:22:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.44.0307291522170.14031-100000@bellatrix.tat.physik.uni-tuebingen.de> (raw)
In-Reply-To: <1059483713.3650.148.camel@steven.lr-s.tudelft.nl>

On 29 Jul 2003, Steven Bosscher wrote:

> Op di 29-07-2003, om 14:55 schreef Richard Guenther:
> > double foo2(double x)
> > {
> >   pow(x, 2);
> > }
>
> Not that it didn't even unroll the loop at all.
>
> I have no idea if it makes any difference, I'm just curious: What
> happens if you replace
>
>       while (__n >>= 1)
>
> with
>       while (__n = __n / 2)
> ?
>
> Maybe the loop stuff can't handle shifts...

I get it to unroll with

  template<typename _Tp>
    inline _Tp
    __cmath_power(_Tp __x, unsigned int __n)
    {
      _Tp __y = __n & 1 ? __x : 1;
      const int ni = __n == 0 ? 0 : sizeof(unsigned int)*8 - __builtin_clz(__n);
      for (int i=0; i<ni; ++i)
        {
          __n >>= 1;
          __x = __x * __x;
          if (__n & 1)
            __y = __y * __x;
        }

      return __y;
    }

But neither the __n >>= 1; (or __n /= 2), not the following bit test
is constant folded and we end up with

_Z4foo2d:
.LFB12:
        pushl   %ebp    #
.LCFI4:
        movl    %esp, %ebp      #,
.LCFI5:
        fldl    8(%ebp) # x
        movl    $2, %eax        #, __n
        fld1
        fxch    %st(1)  #
        shrl    %eax    # tmp91
        movb    %al, %dl        #, tmp93
        fmul    %st(0), %st     #,
        andb    $1, %dl #, tmp93
        testb   %dl, %dl        # tmp93
        je      .L92    #,
        fmul    %st, %st(1)     #,
.L92:
        shrl    %eax    # __n
        movb    %al, %dl        #, tmp93
        fmul    %st(0), %st     #,
        andb    $1, %dl #, tmp93
        testb   %dl, %dl        # tmp93
        je      .L97    #,
        fmulp   %st, %st(1)     #,
        jmp     .L80    #
        .p2align 4,,7
.L97:
        fstp    %st(0)  #
.L80:
        popl    %ebp    #
        ret

It seems this fact is worth another PR.

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/

  parent reply	other threads:[~2003-07-29 13:28 UTC|newest]

Thread overview: 214+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-29 11:57 Richard Guenther
2003-07-29 12:10 ` Gabriel Dos Reis
2003-07-29 12:10   ` Richard Guenther
2003-07-29 12:14     ` Gabriel Dos Reis
2003-07-29 12:25       ` Richard Guenther
2003-07-29 12:38         ` Gabriel Dos Reis
2003-07-29 12:44           ` Richard Guenther
2003-07-29 12:49             ` Gabriel Dos Reis
2003-07-30  5:18               ` Alexandre Oliva
2003-07-30  5:26                 ` Gabriel Dos Reis
2003-07-30  6:57                   ` Alexandre Oliva
2003-07-30 10:11                     ` Gabriel Dos Reis
2003-07-30 11:58                       ` Richard Earnshaw
2003-07-30 12:11                         ` Gabriel Dos Reis
2003-07-30 12:13                           ` Steven Bosscher
2003-07-30 12:23                             ` Gabriel Dos Reis
2003-07-30 12:31                               ` Steven Bosscher
2003-07-30 12:47                                 ` Gabriel Dos Reis
2003-07-30 13:06                                   ` Steven Bosscher
2003-07-30 13:22                                     ` Gabriel Dos Reis
2003-07-30 12:42                               ` Richard Guenther
2003-07-30 12:46                                 ` Gabriel Dos Reis
2003-07-30 13:01                                   ` Richard Guenther
2003-07-30 13:26                                     ` Steven Bosscher
2003-07-30 13:38                                       ` Richard Guenther
2003-07-30 13:49                                         ` Gabriel Dos Reis
2003-07-30 13:19                           ` Karel Gardas
2003-07-30 13:24                             ` Gabriel Dos Reis
2003-07-30 13:41                             ` Richard Earnshaw
2003-07-30 13:51                               ` Gabriel Dos Reis
2003-07-30 13:51                                 ` Richard Earnshaw
2003-07-30 13:59                                   ` Gabriel Dos Reis
2003-07-30 14:08                                     ` Richard Guenther
2003-07-30 14:19                                       ` Richard Guenther
2003-07-30 14:24                                       ` Gabriel Dos Reis
2003-07-30 14:48                                         ` Richard Guenther
2003-07-30 14:55                                           ` Gabriel Dos Reis
2003-07-30 15:29                                             ` Richard Guenther
2003-07-31  0:30                                       ` Richard B. Kreckel
2003-07-30 14:11                                     ` Richard Earnshaw
2003-07-30 14:26                                       ` Gabriel Dos Reis
2003-07-30 16:25                                   ` Scott Robert Ladd
2003-07-30 13:59                                 ` Richard Guenther
2003-07-30 14:01                                   ` Gabriel Dos Reis
2003-07-30 15:45                         ` Scott Robert Ladd
2003-07-30 16:50                           ` Richard Earnshaw
2003-07-30 16:57                             ` Gabriel Dos Reis
2003-07-30 17:42                               ` Richard Earnshaw
2003-07-30 18:06                                 ` Gabriel Dos Reis
2003-07-30 17:02                             ` Scott Robert Ladd
2003-07-30 19:31                             ` tm_gccmail
2003-07-30 17:32                         ` Joe Buck
2003-07-30  6:13               ` gcc do not consider the head file change when compiling??? Mojx
2003-07-30 12:09                 ` Gerald Pfeifer
2003-07-30 18:20                 ` Zack Weinberg
2003-07-29 12:53           ` std::pow implementation Steven Bosscher
2003-07-29 12:53             ` Gabriel Dos Reis
2003-07-29 12:58               ` Richard Guenther
2003-07-29 12:59                 ` Steven Bosscher
2003-07-29 13:05                   ` Paolo Carlini
2003-07-29 13:22                     ` Richard Guenther
2003-07-29 13:36                       ` Steven Bosscher
2003-07-29 14:14                         ` Richard Guenther
2003-07-29 14:22                         ` Richard Guenther [this message]
2003-07-29 13:00                 ` Andrew Pinski
2003-07-29 13:28                   ` Richard Guenther
2003-07-29 13:59                     ` Andrew Pinski
2003-07-29 14:17                       ` Gabriel Dos Reis
2003-07-29 13:14                 ` Gabriel Dos Reis
2003-07-29 13:14               ` Steven Bosscher
2003-07-29 14:08                 ` Gabriel Dos Reis
2003-07-29 14:24                   ` Steven Bosscher
2003-07-29 14:24                     ` Gabriel Dos Reis
2003-07-29 14:31                     ` Gabriel Dos Reis
2003-07-29 14:40                       ` Steven Bosscher
2003-07-29 15:11                         ` Gabriel Dos Reis
2003-07-29 15:37                           ` Michael Matz
2003-07-29 15:59                             ` Gabriel Dos Reis
2003-07-29 15:59                               ` Michael Matz
2003-07-29 16:05                                 ` Gabriel Dos Reis
2003-07-29 16:20                                   ` Rob Taylor
2003-07-29 14:36                     ` Gabriel Dos Reis
2003-07-29 15:24                       ` Richard Guenther
2003-07-29 16:30                         ` Gabriel Dos Reis
2003-07-29 18:35                           ` Richard Guenther
2003-07-29 14:51                     ` Gabriel Dos Reis
2003-07-29 15:33                       ` Steven Bosscher
2003-07-30  5:24                       ` Alexandre Oliva
2003-07-30  5:33                         ` Gabriel Dos Reis
2003-07-30  6:38                           ` Alexandre Oliva
2003-07-30 10:32                             ` Gabriel Dos Reis
2003-07-30 10:33                               ` Alexandre Oliva
2003-07-30 10:46                                 ` Gabriel Dos Reis
2003-07-30 11:57                                   ` Alexandre Oliva
2003-07-30 12:20                                     ` Gabriel Dos Reis
2003-07-30 15:50                                     ` Scott Robert Ladd
2003-07-30 15:53                                       ` Steven Bosscher
2003-07-30 15:53                                         ` Richard Guenther
2003-07-30 16:01                                         ` Gabriel Dos Reis
2003-07-30 16:09                                           ` Steven Bosscher
2003-07-30 16:39                                             ` Gabriel Dos Reis
2003-07-30 16:17                                           ` Richard Guenther
2003-07-30 16:24                                             ` Steven Bosscher
2003-08-04 16:55                                     ` Bernd Schmidt
2003-08-04 17:08                                       ` Alexandre Oliva
2003-07-30 10:37                               ` Steven Bosscher
2003-07-30 11:31                                 ` Gabriel Dos Reis
2003-07-30 15:44                               ` Scott Robert Ladd
2003-07-30 17:10                                 ` Joe Buck
2003-07-30 17:32                                   ` Richard Guenther
2003-07-30 18:22                                     ` Daniel Berlin
2003-07-30 19:08                                       ` Richard Guenther
2003-07-30 19:12                                         ` Daniel Berlin
2003-07-30 17:06                           ` Joe Buck
2003-07-30 17:26                             ` Gabriel Dos Reis
2003-07-29 19:58   ` Neil Booth
2003-07-29 20:14     ` Gabriel Dos Reis
2003-07-29 20:33       ` Richard Guenther
2003-07-29 20:49         ` Gabriel Dos Reis
2003-07-30 12:55 Stephan T. Lavavej
2003-07-30 12:59 ` Gabriel Dos Reis
2003-07-30 13:13 Martin Reinecke
2003-07-30 13:30 ` Gabriel Dos Reis
2003-07-30 13:40   ` Martin Reinecke
2003-07-30 13:46     ` Andrew Pinski
2003-07-30 13:47       ` Steven Bosscher
2003-07-30 14:32         ` Martin Reinecke
2003-07-30 13:53     ` Gabriel Dos Reis
2003-07-30 14:14       ` Martin Reinecke
2003-07-30 14:33         ` Gabriel Dos Reis
2003-07-30 15:27           ` Martin Reinecke
2003-07-30 15:42             ` Gabriel Dos Reis
2003-07-30 17:38               ` Martin Reinecke
2003-08-04 12:55           ` Theodore Papadopoulo
2003-08-04 13:11             ` Gabriel Dos Reis
2003-08-04 14:32               ` Theodore Papadopoulo
2003-08-04 14:50                 ` Gabriel Dos Reis
2003-08-04 14:58                   ` Daniel Berlin
2003-07-30 15:56 ` Scott Robert Ladd
2003-07-30 16:16   ` Steven Bosscher
2003-07-30 16:47     ` Scott Robert Ladd
2003-07-30 13:25 Robert Dewar
2003-07-30 13:52 Robert Dewar
2003-07-30 14:02 ` Richard Guenther
2003-07-30 13:56 Robert Dewar
2003-07-30 14:04 ` Richard Guenther
2003-07-30 14:08 ` Gabriel Dos Reis
2003-07-31  2:10   ` Alexandre Oliva
2003-07-31  2:46     ` Gabriel Dos Reis
2003-07-31  6:49       ` Alexandre Oliva
2003-07-31  7:58         ` Gabriel Dos Reis
2003-07-31  8:14         ` Gabriel Dos Reis
2003-07-30 14:04 Robert Dewar
2003-07-30 14:10 ` Gabriel Dos Reis
2003-07-30 14:05 Robert Dewar
2003-07-30 14:14 ` Gabriel Dos Reis
2003-07-30 14:11 Robert Dewar
2003-07-30 14:29 ` Richard Guenther
2003-07-30 14:18 Robert Dewar
2003-07-30 14:31 ` Richard Earnshaw
2003-07-30 14:36 ` Richard Guenther
2003-07-30 14:21 Robert Dewar
2003-07-30 14:44 ` Gabriel Dos Reis
2003-07-30 14:51   ` Paolo Carlini
2003-07-30 16:59     ` Joe Buck
2003-07-30 17:35       ` Richard Earnshaw
2003-07-30 14:25 Robert Dewar
2003-07-30 14:49 ` Gabriel Dos Reis
2003-07-30 16:06 Richard Guenther
2003-07-30 16:37 ` Martin Reinecke
2003-07-30 16:08 Robert Dewar
2003-07-30 16:36 Robert Dewar
2003-07-30 16:49 ` Gabriel Dos Reis
2003-07-30 16:55 ` Scott Robert Ladd
2003-07-30 19:21 ` Felix Lee
2003-07-30 21:49 Robert Dewar
2003-07-30 22:28 Robert Dewar
2003-07-30 22:49 Robert Dewar
2003-07-31 10:19 Martin Reinecke
2003-07-31 10:38 ` Gabriel Dos Reis
2003-07-31 10:54 Richard Guenther
2003-07-31 11:08 ` Gabriel Dos Reis
2003-07-31 11:31 ` Rob Taylor
2003-07-31 14:13   ` Scott Robert Ladd
2003-07-31 14:44     ` Gabriel Dos Reis
2003-07-31 17:24     ` Steven Bosscher
2003-07-31 18:45       ` Scott Robert Ladd
2003-07-31 11:50 Robert Dewar
2003-07-31 12:05 Robert Dewar
2003-07-31 13:00 ` Gabriel Dos Reis
2003-08-04 17:03 Robert Dewar
2003-08-04 17:23 ` Joe Buck
2003-08-04 18:05   ` Richard Earnshaw
2003-08-04 18:15     ` Gabriel Dos Reis
2003-08-04 19:00     ` Bernd Schmidt
2003-08-04 19:12       ` Richard Guenther
2003-08-04 17:33 Robert Dewar
2003-08-04 17:36 ` Joe Buck
2003-08-04 17:38 ` Gabriel Dos Reis
2003-08-04 22:28 ` Mark Hahn
2003-08-04 22:49   ` tm_gccmail
2003-08-04 17:43 Robert Dewar
2003-08-04 17:53 ` Gabriel Dos Reis
2003-08-04 17:48 Robert Dewar
2003-08-04 17:57 ` Gabriel Dos Reis
2003-08-04 18:14   ` Joe Buck
2003-08-04 18:08 Robert Dewar
2003-08-04 18:17 ` Gabriel Dos Reis
2003-08-04 18:21 Robert Dewar
2003-08-04 18:22 Robert Dewar
2003-08-04 18:29 ` Gabriel Dos Reis
2003-08-04 18:42 Robert Dewar
2003-08-04 18:46 ` Gabriel Dos Reis
2003-08-04 22:57 Robert Dewar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0307291522170.14031-100000@bellatrix.tat.physik.uni-tuebingen.de \
    --to=rguenth@tat.physik.uni-tuebingen.de \
    --cc=gcc@gcc.gnu.org \
    --cc=s.bosscher@student.tudelft.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).