public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/15823] New: optimise >>> style calculation
@ 2004-06-04 16:41 ajrobb at bigfoot dot com
  2004-06-04 16:48 ` [Bug c/15823] " pinskia at gcc dot gnu dot org
  2004-06-24  8:48 ` ajrobb at bigfoot dot com
  0 siblings, 2 replies; 3+ messages in thread
From: ajrobb at bigfoot dot com @ 2004-06-04 16:41 UTC (permalink / raw)
  To: gcc-bugs

The C code fragment (i & (~0<<n))/(1<<n) is equivalent to Java's i>>>n 
arithmetic shift (at least for n < sizeof(i)*CHAR_BIT). 
 
There are two problems: 
 
1) if n is not a manifest constant, i/(1<<n) uses divide. 
 
2) Even when n is a constant, say 2: 
 
(i & ~3)/4 
 
still does not compile to a single SAR (x86) it still checks the sign and adds 
3 if negative.

-- 
           Summary: optimise >>> style calculation
           Product: gcc
           Version: 3.3.1
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P2
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ajrobb at bigfoot dot com
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i586-suse-linux
  GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c/15823] optimise >>> style calculation
  2004-06-04 16:41 [Bug c/15823] New: optimise >>> style calculation ajrobb at bigfoot dot com
@ 2004-06-04 16:48 ` pinskia at gcc dot gnu dot org
  2004-06-24  8:48 ` ajrobb at bigfoot dot com
  1 sibling, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-06-04 16:48 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-06-04 16:48 -------
i & ~3 still can be postive.  So you still have to do the sign check, if you want te equivalent of Java's i >> 
n the do ((unsigned int)i) >> n.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c/15823] optimise >>> style calculation
  2004-06-04 16:41 [Bug c/15823] New: optimise >>> style calculation ajrobb at bigfoot dot com
  2004-06-04 16:48 ` [Bug c/15823] " pinskia at gcc dot gnu dot org
@ 2004-06-24  8:48 ` ajrobb at bigfoot dot com
  1 sibling, 0 replies; 3+ messages in thread
From: ajrobb at bigfoot dot com @ 2004-06-24  8:48 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From ajrobb at bigfoot dot com  2004-06-24 08:39 -------
Subject: Re:  optimise >>> style calculation

Thanks for getting back to me,
I am not looking for Java's i>>n rather i>>>n (e.g. x86 SAR assembler)
I want to duplicate the most significant bit into the next n most significant 
bits. However, I want to avoid assembler and use a C code fragment that 
compiles to a single SAR instruction on an x86.

Regards,
Andy Robb.

On Friday 04 June 2004 17:48, pinskia at gcc dot gnu dot org wrote:
> ------- Additional Comments From pinskia at gcc dot gnu dot org  2004-06-04
> 16:48 ------- i & ~3 still can be postive.  So you still have to do the
> sign check, if you want te equivalent of Java's i >> n the do ((unsigned
> int)i) >> n.


-- 


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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-06-24  8:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-04 16:41 [Bug c/15823] New: optimise >>> style calculation ajrobb at bigfoot dot com
2004-06-04 16:48 ` [Bug c/15823] " pinskia at gcc dot gnu dot org
2004-06-24  8:48 ` ajrobb at bigfoot dot com

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).