2
0
mirror of git://sourceware.org/git/glibc.git synced 2025-04-24 14:41:06 +08:00

Fix POWER4/POWER7 optimized strncmp to not read past differing bytes

This commit is contained in:
Andreas Schwab 2011-04-17 22:03:53 -04:00 committed by Ulrich Drepper
parent 75ea32abcd
commit 4420675c9d
5 changed files with 32 additions and 20 deletions
ChangeLog
sysdeps/powerpc
powerpc32
power4
power7
powerpc64
power4
power7

@ -1,3 +1,11 @@
2011-03-28 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/powerpc/powerpc32/power4/strncmp.S: Don't read past
differing bytes.
* sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
2011-04-17 Ulrich Drepper <drepper@gmail.com>
[BZ #12420]

@ -1,5 +1,5 @@
/* Optimized strcmp implementation for PowerPC32.
Copyright (C) 2003, 2006 Free Software Foundation, Inc.
Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -139,30 +139,31 @@ L(u1):
bdz L(u4)
cmpw rWORD1, rWORD2
beq- cr1, L(u4)
bne- L(u4)
lbzu rWORD3, 1(rSTR1)
lbzu rWORD4, 1(rSTR2)
bne- L(u4)
cmpwi cr1, rWORD3, 0
bdz L(u3)
cmpw rWORD3, rWORD4
beq- cr1, L(u3)
bne- L(u3)
lbzu rWORD1, 1(rSTR1)
lbzu rWORD2, 1(rSTR2)
bne- L(u3)
cmpwi cr1, rWORD1, 0
bdz L(u4)
cmpw rWORD1, rWORD2
beq- cr1, L(u4)
bne- L(u4)
lbzu rWORD3, 1(rSTR1)
lbzu rWORD4, 1(rSTR2)
bne- L(u4)
cmpwi cr1, rWORD3, 0
bdz L(u3)
cmpw rWORD3, rWORD4
beq- cr1, L(u3)
bne- L(u3)
lbzu rWORD1, 1(rSTR1)
lbzu rWORD2, 1(rSTR2)
beq+ L(u1)
b L(u1)
L(u3): sub rRTN, rWORD3, rWORD4
blr

@ -1,5 +1,5 @@
/* Optimized strcmp implementation for POWER7/PowerPC32.
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -141,30 +141,31 @@ L(u1):
bdz L(u4)
cmpw rWORD1,rWORD2
beq cr1,L(u4)
bne L(u4)
lbzu rWORD3,1(rSTR1)
lbzu rWORD4,1(rSTR2)
bne L(u4)
cmpwi cr1,rWORD3,0
bdz L(u3)
cmpw rWORD3,rWORD4
beq cr1,L(u3)
bne L(u3)
lbzu rWORD1,1(rSTR1)
lbzu rWORD2,1(rSTR2)
bne L(u3)
cmpwi cr1,rWORD1,0
bdz L(u4)
cmpw rWORD1,rWORD2
beq cr1,L(u4)
bne L(u4)
lbzu rWORD3,1(rSTR1)
lbzu rWORD4,1(rSTR2)
bne L(u4)
cmpwi cr1,rWORD3,0
bdz L(u3)
cmpw rWORD3,rWORD4
beq cr1,L(u3)
bne L(u3)
lbzu rWORD1,1(rSTR1)
lbzu rWORD2,1(rSTR2)
beq L(u1)
b L(u1)
L(u3): sub rRTN,rWORD3,rWORD4
blr

@ -1,5 +1,5 @@
/* Optimized strcmp implementation for PowerPC64.
Copyright (C) 2003, 2006 Free Software Foundation, Inc.
Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -143,30 +143,31 @@ L(u1):
bdz L(u4)
cmpd rWORD1, rWORD2
beq- cr1, L(u4)
bne- L(u4)
lbzu rWORD3, 1(rSTR1)
lbzu rWORD4, 1(rSTR2)
bne- L(u4)
cmpdi cr1, rWORD3, 0
bdz L(u3)
cmpd rWORD3, rWORD4
beq- cr1, L(u3)
bne- L(u3)
lbzu rWORD1, 1(rSTR1)
lbzu rWORD2, 1(rSTR2)
bne- L(u3)
cmpdi cr1, rWORD1, 0
bdz L(u4)
cmpd rWORD1, rWORD2
beq- cr1, L(u4)
bne- L(u4)
lbzu rWORD3, 1(rSTR1)
lbzu rWORD4, 1(rSTR2)
bne- L(u4)
cmpdi cr1, rWORD3, 0
bdz L(u3)
cmpd rWORD3, rWORD4
beq- cr1, L(u3)
bne- L(u3)
lbzu rWORD1, 1(rSTR1)
lbzu rWORD2, 1(rSTR2)
beq+ L(u1)
b L(u1)
L(u3): sub rRTN, rWORD3, rWORD4
blr

@ -1,5 +1,5 @@
/* Optimized strcmp implementation for POWER7/PowerPC64.
Copyright (C) 2010 Free Software Foundation, Inc.
Copyright (C) 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -145,30 +145,31 @@ L(u1):
bdz L(u4)
cmpd rWORD1,rWORD2
beq cr1,L(u4)
bne L(u4)
lbzu rWORD3,1(rSTR1)
lbzu rWORD4,1(rSTR2)
bne L(u4)
cmpdi cr1,rWORD3,0
bdz L(u3)
cmpd rWORD3,rWORD4
beq cr1,L(u3)
bne L(u3)
lbzu rWORD1,1(rSTR1)
lbzu rWORD2,1(rSTR2)
bne L(u3)
cmpdi cr1,rWORD1,0
bdz L(u4)
cmpd rWORD1,rWORD2
beq cr1,L(u4)
bne L(u4)
lbzu rWORD3,1(rSTR1)
lbzu rWORD4,1(rSTR2)
bne L(u4)
cmpdi cr1,rWORD3,0
bdz L(u3)
cmpd rWORD3,rWORD4
beq cr1,L(u3)
bne L(u3)
lbzu rWORD1,1(rSTR1)
lbzu rWORD2,1(rSTR2)
beq L(u1)
b L(u1)
L(u3): sub rRTN,rWORD3,rWORD4
blr