Vidya,
Revising your patch I found one issue and one improvement. The issue is by doing:
+ beq cr0,L(done)
+
+ mr r31, r4 /* save "s2" in r31 from r4 */
+ bl strlen /* call optimized strlen on s1; goto end of s1 */
You create a PLT branch, since strlen for powerpc64[le] builds are not an IFUNC.
I think you didn't catch it in your tests because the check-localplt test is not
handling it correct (I'll send a patch shortly to fix it).
The improvement is I noted the word read/store is not really helping in mostly
benchmark measurements. So fix both, along with some formatting issues, and pushed
in a user branch azanella/strncat-opt-ppc64. If you are OK with the changes I will
push it.