[PATCH 1/2] powerpc: Optimized strncpy for POWER9

Raphael M Zinsly rzinsly@linux.ibm.com
Thu Aug 20 18:31:12 GMT 2020


Here is the make bench output:

                             	generic_strncpy	__strncpy_power9 
__strncpy_power8	__strncpy_power7	__strncpy_ppc
Length   16, n   16, alignment  1/ 1:	7.11694	2.77348	2.80296	6.5724	10.4471
Length   16, n   16, alignment  1/ 1:	7.1557	2.75968	2.805	6.5748	10.5064
Length   16, n   16, alignment  1/ 2:	7.17956	2.79127	2.79964	6.57323 
10.3281
Length   16, n   16, alignment  2/ 1:	7.15841	2.77364	3.10582	6.2332	10.331
Length    2, n    4, alignment  7/ 2:	8.90911	2.4623	5.38449	5.64873	9.36348
Length    4, n    2, alignment  2/ 7:	6.65395	1.84558	2.58298	3.10566 
7.46376
Length    2, n    4, alignment  7/ 2:	8.70625	2.41166	5.38131	5.73421 
9.64285
Length    4, n    2, alignment  2/ 7:	6.65458	1.84354	2.58382	3.64721 
6.96163
Length   16, n   16, alignment  2/ 2:	7.01778	2.77373	3.10668	6.58047 
10.6006
Length   16, n   16, alignment  2/ 2:	7.53778	2.75789	3.10591	6.2277	10.2613
Length   16, n   16, alignment  2/ 4:	7.13828	2.79132	3.10567	6.56847	10.619
Length   16, n   16, alignment  4/ 2:	7.38659	2.77668	3.70851	6.54537 
9.17368
Length    4, n    8, alignment  6/ 4:	8.71748	2.45183	5.76669	4.65782	10.014
Length    8, n    4, alignment  4/ 6:	6.5504	1.83463	2.96574	2.66227	8.49964
Length    4, n    8, alignment  6/ 4:	8.96461	2.4499	5.78384	5.32287	9.79641
Length    8, n    4, alignment  4/ 6:	6.48083	1.83265	2.9783	3.38632	8.51888
Length   16, n   16, alignment  3/ 3:	7.7538	2.77353	3.29008	6.55912	9.94143
Length   16, n   16, alignment  3/ 3:	7.75279	2.76148	3.30616	6.5445	9.98866
Length   16, n   16, alignment  3/ 6:	7.21486	2.79444	3.33712	6.24747	10.113
Length   16, n   16, alignment  6/ 3:	6.99138	2.77778	4.50777	6.22522 
8.53482
Length    8, n   16, alignment  5/ 6:	8.26994	2.77966	4.60681	6.10938 
10.5975
Length   16, n    8, alignment  6/ 5:	6.28062	2.07193	2.57761	4.95636 
6.48035
Length    8, n   16, alignment  5/ 6:	8.17113	2.43559	4.27753	5.95453 
11.1796
Length   16, n    8, alignment  6/ 5:	6.21214	2.07239	2.57714	4.96762 
6.76041
Length   16, n   16, alignment  4/ 4:	7.31373	2.77573	3.78349	6.19349 
8.91432
Length   16, n   16, alignment  4/ 4:	7.32226	2.75658	3.70319	6.60792 
9.17307
Length   16, n   16, alignment  4/ 0:	7.58812	2.76841	3.71554	6.54282 
8.90051
Length   16, n   16, alignment  0/ 4:	6.92871	2.06944	2.66876	6.63947 
8.08171
Length   16, n   32, alignment  4/ 0:	10.2972	3.3192	6.53695	7.77295	12.332
Length   32, n   16, alignment  0/ 4:	6.98056	2.06954	2.66445	6.54976 
7.65286
Length   16, n   32, alignment  4/ 0:	10.5356	3.31343	6.53813	7.72029 
12.2915
Length   32, n   16, alignment  0/ 4:	7.36068	2.06945	2.66424	6.21052 
8.07614
Length   16, n   16, alignment  5/ 5:	7.2122	2.77732	4.17451	6.55383	10.4887
Length   16, n   16, alignment  5/ 5:	7.34438	2.77512	4.17191	6.56873 
10.5664
Length   16, n   16, alignment  5/ 2:	7.15746	2.76198	4.14481	6.56235 
10.7391
Length   16, n   16, alignment  2/ 5:	7.19372	2.79273	3.10693	6.56984 
10.2697
Length   32, n   64, alignment  3/ 2:	15.3918	4.22964	7.0146	12.5809	13.8661
Length   64, n   32, alignment  2/ 3:	10.5331	3.02942	3.54253	9.19106 
12.9356
Length   32, n   64, alignment  3/ 2:	15.369	4.17282	7.36163	12.5759	16.8501
Length   64, n   32, alignment  2/ 3:	10.5585	3.01971	3.52885	9.03369 
15.6663
Length   16, n   16, alignment  6/ 6:	7.0405	2.77527	4.53842	6.54733	7.99437
Length   16, n   16, alignment  6/ 6:	7.02801	2.76059	4.52873	6.53536 
8.45713
Length   16, n   16, alignment  6/ 4:	7.42011	2.77669	4.52223	6.57756	7.9899
Length   16, n   16, alignment  4/ 6:	7.37787	2.77507	3.77821	6.57058 
9.17396
Length   64, n  128, alignment  2/ 4:	17.188	5.33493	8.00394	12.6196	19.1784
Length  128, n   64, alignment  4/ 2:	12.7962	3.91004	5.42994	11.294	12.5273
Length   64, n  128, alignment  2/ 4:	17.2298	5.2748	8.15392	12.6039	24.3802
Length  128, n   64, alignment  4/ 2:	12.7866	3.87534	5.3334	11.8516	21.6528
Length   16, n   16, alignment  7/ 7:	7.75015	2.76775	5.59024	6.57976 
8.42318
Length   16, n   16, alignment  7/ 7:	7.81681	2.75691	5.56801	6.55397 
10.0378
Length   16, n   16, alignment  7/ 6:	7.75225	2.77446	5.56813	6.57349 
8.49645
Length   16, n   16, alignment  6/ 7:	7.23237	2.79186	4.51528	6.55304 
8.63443
Length  128, n  256, alignment  1/ 6:	19.8414	8.37691	10.3445	18.4838 
22.8314
Length  256, n  128, alignment  6/ 1:	14.7972	5.38498	8.83611	13.8521 
16.6154
Length  128, n  256, alignment  1/ 6:	19.8497	8.37754	10.3469	18.2655 
43.3568
Length  256, n  128, alignment  6/ 1:	14.7542	5.31075	8.75314	13.7759 
37.6351
Length    8, n   16, alignment  0/ 0:	8.19872	2.45818	4.27602	4.6578	7.98513
Length   32, n   16, alignment  0/ 0:	6.92066	2.07115	2.66465	2.66381 
7.75655
Length    8, n   16, alignment  7/ 2:	8.18253	2.42685	4.70317	6.01808 
9.35743
Length   32, n   16, alignment  7/ 2:	7.79714	2.60074	5.58717	6.64181 
6.98583
Length   16, n   32, alignment  0/ 0:	10.4715	3.40184	6.28388	4.86146 
11.0819
Length   64, n   32, alignment  0/ 0:	10.4403	2.54135	3.07109	3.38791 
9.35196
Length   16, n   32, alignment  6/ 4:	10.7077	3.34867	7.01321	10.4278 
11.2951
Length   64, n   32, alignment  6/ 4:	10.9215	3.03041	5.04324	8.30023 
11.2648
Length   32, n   64, alignment  0/ 0:	12.0062	4.09428	5.32372	5.48319 
14.1455
Length  128, n   64, alignment  0/ 0:	10.1803	3.47282	3.83134	4.21557 
10.6674
Length   32, n   64, alignment  5/ 6:	15.4165	4.16297	7.78876	10.8762 
15.4308
Length  128, n   64, alignment  5/ 6:	12.7332	3.91667	5.8014	10.5869	14.0961
Length   64, n  128, alignment  0/ 0:	13.238	5.24242	6.90661	8.05566	15.9848
Length  256, n  128, alignment  0/ 0:	8.759	4.9483	6.98675	6.11489	12.6755
Length   64, n  128, alignment  4/ 0:	13.6593	5.27931	8.60925	12.5916 
17.5016
Length  256, n  128, alignment  4/ 0:	13.4801	5.37114	7.47485	14.0585 
17.4517
Length  128, n  256, alignment  0/ 0:	15.3147	8.02462	8.92006	9.67769 
20.3757
Length  512, n  256, alignment  0/ 0:	11.5638	7.22535	9.80468	9.93597 
21.3421
Length  128, n  256, alignment  3/ 2:	19.8948	8.15967	10.9435	20.6146 
22.4146
Length  512, n  256, alignment  3/ 2:	18.681	7.77864	10.9269	25.9269	28.0105
Length  256, n  512, alignment  0/ 0:	19.4894	13.7363	14.8394	15.4064 
31.6341
Length 1024, n  512, alignment  0/ 0:	18.0108	11.8737	18.1779	18.5072 
41.5425
Length  256, n  512, alignment  2/ 4:	25.5662	14.5189	16.1872	29.5395 
33.7587
Length 1024, n  512, alignment  2/ 4:	28.0079	13.2347	19.067	48.1998	52.3078
Length  512, n 1024, alignment  0/ 0:	23.1385	25.4237	21.2303	23.632	47.4502
Length 2048, n 1024, alignment  0/ 0:	31.201	21.308	40.6351	39.04	75.0329
Length  512, n 1024, alignment  1/ 6:	35.6234	27.0042	24.4711	51.3364 
60.6277
Length 2048, n 1024, alignment  1/ 6:	47.442	24.0381	41.6616	85.4832	91.8897


More information about the Libc-alpha mailing list