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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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