18c2ecf20Sopenharmony_ci#ifndef __ASM_MEMCPY_UTILS
28c2ecf20Sopenharmony_ci#define __ASM_MEMCPY_UTILS
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#include <linux/linkage.h>
58c2ecf20Sopenharmony_ci#include <asm/asi.h>
68c2ecf20Sopenharmony_ci#include <asm/visasm.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ciENTRY(__restore_asi_fp)
98c2ecf20Sopenharmony_ci	VISExitHalf
108c2ecf20Sopenharmony_ci	retl
118c2ecf20Sopenharmony_ci	 wr	%g0, ASI_AIUS, %asi
128c2ecf20Sopenharmony_ciENDPROC(__restore_asi_fp)
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciENTRY(__restore_asi)
158c2ecf20Sopenharmony_ci	retl
168c2ecf20Sopenharmony_ci	 wr	%g0, ASI_AIUS, %asi
178c2ecf20Sopenharmony_ciENDPROC(__restore_asi)
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2)
208c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
218c2ecf20Sopenharmony_ci	 mov	%o2, %o0
228c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2)
238c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_1)
248c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
258c2ecf20Sopenharmony_ci	 add	%o2, 1, %o0
268c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_1)
278c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_3)
288c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
298c2ecf20Sopenharmony_ci	 add	%o2, 3, %o0
308c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_3)
318c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_4)
328c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
338c2ecf20Sopenharmony_ci	 add	%o2, 4, %o0
348c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_4)
358c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_5)
368c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
378c2ecf20Sopenharmony_ci	 add	%o2, 5, %o0
388c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_5)
398c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_6)
408c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
418c2ecf20Sopenharmony_ci	 add	%o2, 6, %o0
428c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_6)
438c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_7)
448c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
458c2ecf20Sopenharmony_ci	 add	%o2, 7, %o0
468c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_7)
478c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_8)
488c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
498c2ecf20Sopenharmony_ci	 add	%o2, 8, %o0
508c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_8)
518c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_15)
528c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
538c2ecf20Sopenharmony_ci	 add	%o2, 15, %o0
548c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_15)
558c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_15_8)
568c2ecf20Sopenharmony_ci	 add	%o2, 15, %o2
578c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
588c2ecf20Sopenharmony_ci	 add	%o2, 8, %o0
598c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_15_8)
608c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_16)
618c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
628c2ecf20Sopenharmony_ci	 add	%o2, 16, %o0
638c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_16)
648c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_24)
658c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
668c2ecf20Sopenharmony_ci	 add	%o2, 24, %o0
678c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_24)
688c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_31)
698c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
708c2ecf20Sopenharmony_ci	 add	%o2, 31, %o0
718c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_31)
728c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_32)
738c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
748c2ecf20Sopenharmony_ci	 add	%o2, 32, %o0
758c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_32)
768c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_31_32)
778c2ecf20Sopenharmony_ci	add	%o2, 31, %o2
788c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
798c2ecf20Sopenharmony_ci	 add	%o2, 32, %o0
808c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_31_32)
818c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_31_24)
828c2ecf20Sopenharmony_ci	add	%o2, 31, %o2
838c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
848c2ecf20Sopenharmony_ci	 add	%o2, 24, %o0
858c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_31_24)
868c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_31_16)
878c2ecf20Sopenharmony_ci	add	%o2, 31, %o2
888c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
898c2ecf20Sopenharmony_ci	 add	%o2, 16, %o0
908c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_31_16)
918c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_31_8)
928c2ecf20Sopenharmony_ci	add	%o2, 31, %o2
938c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
948c2ecf20Sopenharmony_ci	 add	%o2, 8, %o0
958c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_31_8)
968c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63)
978c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
988c2ecf20Sopenharmony_ci	 add	%o2, 63, %o0
998c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63)
1008c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_64)
1018c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1028c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1038c2ecf20Sopenharmony_ci	 add	%o2, 64, %o0
1048c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_64)
1058c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_56)
1068c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1078c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1088c2ecf20Sopenharmony_ci	 add	%o2, 56, %o0
1098c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_56)
1108c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_48)
1118c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1128c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1138c2ecf20Sopenharmony_ci	 add	%o2, 48, %o0
1148c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_48)
1158c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_40)
1168c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1178c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1188c2ecf20Sopenharmony_ci	 add	%o2, 40, %o0
1198c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_40)
1208c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_32)
1218c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1228c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1238c2ecf20Sopenharmony_ci	 add	%o2, 32, %o0
1248c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_32)
1258c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_24)
1268c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1278c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1288c2ecf20Sopenharmony_ci	 add	%o2, 24, %o0
1298c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_24)
1308c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_16)
1318c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1328c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1338c2ecf20Sopenharmony_ci	 add	%o2, 16, %o0
1348c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_16)
1358c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_63_8)
1368c2ecf20Sopenharmony_ci	 add	%o2, 63, %o2
1378c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1388c2ecf20Sopenharmony_ci	 add	%o2, 8, %o0
1398c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_63_8)
1408c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5)
1418c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1428c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1438c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5)
1448c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_1)
1458c2ecf20Sopenharmony_ci	add	%o5, 1, %o5
1468c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1478c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1488c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_1)
1498c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_4)
1508c2ecf20Sopenharmony_ci	add	%o5, 4, %o5
1518c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1528c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1538c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_4)
1548c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_8)
1558c2ecf20Sopenharmony_ci	add	%o5, 8, %o5
1568c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1578c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1588c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_8)
1598c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_16)
1608c2ecf20Sopenharmony_ci	add	%o5, 16, %o5
1618c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1628c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1638c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_16)
1648c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_24)
1658c2ecf20Sopenharmony_ci	add	%o5, 24, %o5
1668c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1678c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1688c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_24)
1698c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_32)
1708c2ecf20Sopenharmony_ci	add	%o5, 32, %o5
1718c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1728c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1738c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_32)
1748c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_64)
1758c2ecf20Sopenharmony_ci	add	%o5, 32, %o5
1768c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1778c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
1788c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_64)
1798c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_g1)
1808c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1818c2ecf20Sopenharmony_ci	 add	%o2, %g1, %o0
1828c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_g1)
1838c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_g1_plus_1)
1848c2ecf20Sopenharmony_ci	add	%g1, 1, %g1
1858c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1868c2ecf20Sopenharmony_ci	 add	%o2, %g1, %o0
1878c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_g1_plus_1)
1888c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_g1_plus_8)
1898c2ecf20Sopenharmony_ci	add	%g1, 8, %g1
1908c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1918c2ecf20Sopenharmony_ci	 add	%o2, %g1, %o0
1928c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_g1_plus_8)
1938c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4)
1948c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
1958c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
1968c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4)
1978c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_8)
1988c2ecf20Sopenharmony_ci	add	%o4, 8, %o4
1998c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2008c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2018c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_8)
2028c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_16)
2038c2ecf20Sopenharmony_ci	add	%o4, 16, %o4
2048c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2058c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2068c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_16)
2078c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_24)
2088c2ecf20Sopenharmony_ci	add	%o4, 24, %o4
2098c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2108c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2118c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_24)
2128c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_32)
2138c2ecf20Sopenharmony_ci	add	%o4, 32, %o4
2148c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2158c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2168c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_32)
2178c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_40)
2188c2ecf20Sopenharmony_ci	add	%o4, 40, %o4
2198c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2208c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2218c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_40)
2228c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_48)
2238c2ecf20Sopenharmony_ci	add	%o4, 48, %o4
2248c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2258c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2268c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_48)
2278c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_56)
2288c2ecf20Sopenharmony_ci	add	%o4, 56, %o4
2298c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2308c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2318c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_56)
2328c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_64)
2338c2ecf20Sopenharmony_ci	add	%o4, 64, %o4
2348c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2358c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2368c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_64)
2378c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_64)
2388c2ecf20Sopenharmony_ci	add	%o5, 64, %o5
2398c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi
2408c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
2418c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_64)
2428c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o3_fp)
2438c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2448c2ecf20Sopenharmony_ci	 add	%o2, %o3, %o0
2458c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o3_fp)
2468c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o3_plus_1_fp)
2478c2ecf20Sopenharmony_ci	add	%o3, 1, %o3
2488c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2498c2ecf20Sopenharmony_ci	 add	%o2, %o3, %o0
2508c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o3_plus_1_fp)
2518c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o3_plus_4_fp)
2528c2ecf20Sopenharmony_ci	add	%o3, 4, %o3
2538c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2548c2ecf20Sopenharmony_ci	 add	%o2, %o3, %o0
2558c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o3_plus_4_fp)
2568c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_fp)
2578c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2588c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2598c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_fp)
2608c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_8_fp)
2618c2ecf20Sopenharmony_ci	add	%o4, 8, %o4
2628c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2638c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2648c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_8_fp)
2658c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_16_fp)
2668c2ecf20Sopenharmony_ci	add	%o4, 16, %o4
2678c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2688c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2698c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_16_fp)
2708c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_24_fp)
2718c2ecf20Sopenharmony_ci	add	%o4, 24, %o4
2728c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2738c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2748c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_24_fp)
2758c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_32_fp)
2768c2ecf20Sopenharmony_ci	add	%o4, 32, %o4
2778c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2788c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2798c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_32_fp)
2808c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_40_fp)
2818c2ecf20Sopenharmony_ci	add	%o4, 40, %o4
2828c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2838c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2848c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_40_fp)
2858c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_48_fp)
2868c2ecf20Sopenharmony_ci	add	%o4, 48, %o4
2878c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2888c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2898c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_48_fp)
2908c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_56_fp)
2918c2ecf20Sopenharmony_ci	add	%o4, 56, %o4
2928c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2938c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2948c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_56_fp)
2958c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o4_plus_64_fp)
2968c2ecf20Sopenharmony_ci	add	%o4, 64, %o4
2978c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
2988c2ecf20Sopenharmony_ci	 add	%o2, %o4, %o0
2998c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o4_plus_64_fp)
3008c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_fp)
3018c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3028c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3038c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_fp)
3048c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_64_fp)
3058c2ecf20Sopenharmony_ci	add	%o5, 64, %o5
3068c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3078c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3088c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_64_fp)
3098c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_56_fp)
3108c2ecf20Sopenharmony_ci	add	%o5, 56, %o5
3118c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3128c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3138c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_56_fp)
3148c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_48_fp)
3158c2ecf20Sopenharmony_ci	add	%o5, 48, %o5
3168c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3178c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3188c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_48_fp)
3198c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_40_fp)
3208c2ecf20Sopenharmony_ci	add	%o5, 40, %o5
3218c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3228c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3238c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_40_fp)
3248c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_32_fp)
3258c2ecf20Sopenharmony_ci	add	%o5, 32, %o5
3268c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3278c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3288c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_32_fp)
3298c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_24_fp)
3308c2ecf20Sopenharmony_ci	add	%o5, 24, %o5
3318c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3328c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3338c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_24_fp)
3348c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_16_fp)
3358c2ecf20Sopenharmony_ci	add	%o5, 16, %o5
3368c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3378c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3388c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_16_fp)
3398c2ecf20Sopenharmony_ciENTRY(memcpy_retl_o2_plus_o5_plus_8_fp)
3408c2ecf20Sopenharmony_ci	add	%o5, 8, %o5
3418c2ecf20Sopenharmony_ci	ba,pt	%xcc, __restore_asi_fp
3428c2ecf20Sopenharmony_ci	 add	%o2, %o5, %o0
3438c2ecf20Sopenharmony_ciENDPROC(memcpy_retl_o2_plus_o5_plus_8_fp)
3448c2ecf20Sopenharmony_ci
3458c2ecf20Sopenharmony_ci#endif
346