Fix incorrect use of cmpldi in 32-bit PPC code.

The 32-bit PowerPC POWER6 memcpy uses the cmpldi insn when it should use a cmplwi.
BZ #10107
This commit is contained in:
Ryan S. Arnold 2009-06-16 08:29:04 -07:00 committed by Ulrich Drepper
parent b23964c620
commit 25bfbb9e0e
3 changed files with 38 additions and 31 deletions

View File

@ -1,3 +1,10 @@
2009-04-22 Ryan S. Arnold <rsa@us.ibm.com>
[BZ #10107]
* sysdeps/powerpc/powerpc32/power6/memcpy.S (memcpy): Replace cmpldi
with cmplwi.
* sysdeps/powerpc/powerpc32/power6/memset.S (memset): Likewise.
2009-06-16 Ulrich Drepper <drepper@redhat.com> 2009-06-16 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/grantpt.c: Remove file after folding changes * sysdeps/unix/sysv/linux/grantpt.c: Remove file after folding changes

View File

@ -1,5 +1,5 @@
/* Optimized memcpy implementation for PowerPC32 on POWER6. /* Optimized memcpy implementation for PowerPC32 on POWER6.
Copyright (C) 2003, 2006 Free Software Foundation, Inc. Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -208,7 +208,7 @@ L(word_unaligned_short):
andi. 0,8,3 andi. 0,8,3
beq cr6,L(wus_8) /* Handle moves of 8 bytes. */ beq cr6,L(wus_8) /* Handle moves of 8 bytes. */
/* At least 9 bytes left. Get the source word aligned. */ /* At least 9 bytes left. Get the source word aligned. */
cmpldi cr1,5,16 cmplwi cr1,5,16
mr 12,4 mr 12,4
ble cr6,L(wus_4) /* Handle moves of 0-8 bytes. */ ble cr6,L(wus_4) /* Handle moves of 0-8 bytes. */
mr 11,3 mr 11,3

View File

@ -1,5 +1,5 @@
/* Optimized 32-bit memset implementation for POWER6. /* Optimized 32-bit memset implementation for POWER6.
Copyright (C) 1997,99, 2000,02,03,06,2007 Free Software Foundation, Inc. Copyright (C) 1997,99,2000,02,03,06,2007,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -381,7 +381,7 @@ L(cacheAligned):
blt cr1,L(cacheAligned1) blt cr1,L(cacheAligned1)
li rMEMP2,128 li rMEMP2,128
L(cacheAlignedx): L(cacheAlignedx):
cmpldi cr5,rLEN,640 cmplwi cr5,rLEN,640
blt cr6,L(cacheAligned128) blt cr6,L(cacheAligned128)
bgt cr5,L(cacheAligned512) bgt cr5,L(cacheAligned512)
cmplwi cr6,rLEN,512 cmplwi cr6,rLEN,512