public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/27212]  New: Altivec Comparison Peephole Bug
@ 2006-04-19  9:30 ben at shellandslate dot com
  2006-04-19 15:03 ` [Bug c++/27212] " pinskia at gcc dot gnu dot org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: ben at shellandslate dot com @ 2006-04-19  9:30 UTC (permalink / raw)
  To: gcc-bugs

Given the Altivec function:

vector unsigned short peepholebug(vector unsigned short a, vector unsigned
short b) {
        vector unsigned short mask = (vector unsigned short)vec_cmplt(a, b);

        if (vec_all_ge(a, b))   return a;

        return mask;
        }

XCode 2.2.1 / gcc 4.0 on PowerMac G5 generates ( with optimizer set to -os):

mfspr r0,256
stw r0,-8(r1)
oris r0,r0,0x8000
mtspr 256,r0
vcmpgtuh. v0,v3,v2
vcmpgtuh v0,v3,v2
beq cr6,L99
vor v2,v0,v0
lwz r12,-8(r1)
mtspr 256,r12
blr

Note the second "vcmpgtuh" instruction, which is completely superfluous. The
peephole optimizer should recognize this situation and remove the instruction.
(I've filed a bug with Apple; #4519214.)


-- 
           Summary: Altivec Comparison Peephole Bug
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ben at shellandslate dot com
 GCC build triplet: 4.0.0
  GCC host triplet: 4.0.0
GCC target triplet: 4.0.0


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


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

end of thread, other threads:[~2009-02-24  9:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-19  9:30 [Bug c++/27212] New: Altivec Comparison Peephole Bug ben at shellandslate dot com
2006-04-19 15:03 ` [Bug c++/27212] " pinskia at gcc dot gnu dot org
2006-04-19 16:50 ` [Bug target/27212] vec_cmplt followed by a vec_all_ge, gives two vcmpgtuh instructions pinskia at gcc dot gnu dot org
2006-04-19 20:20 ` ben at shellandslate dot com
2006-04-22 18:36 ` pinskia at gcc dot gnu dot org
2006-06-09  8:50 ` bonzini at gnu dot org
2009-02-24  9:01 ` bonzini at gnu dot org

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