mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
Fix cmpli usage in power6 memset.
Building glibc for powerpc64 with recent (2.27.51.20161012) binutils, with multi-arch enabled, I get the error: ../sysdeps/powerpc/powerpc64/power6/memset.S: Assembler messages: ../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: operand out of range (5 is not between 0 and 1) ../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: operand out of range (128 is not between 0 and 31) ../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: missing operand Indeed, cmpli is documented as a four-operand instruction, and looking at nearby code it seems likely cmpldi was intended. This patch fixes this powerpc64 code accordingly, and makes a corresponding change to the powerpc32 code. Tested for powerpc, powerpc64 and powerpc64le by Tulio Magno Quites Machado Filho * sysdeps/powerpc/powerpc32/power6/memset.S (memset): Use cmplwi instead of cmpli. * sysdeps/powerpc/powerpc64/power6/memset.S (memset): Use cmpldi instead of cmpli.
This commit is contained in:
parent
20973cf442
commit
78b7adbaea
@ -1,3 +1,10 @@
|
||||
2016-10-25 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/power6/memset.S (memset): Use cmplwi
|
||||
instead of cmpli.
|
||||
* sysdeps/powerpc/powerpc64/power6/memset.S (memset): Use cmpldi
|
||||
instead of cmpli.
|
||||
|
||||
2016-10-24 Yury Norov <ynorov@caviumnetworks.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/fxstat.c: Remove useless cast.
|
||||
|
@ -394,7 +394,7 @@ L(cacheAlignedx):
|
||||
/* A simple loop for the longer (>640 bytes) lengths. This form limits
|
||||
the branch miss-predicted to exactly 1 at loop exit.*/
|
||||
L(cacheAligned512):
|
||||
cmpli cr1,rLEN,128
|
||||
cmplwi cr1,rLEN,128
|
||||
blt cr1,L(cacheAligned1)
|
||||
dcbz 0,rMEMP
|
||||
addi rLEN,rLEN,-128
|
||||
|
@ -251,7 +251,7 @@ L(cacheAlignedx):
|
||||
/* A simple loop for the longer (>640 bytes) lengths. This form limits
|
||||
the branch miss-predicted to exactly 1 at loop exit.*/
|
||||
L(cacheAligned512):
|
||||
cmpli cr1,rLEN,128
|
||||
cmpldi cr1,rLEN,128
|
||||
blt cr1,L(cacheAligned1)
|
||||
dcbz 0,rMEMP
|
||||
addi rLEN,rLEN,-128
|
||||
|
Loading…
Reference in New Issue
Block a user