mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
Fix POWER4/POWER7 optimized strncmp to not read past differing bytes
This commit is contained in:
parent
75ea32abcd
commit
4420675c9d
@ -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>
|
2011-04-17 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
[BZ #12420]
|
[BZ #12420]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Optimized strcmp implementation for PowerPC32.
|
/* 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.
|
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
|
||||||
@ -139,30 +139,31 @@ L(u1):
|
|||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpw rWORD1, rWORD2
|
cmpw rWORD1, rWORD2
|
||||||
beq- cr1, L(u4)
|
beq- cr1, L(u4)
|
||||||
|
bne- L(u4)
|
||||||
lbzu rWORD3, 1(rSTR1)
|
lbzu rWORD3, 1(rSTR1)
|
||||||
lbzu rWORD4, 1(rSTR2)
|
lbzu rWORD4, 1(rSTR2)
|
||||||
bne- L(u4)
|
|
||||||
cmpwi cr1, rWORD3, 0
|
cmpwi cr1, rWORD3, 0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpw rWORD3, rWORD4
|
cmpw rWORD3, rWORD4
|
||||||
beq- cr1, L(u3)
|
beq- cr1, L(u3)
|
||||||
|
bne- L(u3)
|
||||||
lbzu rWORD1, 1(rSTR1)
|
lbzu rWORD1, 1(rSTR1)
|
||||||
lbzu rWORD2, 1(rSTR2)
|
lbzu rWORD2, 1(rSTR2)
|
||||||
bne- L(u3)
|
|
||||||
cmpwi cr1, rWORD1, 0
|
cmpwi cr1, rWORD1, 0
|
||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpw rWORD1, rWORD2
|
cmpw rWORD1, rWORD2
|
||||||
beq- cr1, L(u4)
|
beq- cr1, L(u4)
|
||||||
|
bne- L(u4)
|
||||||
lbzu rWORD3, 1(rSTR1)
|
lbzu rWORD3, 1(rSTR1)
|
||||||
lbzu rWORD4, 1(rSTR2)
|
lbzu rWORD4, 1(rSTR2)
|
||||||
bne- L(u4)
|
|
||||||
cmpwi cr1, rWORD3, 0
|
cmpwi cr1, rWORD3, 0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpw rWORD3, rWORD4
|
cmpw rWORD3, rWORD4
|
||||||
beq- cr1, L(u3)
|
beq- cr1, L(u3)
|
||||||
|
bne- L(u3)
|
||||||
lbzu rWORD1, 1(rSTR1)
|
lbzu rWORD1, 1(rSTR1)
|
||||||
lbzu rWORD2, 1(rSTR2)
|
lbzu rWORD2, 1(rSTR2)
|
||||||
beq+ L(u1)
|
b L(u1)
|
||||||
|
|
||||||
L(u3): sub rRTN, rWORD3, rWORD4
|
L(u3): sub rRTN, rWORD3, rWORD4
|
||||||
blr
|
blr
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Optimized strcmp implementation for POWER7/PowerPC32.
|
/* 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.
|
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
|
||||||
@ -141,30 +141,31 @@ L(u1):
|
|||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpw rWORD1,rWORD2
|
cmpw rWORD1,rWORD2
|
||||||
beq cr1,L(u4)
|
beq cr1,L(u4)
|
||||||
|
bne L(u4)
|
||||||
lbzu rWORD3,1(rSTR1)
|
lbzu rWORD3,1(rSTR1)
|
||||||
lbzu rWORD4,1(rSTR2)
|
lbzu rWORD4,1(rSTR2)
|
||||||
bne L(u4)
|
|
||||||
cmpwi cr1,rWORD3,0
|
cmpwi cr1,rWORD3,0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpw rWORD3,rWORD4
|
cmpw rWORD3,rWORD4
|
||||||
beq cr1,L(u3)
|
beq cr1,L(u3)
|
||||||
|
bne L(u3)
|
||||||
lbzu rWORD1,1(rSTR1)
|
lbzu rWORD1,1(rSTR1)
|
||||||
lbzu rWORD2,1(rSTR2)
|
lbzu rWORD2,1(rSTR2)
|
||||||
bne L(u3)
|
|
||||||
cmpwi cr1,rWORD1,0
|
cmpwi cr1,rWORD1,0
|
||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpw rWORD1,rWORD2
|
cmpw rWORD1,rWORD2
|
||||||
beq cr1,L(u4)
|
beq cr1,L(u4)
|
||||||
|
bne L(u4)
|
||||||
lbzu rWORD3,1(rSTR1)
|
lbzu rWORD3,1(rSTR1)
|
||||||
lbzu rWORD4,1(rSTR2)
|
lbzu rWORD4,1(rSTR2)
|
||||||
bne L(u4)
|
|
||||||
cmpwi cr1,rWORD3,0
|
cmpwi cr1,rWORD3,0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpw rWORD3,rWORD4
|
cmpw rWORD3,rWORD4
|
||||||
beq cr1,L(u3)
|
beq cr1,L(u3)
|
||||||
|
bne L(u3)
|
||||||
lbzu rWORD1,1(rSTR1)
|
lbzu rWORD1,1(rSTR1)
|
||||||
lbzu rWORD2,1(rSTR2)
|
lbzu rWORD2,1(rSTR2)
|
||||||
beq L(u1)
|
b L(u1)
|
||||||
|
|
||||||
L(u3): sub rRTN,rWORD3,rWORD4
|
L(u3): sub rRTN,rWORD3,rWORD4
|
||||||
blr
|
blr
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Optimized strcmp implementation for PowerPC64.
|
/* 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.
|
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
|
||||||
@ -143,30 +143,31 @@ L(u1):
|
|||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpd rWORD1, rWORD2
|
cmpd rWORD1, rWORD2
|
||||||
beq- cr1, L(u4)
|
beq- cr1, L(u4)
|
||||||
|
bne- L(u4)
|
||||||
lbzu rWORD3, 1(rSTR1)
|
lbzu rWORD3, 1(rSTR1)
|
||||||
lbzu rWORD4, 1(rSTR2)
|
lbzu rWORD4, 1(rSTR2)
|
||||||
bne- L(u4)
|
|
||||||
cmpdi cr1, rWORD3, 0
|
cmpdi cr1, rWORD3, 0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpd rWORD3, rWORD4
|
cmpd rWORD3, rWORD4
|
||||||
beq- cr1, L(u3)
|
beq- cr1, L(u3)
|
||||||
|
bne- L(u3)
|
||||||
lbzu rWORD1, 1(rSTR1)
|
lbzu rWORD1, 1(rSTR1)
|
||||||
lbzu rWORD2, 1(rSTR2)
|
lbzu rWORD2, 1(rSTR2)
|
||||||
bne- L(u3)
|
|
||||||
cmpdi cr1, rWORD1, 0
|
cmpdi cr1, rWORD1, 0
|
||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpd rWORD1, rWORD2
|
cmpd rWORD1, rWORD2
|
||||||
beq- cr1, L(u4)
|
beq- cr1, L(u4)
|
||||||
|
bne- L(u4)
|
||||||
lbzu rWORD3, 1(rSTR1)
|
lbzu rWORD3, 1(rSTR1)
|
||||||
lbzu rWORD4, 1(rSTR2)
|
lbzu rWORD4, 1(rSTR2)
|
||||||
bne- L(u4)
|
|
||||||
cmpdi cr1, rWORD3, 0
|
cmpdi cr1, rWORD3, 0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpd rWORD3, rWORD4
|
cmpd rWORD3, rWORD4
|
||||||
beq- cr1, L(u3)
|
beq- cr1, L(u3)
|
||||||
|
bne- L(u3)
|
||||||
lbzu rWORD1, 1(rSTR1)
|
lbzu rWORD1, 1(rSTR1)
|
||||||
lbzu rWORD2, 1(rSTR2)
|
lbzu rWORD2, 1(rSTR2)
|
||||||
beq+ L(u1)
|
b L(u1)
|
||||||
|
|
||||||
L(u3): sub rRTN, rWORD3, rWORD4
|
L(u3): sub rRTN, rWORD3, rWORD4
|
||||||
blr
|
blr
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Optimized strcmp implementation for POWER7/PowerPC64.
|
/* 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.
|
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
|
||||||
@ -145,30 +145,31 @@ L(u1):
|
|||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpd rWORD1,rWORD2
|
cmpd rWORD1,rWORD2
|
||||||
beq cr1,L(u4)
|
beq cr1,L(u4)
|
||||||
|
bne L(u4)
|
||||||
lbzu rWORD3,1(rSTR1)
|
lbzu rWORD3,1(rSTR1)
|
||||||
lbzu rWORD4,1(rSTR2)
|
lbzu rWORD4,1(rSTR2)
|
||||||
bne L(u4)
|
|
||||||
cmpdi cr1,rWORD3,0
|
cmpdi cr1,rWORD3,0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpd rWORD3,rWORD4
|
cmpd rWORD3,rWORD4
|
||||||
beq cr1,L(u3)
|
beq cr1,L(u3)
|
||||||
|
bne L(u3)
|
||||||
lbzu rWORD1,1(rSTR1)
|
lbzu rWORD1,1(rSTR1)
|
||||||
lbzu rWORD2,1(rSTR2)
|
lbzu rWORD2,1(rSTR2)
|
||||||
bne L(u3)
|
|
||||||
cmpdi cr1,rWORD1,0
|
cmpdi cr1,rWORD1,0
|
||||||
bdz L(u4)
|
bdz L(u4)
|
||||||
cmpd rWORD1,rWORD2
|
cmpd rWORD1,rWORD2
|
||||||
beq cr1,L(u4)
|
beq cr1,L(u4)
|
||||||
|
bne L(u4)
|
||||||
lbzu rWORD3,1(rSTR1)
|
lbzu rWORD3,1(rSTR1)
|
||||||
lbzu rWORD4,1(rSTR2)
|
lbzu rWORD4,1(rSTR2)
|
||||||
bne L(u4)
|
|
||||||
cmpdi cr1,rWORD3,0
|
cmpdi cr1,rWORD3,0
|
||||||
bdz L(u3)
|
bdz L(u3)
|
||||||
cmpd rWORD3,rWORD4
|
cmpd rWORD3,rWORD4
|
||||||
beq cr1,L(u3)
|
beq cr1,L(u3)
|
||||||
|
bne L(u3)
|
||||||
lbzu rWORD1,1(rSTR1)
|
lbzu rWORD1,1(rSTR1)
|
||||||
lbzu rWORD2,1(rSTR2)
|
lbzu rWORD2,1(rSTR2)
|
||||||
beq L(u1)
|
b L(u1)
|
||||||
|
|
||||||
L(u3): sub rRTN,rWORD3,rWORD4
|
L(u3): sub rRTN,rWORD3,rWORD4
|
||||||
blr
|
blr
|
||||||
|
Loading…
Reference in New Issue
Block a user