bn-ppc.s 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875
  1. .globl bn_sqr_comba4
  2. .type bn_sqr_comba4,@function
  3. .globl bn_sqr_comba8
  4. .type bn_sqr_comba8,@function
  5. .globl bn_mul_comba4
  6. .type bn_mul_comba4,@function
  7. .globl bn_mul_comba8
  8. .type bn_mul_comba8,@function
  9. .globl bn_sub_words
  10. .type bn_sub_words,@function
  11. .globl bn_add_words
  12. .type bn_add_words,@function
  13. .globl bn_div_words
  14. .type bn_div_words,@function
  15. .globl bn_sqr_words
  16. .type bn_sqr_words,@function
  17. .globl bn_mul_words
  18. .type bn_mul_words,@function
  19. .globl bn_mul_add_words
  20. .type bn_mul_add_words,@function
  21. .machine "any"
  22. .abiversion 2
  23. .text
  24. .align 4
  25. bn_sqr_comba4:
  26. .localentry bn_sqr_comba4,0
  27. xor 0,0,0
  28. ld 5,0(4)
  29. mulld 9,5,5
  30. mulhdu 10,5,5
  31. std 9,0(3)
  32. ld 6,8(4)
  33. mulld 7,5,6
  34. mulhdu 8,5,6
  35. addc 7,7,7
  36. adde 8,8,8
  37. addze 9,0
  38. addc 10,7,10
  39. addze 11,8
  40. addze 9,9
  41. std 10,8(3)
  42. mulld 7,6,6
  43. mulhdu 8,6,6
  44. addc 11,7,11
  45. adde 9,8,9
  46. addze 10,0
  47. ld 6,16(4)
  48. mulld 7,5,6
  49. mulhdu 8,5,6
  50. addc 7,7,7
  51. adde 8,8,8
  52. addze 10,10
  53. addc 11,7,11
  54. adde 9,8,9
  55. addze 10,10
  56. std 11,16(3)
  57. ld 6,24(4)
  58. mulld 7,5,6
  59. mulhdu 8,5,6
  60. addc 7,7,7
  61. adde 8,8,8
  62. addze 11,0
  63. addc 9,7,9
  64. adde 10,8,10
  65. addze 11,11
  66. ld 5,8(4)
  67. ld 6,16(4)
  68. mulld 7,5,6
  69. mulhdu 8,5,6
  70. addc 7,7,7
  71. adde 8,8,8
  72. addze 11,11
  73. addc 9,7,9
  74. adde 10,8,10
  75. addze 11,11
  76. std 9,24(3)
  77. mulld 7,6,6
  78. mulhdu 8,6,6
  79. addc 10,7,10
  80. adde 11,8,11
  81. addze 9,0
  82. ld 6,24(4)
  83. mulld 7,5,6
  84. mulhdu 8,5,6
  85. addc 7,7,7
  86. adde 8,8,8
  87. addze 9,9
  88. addc 10,7,10
  89. adde 11,8,11
  90. addze 9,9
  91. std 10,32(3)
  92. ld 5,16(4)
  93. mulld 7,5,6
  94. mulhdu 8,5,6
  95. addc 7,7,7
  96. adde 8,8,8
  97. addze 10,0
  98. addc 11,7,11
  99. adde 9,8,9
  100. addze 10,10
  101. std 11,40(3)
  102. mulld 7,6,6
  103. mulhdu 8,6,6
  104. addc 9,7,9
  105. adde 10,8,10
  106. std 9,48(3)
  107. std 10,56(3)
  108. blr
  109. .long 0
  110. .byte 0,12,0x14,0,0,0,2,0
  111. .long 0
  112. .size bn_sqr_comba4,.-bn_sqr_comba4
  113. .align 4
  114. bn_sqr_comba8:
  115. .localentry bn_sqr_comba8,0
  116. xor 0,0,0
  117. ld 5,0(4)
  118. mulld 9,5,5
  119. mulhdu 10,5,5
  120. std 9,0(3)
  121. ld 6,8(4)
  122. mulld 7,5,6
  123. mulhdu 8,5,6
  124. addc 10,7,10
  125. adde 11,8,0
  126. addze 9,0
  127. addc 10,7,10
  128. adde 11,8,11
  129. addze 9,9
  130. std 10,8(3)
  131. mulld 7,6,6
  132. mulhdu 8,6,6
  133. addc 11,7,11
  134. adde 9,8,9
  135. addze 10,0
  136. ld 6,16(4)
  137. mulld 7,5,6
  138. mulhdu 8,5,6
  139. addc 11,7,11
  140. adde 9,8,9
  141. addze 10,10
  142. addc 11,7,11
  143. adde 9,8,9
  144. addze 10,10
  145. std 11,16(3)
  146. ld 6,24(4)
  147. mulld 7,5,6
  148. mulhdu 8,5,6
  149. addc 9,7,9
  150. adde 10,8,10
  151. addze 11,0
  152. addc 9,7,9
  153. adde 10,8,10
  154. addze 11,11
  155. ld 5,8(4)
  156. ld 6,16(4)
  157. mulld 7,5,6
  158. mulhdu 8,5,6
  159. addc 9,7,9
  160. adde 10,8,10
  161. addze 11,11
  162. addc 9,7,9
  163. adde 10,8,10
  164. addze 11,11
  165. std 9,24(3)
  166. mulld 7,6,6
  167. mulhdu 8,6,6
  168. addc 10,7,10
  169. adde 11,8,11
  170. addze 9,0
  171. ld 6,24(4)
  172. mulld 7,5,6
  173. mulhdu 8,5,6
  174. addc 10,7,10
  175. adde 11,8,11
  176. addze 9,9
  177. addc 10,7,10
  178. adde 11,8,11
  179. addze 9,9
  180. ld 5,0(4)
  181. ld 6,32(4)
  182. mulld 7,5,6
  183. mulhdu 8,5,6
  184. addc 10,7,10
  185. adde 11,8,11
  186. addze 9,9
  187. addc 10,7,10
  188. adde 11,8,11
  189. addze 9,9
  190. std 10,32(3)
  191. ld 6,40(4)
  192. mulld 7,5,6
  193. mulhdu 8,5,6
  194. addc 11,7,11
  195. adde 9,8,9
  196. addze 10,0
  197. addc 11,7,11
  198. adde 9,8,9
  199. addze 10,10
  200. ld 5,8(4)
  201. ld 6,32(4)
  202. mulld 7,5,6
  203. mulhdu 8,5,6
  204. addc 11,7,11
  205. adde 9,8,9
  206. addze 10,10
  207. addc 11,7,11
  208. adde 9,8,9
  209. addze 10,10
  210. ld 5,16(4)
  211. ld 6,24(4)
  212. mulld 7,5,6
  213. mulhdu 8,5,6
  214. addc 11,7,11
  215. adde 9,8,9
  216. addze 10,10
  217. addc 11,7,11
  218. adde 9,8,9
  219. addze 10,10
  220. std 11,40(3)
  221. mulld 7,6,6
  222. mulhdu 8,6,6
  223. addc 9,7,9
  224. adde 10,8,10
  225. addze 11,0
  226. ld 6,32(4)
  227. mulld 7,5,6
  228. mulhdu 8,5,6
  229. addc 9,7,9
  230. adde 10,8,10
  231. addze 11,11
  232. addc 9,7,9
  233. adde 10,8,10
  234. addze 11,11
  235. ld 5,8(4)
  236. ld 6,40(4)
  237. mulld 7,5,6
  238. mulhdu 8,5,6
  239. addc 9,7,9
  240. adde 10,8,10
  241. addze 11,11
  242. addc 9,7,9
  243. adde 10,8,10
  244. addze 11,11
  245. ld 5,0(4)
  246. ld 6,48(4)
  247. mulld 7,5,6
  248. mulhdu 8,5,6
  249. addc 9,7,9
  250. adde 10,8,10
  251. addze 11,11
  252. addc 9,7,9
  253. adde 10,8,10
  254. addze 11,11
  255. std 9,48(3)
  256. ld 6,56(4)
  257. mulld 7,5,6
  258. mulhdu 8,5,6
  259. addc 10,7,10
  260. adde 11,8,11
  261. addze 9,0
  262. addc 10,7,10
  263. adde 11,8,11
  264. addze 9,9
  265. ld 5,8(4)
  266. ld 6,48(4)
  267. mulld 7,5,6
  268. mulhdu 8,5,6
  269. addc 10,7,10
  270. adde 11,8,11
  271. addze 9,9
  272. addc 10,7,10
  273. adde 11,8,11
  274. addze 9,9
  275. ld 5,16(4)
  276. ld 6,40(4)
  277. mulld 7,5,6
  278. mulhdu 8,5,6
  279. addc 10,7,10
  280. adde 11,8,11
  281. addze 9,9
  282. addc 10,7,10
  283. adde 11,8,11
  284. addze 9,9
  285. ld 5,24(4)
  286. ld 6,32(4)
  287. mulld 7,5,6
  288. mulhdu 8,5,6
  289. addc 10,7,10
  290. adde 11,8,11
  291. addze 9,9
  292. addc 10,7,10
  293. adde 11,8,11
  294. addze 9,9
  295. std 10,56(3)
  296. mulld 7,6,6
  297. mulhdu 8,6,6
  298. addc 11,7,11
  299. adde 9,8,9
  300. addze 10,0
  301. ld 6,40(4)
  302. mulld 7,5,6
  303. mulhdu 8,5,6
  304. addc 11,7,11
  305. adde 9,8,9
  306. addze 10,10
  307. addc 11,7,11
  308. adde 9,8,9
  309. addze 10,10
  310. ld 5,16(4)
  311. ld 6,48(4)
  312. mulld 7,5,6
  313. mulhdu 8,5,6
  314. addc 11,7,11
  315. adde 9,8,9
  316. addze 10,10
  317. addc 11,7,11
  318. adde 9,8,9
  319. addze 10,10
  320. ld 5,8(4)
  321. ld 6,56(4)
  322. mulld 7,5,6
  323. mulhdu 8,5,6
  324. addc 11,7,11
  325. adde 9,8,9
  326. addze 10,10
  327. addc 11,7,11
  328. adde 9,8,9
  329. addze 10,10
  330. std 11,64(3)
  331. ld 5,16(4)
  332. mulld 7,5,6
  333. mulhdu 8,5,6
  334. addc 9,7,9
  335. adde 10,8,10
  336. addze 11,0
  337. addc 9,7,9
  338. adde 10,8,10
  339. addze 11,11
  340. ld 5,24(4)
  341. ld 6,48(4)
  342. mulld 7,5,6
  343. mulhdu 8,5,6
  344. addc 9,7,9
  345. adde 10,8,10
  346. addze 11,11
  347. addc 9,7,9
  348. adde 10,8,10
  349. addze 11,11
  350. ld 5,32(4)
  351. ld 6,40(4)
  352. mulld 7,5,6
  353. mulhdu 8,5,6
  354. addc 9,7,9
  355. adde 10,8,10
  356. addze 11,11
  357. addc 9,7,9
  358. adde 10,8,10
  359. addze 11,11
  360. std 9,72(3)
  361. mulld 7,6,6
  362. mulhdu 8,6,6
  363. addc 10,7,10
  364. adde 11,8,11
  365. addze 9,0
  366. ld 6,48(4)
  367. mulld 7,5,6
  368. mulhdu 8,5,6
  369. addc 10,7,10
  370. adde 11,8,11
  371. addze 9,9
  372. addc 10,7,10
  373. adde 11,8,11
  374. addze 9,9
  375. ld 5,24(4)
  376. ld 6,56(4)
  377. mulld 7,5,6
  378. mulhdu 8,5,6
  379. addc 10,7,10
  380. adde 11,8,11
  381. addze 9,9
  382. addc 10,7,10
  383. adde 11,8,11
  384. addze 9,9
  385. std 10,80(3)
  386. ld 5,32(4)
  387. mulld 7,5,6
  388. mulhdu 8,5,6
  389. addc 11,7,11
  390. adde 9,8,9
  391. addze 10,0
  392. addc 11,7,11
  393. adde 9,8,9
  394. addze 10,10
  395. ld 5,40(4)
  396. ld 6,48(4)
  397. mulld 7,5,6
  398. mulhdu 8,5,6
  399. addc 11,7,11
  400. adde 9,8,9
  401. addze 10,10
  402. addc 11,7,11
  403. adde 9,8,9
  404. addze 10,10
  405. std 11,88(3)
  406. mulld 7,6,6
  407. mulhdu 8,6,6
  408. addc 9,7,9
  409. adde 10,8,10
  410. addze 11,0
  411. ld 6,56(4)
  412. mulld 7,5,6
  413. mulhdu 8,5,6
  414. addc 9,7,9
  415. adde 10,8,10
  416. addze 11,11
  417. addc 9,7,9
  418. adde 10,8,10
  419. addze 11,11
  420. std 9,96(3)
  421. ld 5,48(4)
  422. mulld 7,5,6
  423. mulhdu 8,5,6
  424. addc 10,7,10
  425. adde 11,8,11
  426. addze 9,0
  427. addc 10,7,10
  428. adde 11,8,11
  429. addze 9,9
  430. std 10,104(3)
  431. mulld 7,6,6
  432. mulhdu 8,6,6
  433. addc 11,7,11
  434. adde 9,8,9
  435. std 11,112(3)
  436. std 9, 120(3)
  437. blr
  438. .long 0
  439. .byte 0,12,0x14,0,0,0,2,0
  440. .long 0
  441. .size bn_sqr_comba8,.-bn_sqr_comba8
  442. .align 4
  443. bn_mul_comba4:
  444. .localentry bn_mul_comba4,0
  445. xor 0,0,0
  446. ld 6,0(4)
  447. ld 7,0(5)
  448. mulld 10,6,7
  449. mulhdu 11,6,7
  450. std 10,0(3)
  451. ld 7,8(5)
  452. mulld 8,6,7
  453. mulhdu 9,6,7
  454. addc 11,8,11
  455. adde 12,9,0
  456. addze 10,0
  457. ld 6, 8(4)
  458. ld 7, 0(5)
  459. mulld 8,6,7
  460. mulhdu 9,6,7
  461. addc 11,8,11
  462. adde 12,9,12
  463. addze 10,10
  464. std 11,8(3)
  465. ld 6,16(4)
  466. mulld 8,6,7
  467. mulhdu 9,6,7
  468. addc 12,8,12
  469. adde 10,9,10
  470. addze 11,0
  471. ld 6,8(4)
  472. ld 7,8(5)
  473. mulld 8,6,7
  474. mulhdu 9,6,7
  475. addc 12,8,12
  476. adde 10,9,10
  477. addze 11,11
  478. ld 6,0(4)
  479. ld 7,16(5)
  480. mulld 8,6,7
  481. mulhdu 9,6,7
  482. addc 12,8,12
  483. adde 10,9,10
  484. addze 11,11
  485. std 12,16(3)
  486. ld 7,24(5)
  487. mulld 8,6,7
  488. mulhdu 9,6,7
  489. addc 10,8,10
  490. adde 11,9,11
  491. addze 12,0
  492. ld 6,8(4)
  493. ld 7,16(5)
  494. mulld 8,6,7
  495. mulhdu 9,6,7
  496. addc 10,8,10
  497. adde 11,9,11
  498. addze 12,12
  499. ld 6,16(4)
  500. ld 7,8(5)
  501. mulld 8,6,7
  502. mulhdu 9,6,7
  503. addc 10,8,10
  504. adde 11,9,11
  505. addze 12,12
  506. ld 6,24(4)
  507. ld 7,0(5)
  508. mulld 8,6,7
  509. mulhdu 9,6,7
  510. addc 10,8,10
  511. adde 11,9,11
  512. addze 12,12
  513. std 10,24(3)
  514. ld 7,8(5)
  515. mulld 8,6,7
  516. mulhdu 9,6,7
  517. addc 11,8,11
  518. adde 12,9,12
  519. addze 10,0
  520. ld 6,16(4)
  521. ld 7,16(5)
  522. mulld 8,6,7
  523. mulhdu 9,6,7
  524. addc 11,8,11
  525. adde 12,9,12
  526. addze 10,10
  527. ld 6,8(4)
  528. ld 7,24(5)
  529. mulld 8,6,7
  530. mulhdu 9,6,7
  531. addc 11,8,11
  532. adde 12,9,12
  533. addze 10,10
  534. std 11,32(3)
  535. ld 6,16(4)
  536. mulld 8,6,7
  537. mulhdu 9,6,7
  538. addc 12,8,12
  539. adde 10,9,10
  540. addze 11,0
  541. ld 6,24(4)
  542. ld 7,16(5)
  543. mulld 8,6,7
  544. mulhdu 9,6,7
  545. addc 12,8,12
  546. adde 10,9,10
  547. addze 11,11
  548. std 12,40(3)
  549. ld 7,24(5)
  550. mulld 8,6,7
  551. mulhdu 9,6,7
  552. addc 10,8,10
  553. adde 11,9,11
  554. std 10,48(3)
  555. std 11,56(3)
  556. blr
  557. .long 0
  558. .byte 0,12,0x14,0,0,0,3,0
  559. .long 0
  560. .size bn_mul_comba4,.-bn_mul_comba4
  561. .align 4
  562. bn_mul_comba8:
  563. .localentry bn_mul_comba8,0
  564. xor 0,0,0
  565. ld 6,0(4)
  566. ld 7,0(5)
  567. mulld 10,6,7
  568. mulhdu 11,6,7
  569. std 10,0(3)
  570. ld 7,8(5)
  571. mulld 8,6,7
  572. mulhdu 9,6,7
  573. addc 11,11,8
  574. addze 12,9
  575. addze 10,0
  576. ld 6,8(4)
  577. ld 7,0(5)
  578. mulld 8,6,7
  579. mulhdu 9,6,7
  580. addc 11,11,8
  581. adde 12,12,9
  582. addze 10,10
  583. std 11,8(3)
  584. ld 6,16(4)
  585. mulld 8,6,7
  586. mulhdu 9,6,7
  587. addc 12,12,8
  588. adde 10,10,9
  589. addze 11,0
  590. ld 6,8(4)
  591. ld 7,8(5)
  592. mulld 8,6,7
  593. mulhdu 9,6,7
  594. addc 12,12,8
  595. adde 10,10,9
  596. addze 11,11
  597. ld 6,0(4)
  598. ld 7,16(5)
  599. mulld 8,6,7
  600. mulhdu 9,6,7
  601. addc 12,12,8
  602. adde 10,10,9
  603. addze 11,11
  604. std 12,16(3)
  605. ld 7,24(5)
  606. mulld 8,6,7
  607. mulhdu 9,6,7
  608. addc 10,10,8
  609. adde 11,11,9
  610. addze 12,0
  611. ld 6,8(4)
  612. ld 7,16(5)
  613. mulld 8,6,7
  614. mulhdu 9,6,7
  615. addc 10,10,8
  616. adde 11,11,9
  617. addze 12,12
  618. ld 6,16(4)
  619. ld 7,8(5)
  620. mulld 8,6,7
  621. mulhdu 9,6,7
  622. addc 10,10,8
  623. adde 11,11,9
  624. addze 12,12
  625. ld 6,24(4)
  626. ld 7,0(5)
  627. mulld 8,6,7
  628. mulhdu 9,6,7
  629. addc 10,10,8
  630. adde 11,11,9
  631. addze 12,12
  632. std 10,24(3)
  633. ld 6,32(4)
  634. mulld 8,6,7
  635. mulhdu 9,6,7
  636. addc 11,11,8
  637. adde 12,12,9
  638. addze 10,0
  639. ld 6,24(4)
  640. ld 7,8(5)
  641. mulld 8,6,7
  642. mulhdu 9,6,7
  643. addc 11,11,8
  644. adde 12,12,9
  645. addze 10,10
  646. ld 6,16(4)
  647. ld 7,16(5)
  648. mulld 8,6,7
  649. mulhdu 9,6,7
  650. addc 11,11,8
  651. adde 12,12,9
  652. addze 10,10
  653. ld 6,8(4)
  654. ld 7,24(5)
  655. mulld 8,6,7
  656. mulhdu 9,6,7
  657. addc 11,11,8
  658. adde 12,12,9
  659. addze 10,10
  660. ld 6,0(4)
  661. ld 7,32(5)
  662. mulld 8,6,7
  663. mulhdu 9,6,7
  664. addc 11,11,8
  665. adde 12,12,9
  666. addze 10,10
  667. std 11,32(3)
  668. ld 7,40(5)
  669. mulld 8,6,7
  670. mulhdu 9,6,7
  671. addc 12,12,8
  672. adde 10,10,9
  673. addze 11,0
  674. ld 6,8(4)
  675. ld 7,32(5)
  676. mulld 8,6,7
  677. mulhdu 9,6,7
  678. addc 12,12,8
  679. adde 10,10,9
  680. addze 11,11
  681. ld 6,16(4)
  682. ld 7,24(5)
  683. mulld 8,6,7
  684. mulhdu 9,6,7
  685. addc 12,12,8
  686. adde 10,10,9
  687. addze 11,11
  688. ld 6,24(4)
  689. ld 7,16(5)
  690. mulld 8,6,7
  691. mulhdu 9,6,7
  692. addc 12,12,8
  693. adde 10,10,9
  694. addze 11,11
  695. ld 6,32(4)
  696. ld 7,8(5)
  697. mulld 8,6,7
  698. mulhdu 9,6,7
  699. addc 12,12,8
  700. adde 10,10,9
  701. addze 11,11
  702. ld 6,40(4)
  703. ld 7,0(5)
  704. mulld 8,6,7
  705. mulhdu 9,6,7
  706. addc 12,12,8
  707. adde 10,10,9
  708. addze 11,11
  709. std 12,40(3)
  710. ld 6,48(4)
  711. mulld 8,6,7
  712. mulhdu 9,6,7
  713. addc 10,10,8
  714. adde 11,11,9
  715. addze 12,0
  716. ld 6,40(4)
  717. ld 7,8(5)
  718. mulld 8,6,7
  719. mulhdu 9,6,7
  720. addc 10,10,8
  721. adde 11,11,9
  722. addze 12,12
  723. ld 6,32(4)
  724. ld 7,16(5)
  725. mulld 8,6,7
  726. mulhdu 9,6,7
  727. addc 10,10,8
  728. adde 11,11,9
  729. addze 12,12
  730. ld 6,24(4)
  731. ld 7,24(5)
  732. mulld 8,6,7
  733. mulhdu 9,6,7
  734. addc 10,10,8
  735. adde 11,11,9
  736. addze 12,12
  737. ld 6,16(4)
  738. ld 7,32(5)
  739. mulld 8,6,7
  740. mulhdu 9,6,7
  741. addc 10,10,8
  742. adde 11,11,9
  743. addze 12,12
  744. ld 6,8(4)
  745. ld 7,40(5)
  746. mulld 8,6,7
  747. mulhdu 9,6,7
  748. addc 10,10,8
  749. adde 11,11,9
  750. addze 12,12
  751. ld 6,0(4)
  752. ld 7,48(5)
  753. mulld 8,6,7
  754. mulhdu 9,6,7
  755. addc 10,10,8
  756. adde 11,11,9
  757. addze 12,12
  758. std 10,48(3)
  759. ld 7,56(5)
  760. mulld 8,6,7
  761. mulhdu 9,6,7
  762. addc 11,11,8
  763. adde 12,12,9
  764. addze 10,0
  765. ld 6,8(4)
  766. ld 7,48(5)
  767. mulld 8,6,7
  768. mulhdu 9,6,7
  769. addc 11,11,8
  770. adde 12,12,9
  771. addze 10,10
  772. ld 6,16(4)
  773. ld 7,40(5)
  774. mulld 8,6,7
  775. mulhdu 9,6,7
  776. addc 11,11,8
  777. adde 12,12,9
  778. addze 10,10
  779. ld 6,24(4)
  780. ld 7,32(5)
  781. mulld 8,6,7
  782. mulhdu 9,6,7
  783. addc 11,11,8
  784. adde 12,12,9
  785. addze 10,10
  786. ld 6,32(4)
  787. ld 7,24(5)
  788. mulld 8,6,7
  789. mulhdu 9,6,7
  790. addc 11,11,8
  791. adde 12,12,9
  792. addze 10,10
  793. ld 6,40(4)
  794. ld 7,16(5)
  795. mulld 8,6,7
  796. mulhdu 9,6,7
  797. addc 11,11,8
  798. adde 12,12,9
  799. addze 10,10
  800. ld 6,48(4)
  801. ld 7,8(5)
  802. mulld 8,6,7
  803. mulhdu 9,6,7
  804. addc 11,11,8
  805. adde 12,12,9
  806. addze 10,10
  807. ld 6,56(4)
  808. ld 7,0(5)
  809. mulld 8,6,7
  810. mulhdu 9,6,7
  811. addc 11,11,8
  812. adde 12,12,9
  813. addze 10,10
  814. std 11,56(3)
  815. ld 7,8(5)
  816. mulld 8,6,7
  817. mulhdu 9,6,7
  818. addc 12,12,8
  819. adde 10,10,9
  820. addze 11,0
  821. ld 6,48(4)
  822. ld 7,16(5)
  823. mulld 8,6,7
  824. mulhdu 9,6,7
  825. addc 12,12,8
  826. adde 10,10,9
  827. addze 11,11
  828. ld 6,40(4)
  829. ld 7,24(5)
  830. mulld 8,6,7
  831. mulhdu 9,6,7
  832. addc 12,12,8
  833. adde 10,10,9
  834. addze 11,11
  835. ld 6,32(4)
  836. ld 7,32(5)
  837. mulld 8,6,7
  838. mulhdu 9,6,7
  839. addc 12,12,8
  840. adde 10,10,9
  841. addze 11,11
  842. ld 6,24(4)
  843. ld 7,40(5)
  844. mulld 8,6,7
  845. mulhdu 9,6,7
  846. addc 12,12,8
  847. adde 10,10,9
  848. addze 11,11
  849. ld 6,16(4)
  850. ld 7,48(5)
  851. mulld 8,6,7
  852. mulhdu 9,6,7
  853. addc 12,12,8
  854. adde 10,10,9
  855. addze 11,11
  856. ld 6,8(4)
  857. ld 7,56(5)
  858. mulld 8,6,7
  859. mulhdu 9,6,7
  860. addc 12,12,8
  861. adde 10,10,9
  862. addze 11,11
  863. std 12,64(3)
  864. ld 6,16(4)
  865. mulld 8,6,7
  866. mulhdu 9,6,7
  867. addc 10,10,8
  868. adde 11,11,9
  869. addze 12,0
  870. ld 6,24(4)
  871. ld 7,48(5)
  872. mulld 8,6,7
  873. mulhdu 9,6,7
  874. addc 10,10,8
  875. adde 11,11,9
  876. addze 12,12
  877. ld 6,32(4)
  878. ld 7,40(5)
  879. mulld 8,6,7
  880. mulhdu 9,6,7
  881. addc 10,10,8
  882. adde 11,11,9
  883. addze 12,12
  884. ld 6,40(4)
  885. ld 7,32(5)
  886. mulld 8,6,7
  887. mulhdu 9,6,7
  888. addc 10,10,8
  889. adde 11,11,9
  890. addze 12,12
  891. ld 6,48(4)
  892. ld 7,24(5)
  893. mulld 8,6,7
  894. mulhdu 9,6,7
  895. addc 10,10,8
  896. adde 11,11,9
  897. addze 12,12
  898. ld 6,56(4)
  899. ld 7,16(5)
  900. mulld 8,6,7
  901. mulhdu 9,6,7
  902. addc 10,10,8
  903. adde 11,11,9
  904. addze 12,12
  905. std 10,72(3)
  906. ld 7,24(5)
  907. mulld 8,6,7
  908. mulhdu 9,6,7
  909. addc 11,11,8
  910. adde 12,12,9
  911. addze 10,0
  912. ld 6,48(4)
  913. ld 7,32(5)
  914. mulld 8,6,7
  915. mulhdu 9,6,7
  916. addc 11,11,8
  917. adde 12,12,9
  918. addze 10,10
  919. ld 6,40(4)
  920. ld 7,40(5)
  921. mulld 8,6,7
  922. mulhdu 9,6,7
  923. addc 11,11,8
  924. adde 12,12,9
  925. addze 10,10
  926. ld 6,32(4)
  927. ld 7,48(5)
  928. mulld 8,6,7
  929. mulhdu 9,6,7
  930. addc 11,11,8
  931. adde 12,12,9
  932. addze 10,10
  933. ld 6,24(4)
  934. ld 7,56(5)
  935. mulld 8,6,7
  936. mulhdu 9,6,7
  937. addc 11,11,8
  938. adde 12,12,9
  939. addze 10,10
  940. std 11,80(3)
  941. ld 6,32(4)
  942. mulld 8,6,7
  943. mulhdu 9,6,7
  944. addc 12,12,8
  945. adde 10,10,9
  946. addze 11,0
  947. ld 6,40(4)
  948. ld 7,48(5)
  949. mulld 8,6,7
  950. mulhdu 9,6,7
  951. addc 12,12,8
  952. adde 10,10,9
  953. addze 11,11
  954. ld 6,48(4)
  955. ld 7,40(5)
  956. mulld 8,6,7
  957. mulhdu 9,6,7
  958. addc 12,12,8
  959. adde 10,10,9
  960. addze 11,11
  961. ld 6,56(4)
  962. ld 7,32(5)
  963. mulld 8,6,7
  964. mulhdu 9,6,7
  965. addc 12,12,8
  966. adde 10,10,9
  967. addze 11,11
  968. std 12,88(3)
  969. ld 7,40(5)
  970. mulld 8,6,7
  971. mulhdu 9,6,7
  972. addc 10,10,8
  973. adde 11,11,9
  974. addze 12,0
  975. ld 6,48(4)
  976. ld 7,48(5)
  977. mulld 8,6,7
  978. mulhdu 9,6,7
  979. addc 10,10,8
  980. adde 11,11,9
  981. addze 12,12
  982. ld 6,40(4)
  983. ld 7,56(5)
  984. mulld 8,6,7
  985. mulhdu 9,6,7
  986. addc 10,10,8
  987. adde 11,11,9
  988. addze 12,12
  989. std 10,96(3)
  990. ld 6,48(4)
  991. mulld 8,6,7
  992. mulhdu 9,6,7
  993. addc 11,11,8
  994. adde 12,12,9
  995. addze 10,0
  996. ld 6,56(4)
  997. ld 7,48(5)
  998. mulld 8,6,7
  999. mulhdu 9,6,7
  1000. addc 11,11,8
  1001. adde 12,12,9
  1002. addze 10,10
  1003. std 11,104(3)
  1004. ld 7,56(5)
  1005. mulld 8,6,7
  1006. mulhdu 9,6,7
  1007. addc 12,12,8
  1008. adde 10,10,9
  1009. std 12,112(3)
  1010. std 10,120(3)
  1011. blr
  1012. .long 0
  1013. .byte 0,12,0x14,0,0,0,3,0
  1014. .long 0
  1015. .size bn_mul_comba8,.-bn_mul_comba8
  1016. .align 4
  1017. bn_sub_words:
  1018. .localentry bn_sub_words,0
  1019. xor 0,0,0
  1020. subfc. 7,0,6
  1021. beq .Lppcasm_sub_adios
  1022. addi 4,4,-8
  1023. addi 3,3,-8
  1024. addi 5,5,-8
  1025. mtctr 6
  1026. .Lppcasm_sub_mainloop:
  1027. ldu 7,8(4)
  1028. ldu 8,8(5)
  1029. subfe 6,8,7
  1030. stdu 6,8(3)
  1031. bdnz .Lppcasm_sub_mainloop
  1032. .Lppcasm_sub_adios:
  1033. subfze 3,0
  1034. andi. 3,3,1
  1035. blr
  1036. .long 0
  1037. .byte 0,12,0x14,0,0,0,4,0
  1038. .long 0
  1039. .size bn_sub_words,.-bn_sub_words
  1040. .align 4
  1041. bn_add_words:
  1042. .localentry bn_add_words,0
  1043. xor 0,0,0
  1044. addic. 6,6,0
  1045. beq .Lppcasm_add_adios
  1046. addi 4,4,-8
  1047. addi 3,3,-8
  1048. addi 5,5,-8
  1049. mtctr 6
  1050. .Lppcasm_add_mainloop:
  1051. ldu 7,8(4)
  1052. ldu 8,8(5)
  1053. adde 8,7,8
  1054. stdu 8,8(3)
  1055. bdnz .Lppcasm_add_mainloop
  1056. .Lppcasm_add_adios:
  1057. addze 3,0
  1058. blr
  1059. .long 0
  1060. .byte 0,12,0x14,0,0,0,4,0
  1061. .long 0
  1062. .size bn_add_words,.-bn_add_words
  1063. .align 4
  1064. bn_div_words:
  1065. .localentry bn_div_words,0
  1066. cmpldi 0,5,0
  1067. bne .Lppcasm_div1
  1068. li 3,-1
  1069. blr
  1070. .Lppcasm_div1:
  1071. xor 0,0,0
  1072. li 8,64
  1073. cntlzd. 7,5
  1074. beq .Lppcasm_div2
  1075. subf 8,7,8
  1076. srd. 9,3,8
  1077. td 16,9,0
  1078. .Lppcasm_div2:
  1079. cmpld 0,3,5
  1080. blt .Lppcasm_div3
  1081. subf 3,5,3
  1082. .Lppcasm_div3:
  1083. cmpi 0,0,7,0
  1084. beq .Lppcasm_div4
  1085. sld 3,3,7
  1086. srd 8,4,8
  1087. sld 5,5,7
  1088. or 3,3,8
  1089. sld 4,4,7
  1090. .Lppcasm_div4:
  1091. srdi 9,5,32
  1092. li 6,2
  1093. mtctr 6
  1094. .Lppcasm_divouterloop:
  1095. srdi 8,3,32
  1096. srdi 11,4,32
  1097. cmpld 0,8,9
  1098. bne .Lppcasm_div5
  1099. li 8,-1
  1100. clrldi 8,8,32
  1101. b .Lppcasm_div6
  1102. .Lppcasm_div5:
  1103. divdu 8,3,9
  1104. .Lppcasm_div6:
  1105. mulld 12,9,8
  1106. clrldi 10,5,32
  1107. mulld 6,8,10
  1108. .Lppcasm_divinnerloop:
  1109. subf 10,12,3
  1110. srdi 7,10,32
  1111. addic. 7,7,0
  1112. sldi 7,10,32
  1113. or 7,7,11
  1114. cmpld 1,6,7
  1115. bne .Lppcasm_divinnerexit
  1116. ble 1,.Lppcasm_divinnerexit
  1117. addi 8,8,-1
  1118. subf 12,9,12
  1119. clrldi 10,5,32
  1120. subf 6,10,6
  1121. b .Lppcasm_divinnerloop
  1122. .Lppcasm_divinnerexit:
  1123. srdi 10,6,32
  1124. sldi 11,6,32
  1125. cmpld 1,4,11
  1126. add 12,12,10
  1127. bge 1,.Lppcasm_div7
  1128. addi 12,12,1
  1129. .Lppcasm_div7:
  1130. subf 11,11,4
  1131. cmpld 1,3,12
  1132. bge 1,.Lppcasm_div8
  1133. addi 8,8,-1
  1134. add 3,5,3
  1135. .Lppcasm_div8:
  1136. subf 12,12,3
  1137. sldi 4,11,32
  1138. insrdi 11,12,32,32
  1139. rotldi 3,11,32
  1140. bdz .Lppcasm_div9
  1141. sldi 0,8,32
  1142. b .Lppcasm_divouterloop
  1143. .Lppcasm_div9:
  1144. or 3,8,0
  1145. blr
  1146. .long 0
  1147. .byte 0,12,0x14,0,0,0,3,0
  1148. .long 0
  1149. .size bn_div_words,.-bn_div_words
  1150. .align 4
  1151. bn_sqr_words:
  1152. .localentry bn_sqr_words,0
  1153. addic. 5,5,0
  1154. beq .Lppcasm_sqr_adios
  1155. addi 4,4,-8
  1156. addi 3,3,-8
  1157. mtctr 5
  1158. .Lppcasm_sqr_mainloop:
  1159. ldu 6,8(4)
  1160. mulld 7,6,6
  1161. mulhdu 8,6,6
  1162. stdu 7,8(3)
  1163. stdu 8,8(3)
  1164. bdnz .Lppcasm_sqr_mainloop
  1165. .Lppcasm_sqr_adios:
  1166. blr
  1167. .long 0
  1168. .byte 0,12,0x14,0,0,0,3,0
  1169. .long 0
  1170. .size bn_sqr_words,.-bn_sqr_words
  1171. .align 4
  1172. bn_mul_words:
  1173. .localentry bn_mul_words,0
  1174. xor 0,0,0
  1175. xor 12,12,12
  1176. rlwinm. 7,5,30,2,31
  1177. beq .Lppcasm_mw_REM
  1178. mtctr 7
  1179. .Lppcasm_mw_LOOP:
  1180. ld 8,0(4)
  1181. mulld 9,6,8
  1182. mulhdu 10,6,8
  1183. addc 9,9,12
  1184. std 9,0(3)
  1185. ld 8,8(4)
  1186. mulld 11,6,8
  1187. mulhdu 12,6,8
  1188. adde 11,11,10
  1189. std 11,8(3)
  1190. ld 8,16(4)
  1191. mulld 9,6,8
  1192. mulhdu 10,6,8
  1193. adde 9,9,12
  1194. std 9,16(3)
  1195. ld 8,24(4)
  1196. mulld 11,6,8
  1197. mulhdu 12,6,8
  1198. adde 11,11,10
  1199. addze 12,12
  1200. std 11,24(3)
  1201. addi 3,3,32
  1202. addi 4,4,32
  1203. bdnz .Lppcasm_mw_LOOP
  1204. .Lppcasm_mw_REM:
  1205. andi. 5,5,0x3
  1206. beq .Lppcasm_mw_OVER
  1207. ld 8,0(4)
  1208. mulld 9,6,8
  1209. mulhdu 10,6,8
  1210. addc 9,9,12
  1211. addze 10,10
  1212. std 9,0(3)
  1213. addi 12,10,0
  1214. addi 5,5,-1
  1215. cmpli 0,0,5,0
  1216. beq .Lppcasm_mw_OVER
  1217. ld 8,8(4)
  1218. mulld 9,6,8
  1219. mulhdu 10,6,8
  1220. addc 9,9,12
  1221. addze 10,10
  1222. std 9,8(3)
  1223. addi 12,10,0
  1224. addi 5,5,-1
  1225. cmpli 0,0,5,0
  1226. beq .Lppcasm_mw_OVER
  1227. ld 8,16(4)
  1228. mulld 9,6,8
  1229. mulhdu 10,6,8
  1230. addc 9,9,12
  1231. addze 10,10
  1232. std 9,16(3)
  1233. addi 12,10,0
  1234. .Lppcasm_mw_OVER:
  1235. addi 3,12,0
  1236. blr
  1237. .long 0
  1238. .byte 0,12,0x14,0,0,0,4,0
  1239. .long 0
  1240. .size bn_mul_words,.-bn_mul_words
  1241. .align 4
  1242. bn_mul_add_words:
  1243. .localentry bn_mul_add_words,0
  1244. xor 0,0,0
  1245. xor 12,12,12
  1246. rlwinm. 7,5,30,2,31
  1247. beq .Lppcasm_maw_leftover
  1248. mtctr 7
  1249. .Lppcasm_maw_mainloop:
  1250. ld 8,0(4)
  1251. ld 11,0(3)
  1252. mulld 9,6,8
  1253. mulhdu 10,6,8
  1254. addc 9,9,12
  1255. addze 10,10
  1256. addc 9,9,11
  1257. std 9,0(3)
  1258. ld 8,8(4)
  1259. ld 9,8(3)
  1260. mulld 11,6,8
  1261. mulhdu 12,6,8
  1262. adde 11,11,10
  1263. addze 12,12
  1264. addc 11,11,9
  1265. std 11,8(3)
  1266. ld 8,16(4)
  1267. mulld 9,6,8
  1268. ld 11,16(3)
  1269. mulhdu 10,6,8
  1270. adde 9,9,12
  1271. addze 10,10
  1272. addc 9,9,11
  1273. std 9,16(3)
  1274. ld 8,24(4)
  1275. mulld 11,6,8
  1276. ld 9,24(3)
  1277. mulhdu 12,6,8
  1278. adde 11,11,10
  1279. addze 12,12
  1280. addc 11,11,9
  1281. addze 12,12
  1282. std 11,24(3)
  1283. addi 3,3,32
  1284. addi 4,4,32
  1285. bdnz .Lppcasm_maw_mainloop
  1286. .Lppcasm_maw_leftover:
  1287. andi. 5,5,0x3
  1288. beq .Lppcasm_maw_adios
  1289. addi 3,3,-8
  1290. addi 4,4,-8
  1291. mtctr 5
  1292. ldu 8,8(4)
  1293. mulld 9,6,8
  1294. mulhdu 10,6,8
  1295. ldu 11,8(3)
  1296. addc 9,9,11
  1297. addze 10,10
  1298. addc 9,9,12
  1299. addze 12,10
  1300. std 9,0(3)
  1301. bdz .Lppcasm_maw_adios
  1302. ldu 8,8(4)
  1303. mulld 9,6,8
  1304. mulhdu 10,6,8
  1305. ldu 11,8(3)
  1306. addc 9,9,11
  1307. addze 10,10
  1308. addc 9,9,12
  1309. addze 12,10
  1310. std 9,0(3)
  1311. bdz .Lppcasm_maw_adios
  1312. ldu 8,8(4)
  1313. mulld 9,6,8
  1314. mulhdu 10,6,8
  1315. ldu 11,8(3)
  1316. addc 9,9,11
  1317. addze 10,10
  1318. addc 9,9,12
  1319. addze 12,10
  1320. std 9,0(3)
  1321. .Lppcasm_maw_adios:
  1322. addi 3,12,0
  1323. blr
  1324. .long 0
  1325. .byte 0,12,0x14,0,0,0,4,0
  1326. .long 0
  1327. .size bn_mul_add_words,.-bn_mul_add_words
  1328. .align 4