powerpc: Clean up strlen and strnlen for power8

Message ID 1498628366-26658-1-git-send-email-raji@linux.vnet.ibm.com
State Committed
Delegated to: Tulio Magno Quites Machado Filho
Headers

Commit Message

Rajalakshmi S June 28, 2017, 5:39 a.m. UTC
  To align a quadword aligned address to 64 bytes, maximum of three
16 bytes load is needed for worst case instead of loading four times.

2017-06-28  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/power8/strlen.S: Remove unreachable code.
	* sysdeps/powerpc/powerpc64/power8/strnlen.S: Likewise.
---
 sysdeps/powerpc/powerpc64/power8/strlen.S  | 11 -----------
 sysdeps/powerpc/powerpc64/power8/strnlen.S | 10 +---------
 2 files changed, 1 insertion(+), 20 deletions(-)
  

Comments

Tulio Magno Quites Machado Filho June 30, 2017, 8:56 p.m. UTC | #1
Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com> writes:

> To align a quadword aligned address to 64 bytes, maximum of three
> 16 bytes load is needed for worst case instead of loading four times.
>
> 2017-06-28  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
>
> 	* sysdeps/powerpc/powerpc64/power8/strlen.S: Remove unreachable code.
> 	* sysdeps/powerpc/powerpc64/power8/strnlen.S: Likewise.

LGTM.
  

Patch

diff --git a/sysdeps/powerpc/powerpc64/power8/strlen.S b/sysdeps/powerpc/powerpc64/power8/strlen.S
index 8fdb6f5..5691d1d 100644
--- a/sysdeps/powerpc/powerpc64/power8/strlen.S
+++ b/sysdeps/powerpc/powerpc64/power8/strlen.S
@@ -144,17 +144,6 @@  L(align64):
 	or	r5,r10,r11
 	cmpdi	cr7,r5,0
 	addi	r9,r9,16
-	bne	cr7,L(dword_zero)
-
-	andi.	r10,r9,63
-	beq	cr0,L(preloop)
-	ld	r6,8(r4)
-	ldu	r5,16(r4)
-	cmpb	r10,r6,r0
-	cmpb	r11,r5,r0
-	or	r5,r10,r11
-	cmpdi	cr7,r5,0
-	addi	r9,r9,16
 
 	/* At this point, we are necessarily 64-byte aligned.  If no zeroes were
 	   found, jump to the vectorized loop.  */
diff --git a/sysdeps/powerpc/powerpc64/power8/strnlen.S b/sysdeps/powerpc/powerpc64/power8/strnlen.S
index 07608ff..6d669d4 100644
--- a/sysdeps/powerpc/powerpc64/power8/strnlen.S
+++ b/sysdeps/powerpc/powerpc64/power8/strnlen.S
@@ -141,15 +141,7 @@  ENTRY_TOCLESS (__strnlen)
 	addi    r4,r4,-16		/* Decrement maxlen in 16 bytes. */
 	bne     cr6,L(found_aligning64B) /* If found null bytes.  */
 
-	/* Unroll 3x above code block until aligned or find null bytes.  */
-	andi.   r7,r5,63
-	beq     cr0,L(preloop_64B)
-	lvx     v1,r5,r6
-	vcmpequb.      v1,v1,v0
-	addi    r5,r5,16
-	addi    r4,r4,-16
-	bne     cr6,L(found_aligning64B)
-
+	/* Unroll 2x above code block until aligned or find null bytes.  */
 	andi.   r7,r5,63
 	beq     cr0,L(preloop_64B)
 	lvx     v1,r5,r6