poly1305-ppcfp.s 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. .machine "any"
  2. .abiversion 2
  3. .text
  4. .globl poly1305_init_fpu
  5. .type poly1305_init_fpu,@function
  6. .align 6
  7. poly1305_init_fpu:
  8. .localentry poly1305_init_fpu,0
  9. stdu 1,-48(1)
  10. mflr 6
  11. std 6,64(1)
  12. bl .LPICmeup
  13. xor 0,0,0
  14. mtlr 6
  15. lfd 8,8*0(5)
  16. lfd 9,8*1(5)
  17. lfd 10,8*2(5)
  18. lfd 11,8*3(5)
  19. lfd 12,8*4(5)
  20. lfd 13,8*5(5)
  21. stfd 8,8*0(3)
  22. stfd 9,8*1(3)
  23. stfd 10,8*2(3)
  24. stfd 11,8*3(3)
  25. cmpld 4,0
  26. beq- .Lno_key
  27. lfd 6,8*13(5)
  28. mffs 7
  29. stfd 8,8*4(3)
  30. stfd 9,8*5(3)
  31. stfd 10,8*6(3)
  32. stfd 11,8*7(3)
  33. li 8,4
  34. li 9,8
  35. li 10,12
  36. lwzx 7,0,4
  37. lwzx 8,8,4
  38. lwzx 9,9,4
  39. lwzx 10,10,4
  40. lis 11,0xf000
  41. ori 12,11,3
  42. andc 7,7,11
  43. andc 8,8,12
  44. andc 9,9,12
  45. andc 10,10,12
  46. stw 7,32(3)
  47. stw 8,40(3)
  48. stw 9,48(3)
  49. stw 10,56(3)
  50. mtfsf 255,6
  51. stfd 8,8*18(3)
  52. stfd 9,8*19(3)
  53. stfd 10,8*20(3)
  54. stfd 11,8*21(3)
  55. stfd 12,8*22(3)
  56. stfd 13,8*23(3)
  57. lfd 0,8*4(3)
  58. lfd 2,8*5(3)
  59. lfd 4,8*6(3)
  60. lfd 6,8*7(3)
  61. fsub 0,0,8
  62. fsub 2,2,9
  63. fsub 4,4,10
  64. fsub 6,6,11
  65. lfd 8,8*6(5)
  66. lfd 9,8*7(5)
  67. lfd 10,8*8(5)
  68. lfd 11,8*9(5)
  69. fmul 3,2,13
  70. fmul 5,4,13
  71. stfd 7,8*15(3)
  72. fmul 7,6,13
  73. fadd 1,0,8
  74. stfd 3,8*12(3)
  75. fadd 3,2,9
  76. stfd 5,8*13(3)
  77. fadd 5,4,10
  78. stfd 7,8*14(3)
  79. fadd 7,6,11
  80. fsub 1,1,8
  81. fsub 3,3,9
  82. fsub 5,5,10
  83. fsub 7,7,11
  84. lfd 8,8*10(5)
  85. lfd 9,8*11(5)
  86. lfd 10,8*12(5)
  87. fsub 0,0,1
  88. fsub 2,2,3
  89. fsub 4,4,5
  90. fsub 6,6,7
  91. stfd 1,8*5(3)
  92. stfd 3,8*7(3)
  93. stfd 5,8*9(3)
  94. stfd 7,8*11(3)
  95. stfd 0,8*4(3)
  96. stfd 2,8*6(3)
  97. stfd 4,8*8(3)
  98. stfd 6,8*10(3)
  99. lfd 2,8*12(3)
  100. lfd 4,8*13(3)
  101. lfd 6,8*14(3)
  102. lfd 0,8*15(3)
  103. fadd 3,2,8
  104. fadd 5,4,9
  105. fadd 7,6,10
  106. fsub 3,3,8
  107. fsub 5,5,9
  108. fsub 7,7,10
  109. fsub 2,2,3
  110. fsub 4,4,5
  111. fsub 6,6,7
  112. stfd 3,8*13(3)
  113. stfd 5,8*15(3)
  114. stfd 7,8*17(3)
  115. stfd 2,8*12(3)
  116. stfd 4,8*14(3)
  117. stfd 6,8*16(3)
  118. mtfsf 255,0
  119. .Lno_key:
  120. xor 3,3,3
  121. addi 1,1,48
  122. blr
  123. .long 0
  124. .byte 0,12,4,1,0x80,0,2,0
  125. .size poly1305_init_fpu,.-poly1305_init_fpu
  126. .globl poly1305_blocks_fpu
  127. .type poly1305_blocks_fpu,@function
  128. .align 4
  129. poly1305_blocks_fpu:
  130. .localentry poly1305_blocks_fpu,0
  131. srwi. 5,5,4
  132. beq- .Labort
  133. stdu 1,-240(1)
  134. mflr 0
  135. stfd 14,96(1)
  136. stfd 15,104(1)
  137. stfd 16,112(1)
  138. stfd 17,120(1)
  139. stfd 18,128(1)
  140. stfd 19,136(1)
  141. stfd 20,144(1)
  142. stfd 21,152(1)
  143. stfd 22,160(1)
  144. stfd 23,168(1)
  145. stfd 24,176(1)
  146. stfd 25,184(1)
  147. stfd 26,192(1)
  148. stfd 27,200(1)
  149. stfd 28,208(1)
  150. stfd 29,216(1)
  151. stfd 30,224(1)
  152. stfd 31,232(1)
  153. std 0,256(1)
  154. xor 0,0,0
  155. li 10,1
  156. mtctr 5
  157. neg 5,5
  158. stw 0,84(1)
  159. stw 10,80(1)
  160. lfd 8,8*18(3)
  161. lfd 9,8*19(3)
  162. lfd 10,8*20(3)
  163. lfd 11,8*21(3)
  164. lfd 12,8*22(3)
  165. lfd 13,8*23(3)
  166. lfd 0,8*0(3)
  167. lfd 2,8*1(3)
  168. lfd 4,8*2(3)
  169. lfd 6,8*3(3)
  170. stfd 8,48(1)
  171. oris 10,6,18736
  172. stfd 9,56(1)
  173. stfd 10,64(1)
  174. stw 10,76(1)
  175. li 11,4
  176. li 12,8
  177. li 6,12
  178. lwzx 7,0,4
  179. lwzx 8,11,4
  180. lwzx 9,12,4
  181. lwzx 10,6,4
  182. addi 4,4,16
  183. stw 7,48(1)
  184. stw 8,56(1)
  185. stw 9,64(1)
  186. stw 10,72(1)
  187. mffs 28
  188. lfd 29,80(1)
  189. lfd 14,8*4(3)
  190. lfd 15,8*5(3)
  191. lfd 16,8*6(3)
  192. lfd 17,8*7(3)
  193. lfd 18,8*8(3)
  194. lfd 19,8*9(3)
  195. lfd 24,8*10(3)
  196. lfd 25,8*11(3)
  197. lfd 26,8*12(3)
  198. lfd 27,8*13(3)
  199. lfd 20,8*14(3)
  200. lfd 21,8*15(3)
  201. lfd 22,8*16(3)
  202. lfd 23,8*17(3)
  203. stfd 28,80(1)
  204. mtfsf 255,29
  205. addic 5,5,1
  206. addze 0,0
  207. slwi. 0,0,4
  208. sub 4,4,0
  209. lfd 28,48(1)
  210. lfd 29,56(1)
  211. lfd 30,64(1)
  212. lfd 31,72(1)
  213. fsub 0,0,8
  214. lwzx 7,0,4
  215. fsub 2,2,9
  216. lwzx 8,11,4
  217. fsub 4,4,10
  218. lwzx 9,12,4
  219. fsub 6,6,11
  220. lwzx 10,6,4
  221. fsub 28,28,8
  222. addi 4,4,16
  223. fsub 29,29,9
  224. fsub 30,30,10
  225. fsub 31,31,11
  226. fadd 28,28,0
  227. stw 7,48(1)
  228. fadd 29,29,2
  229. stw 8,56(1)
  230. fadd 30,30,4
  231. stw 9,64(1)
  232. fadd 31,31,6
  233. stw 10,72(1)
  234. b .Lentry
  235. .align 4
  236. .Loop:
  237. fsub 30,30,8
  238. addic 5,5,1
  239. fsub 31,31,9
  240. addze 0,0
  241. fsub 26,26,10
  242. slwi. 0,0,4
  243. fsub 27,27,11
  244. sub 4,4,0
  245. fadd 0,0,30
  246. fadd 1,1,31
  247. fadd 4,4,26
  248. fadd 5,5,27
  249. fadd 26,2,10
  250. lwzx 7,0,4
  251. fadd 27,3,10
  252. lwzx 8,11,4
  253. fadd 30,6,12
  254. lwzx 9,12,4
  255. fadd 31,7,12
  256. lwzx 10,6,4
  257. fadd 24,0,9
  258. addi 4,4,16
  259. fadd 25,1,9
  260. fadd 28,4,11
  261. fadd 29,5,11
  262. fsub 26,26,10
  263. stw 7,48(1)
  264. fsub 27,27,10
  265. stw 8,56(1)
  266. fsub 30,30,12
  267. stw 9,64(1)
  268. fsub 31,31,12
  269. stw 10,72(1)
  270. fsub 24,24,9
  271. fsub 25,25,9
  272. fsub 28,28,11
  273. fsub 29,29,11
  274. fsub 2,2,26
  275. fsub 3,3,27
  276. fsub 6,6,30
  277. fsub 7,7,31
  278. fsub 4,4,28
  279. fsub 5,5,29
  280. fsub 0,0,24
  281. fsub 1,1,25
  282. fadd 2,2,24
  283. fadd 3,3,25
  284. fadd 6,6,28
  285. fadd 7,7,29
  286. fadd 4,4,26
  287. fadd 5,5,27
  288. fmadd 0,30,13,0
  289. fmadd 1,31,13,1
  290. fadd 29,2,3
  291. lfd 26,8*12(3)
  292. fadd 31,6,7
  293. lfd 27,8*13(3)
  294. fadd 30,4,5
  295. lfd 24,8*10(3)
  296. fadd 28,0,1
  297. lfd 25,8*11(3)
  298. .Lentry:
  299. fmul 0,22,29
  300. fmul 1,23,29
  301. fmul 4,16,29
  302. fmul 5,17,29
  303. fmul 2,14,29
  304. fmul 3,15,29
  305. fmul 6,18,29
  306. fmul 7,19,29
  307. fmadd 0,26,31,0
  308. fmadd 1,27,31,1
  309. fmadd 4,22,31,4
  310. fmadd 5,23,31,5
  311. fmadd 2,20,31,2
  312. fmadd 3,21,31,3
  313. fmadd 6,14,31,6
  314. fmadd 7,15,31,7
  315. fmadd 0,20,30,0
  316. fmadd 1,21,30,1
  317. fmadd 4,14,30,4
  318. fmadd 5,15,30,5
  319. fmadd 2,22,30,2
  320. fmadd 3,23,30,3
  321. fmadd 6,16,30,6
  322. fmadd 7,17,30,7
  323. fmadd 0,14,28,0
  324. lfd 30,48(1)
  325. fmadd 1,15,28,1
  326. lfd 31,56(1)
  327. fmadd 4,18,28,4
  328. lfd 26,64(1)
  329. fmadd 5,19,28,5
  330. lfd 27,72(1)
  331. fmadd 2,16,28,2
  332. fmadd 3,17,28,3
  333. fmadd 6,24,28,6
  334. fmadd 7,25,28,7
  335. bdnz .Loop
  336. fadd 24,0,9
  337. fadd 25,1,9
  338. fadd 28,4,11
  339. fadd 29,5,11
  340. fadd 26,2,10
  341. fadd 27,3,10
  342. fadd 30,6,12
  343. fadd 31,7,12
  344. fsub 24,24,9
  345. fsub 25,25,9
  346. fsub 28,28,11
  347. fsub 29,29,11
  348. fsub 26,26,10
  349. fsub 27,27,10
  350. fsub 30,30,12
  351. fsub 31,31,12
  352. fsub 2,2,26
  353. fsub 3,3,27
  354. fsub 6,6,30
  355. fsub 7,7,31
  356. fsub 4,4,28
  357. fsub 5,5,29
  358. fsub 0,0,24
  359. fsub 1,1,25
  360. fadd 2,2,24
  361. fadd 3,3,25
  362. fadd 6,6,28
  363. fadd 7,7,29
  364. fadd 4,4,26
  365. fadd 5,5,27
  366. fmadd 0,30,13,0
  367. fmadd 1,31,13,1
  368. fadd 29,2,3
  369. fadd 31,6,7
  370. fadd 30,4,5
  371. fadd 28,0,1
  372. lfd 0,80(1)
  373. fadd 29,29,9
  374. fadd 31,31,11
  375. fadd 30,30,10
  376. fadd 28,28,8
  377. stfd 29,8*1(3)
  378. stfd 31,8*3(3)
  379. stfd 30,8*2(3)
  380. stfd 28,8*0(3)
  381. mtfsf 255,0
  382. lfd 14,96(1)
  383. lfd 15,104(1)
  384. lfd 16,112(1)
  385. lfd 17,120(1)
  386. lfd 18,128(1)
  387. lfd 19,136(1)
  388. lfd 20,144(1)
  389. lfd 21,152(1)
  390. lfd 22,160(1)
  391. lfd 23,168(1)
  392. lfd 24,176(1)
  393. lfd 25,184(1)
  394. lfd 26,192(1)
  395. lfd 27,200(1)
  396. lfd 28,208(1)
  397. lfd 29,216(1)
  398. lfd 30,224(1)
  399. lfd 31,232(1)
  400. addi 1,1,240
  401. .Labort:
  402. blr
  403. .long 0
  404. .byte 0,12,4,1,0x80,0,4,0
  405. .size poly1305_blocks_fpu,.-poly1305_blocks_fpu
  406. .globl poly1305_emit_fpu
  407. .type poly1305_emit_fpu,@function
  408. .align 4
  409. poly1305_emit_fpu:
  410. .localentry poly1305_emit_fpu,0
  411. stdu 1,-80(1)
  412. mflr 0
  413. std 28,48(1)
  414. std 29,56(1)
  415. std 30,64(1)
  416. std 31,72(1)
  417. std 0,96(1)
  418. lwz 28,4(3)
  419. lwz 7,0(3)
  420. lwz 29,12(3)
  421. lwz 8,8(3)
  422. lwz 30,20(3)
  423. lwz 9,16(3)
  424. lwz 31,28(3)
  425. lwz 10,24(3)
  426. lis 0,0xfff0
  427. andc 28,28,0
  428. andc 29,29,0
  429. andc 30,30,0
  430. andc 31,31,0
  431. li 0,3
  432. srwi 6,31,2
  433. and 11,31,0
  434. andc 31,31,0
  435. add 31,31,6
  436. add 7,7,31
  437. add 8,8,28
  438. add 9,9,29
  439. add 10,10,30
  440. srdi 28,7,32
  441. add 8,8,28
  442. srdi 29,8,32
  443. add 9,9,29
  444. srdi 30,9,32
  445. add 10,10,30
  446. srdi 31,10,32
  447. add 11,11,31
  448. insrdi 7,8,32,0
  449. insrdi 9,10,32,0
  450. addic 28,7,5
  451. addze 29,9
  452. addze 30,11
  453. srdi 0,30,2
  454. neg 0,0
  455. sradi 0,0,63
  456. ld 30,0(5)
  457. ld 31,8(5)
  458. andc 7,7,0
  459. and 28,28,0
  460. andc 9,9,0
  461. and 29,29,0
  462. or 7,7,28
  463. or 9,9,29
  464. addc 7,7,30
  465. adde 9,9,31
  466. srdi 8,7,32
  467. srdi 10,9,32
  468. stw 7,0(4)
  469. stw 8,4(4)
  470. stw 9,8(4)
  471. stw 10,12(4)
  472. ld 28,48(1)
  473. ld 29,56(1)
  474. ld 30,64(1)
  475. ld 31,72(1)
  476. addi 1,1,80
  477. blr
  478. .long 0
  479. .byte 0,12,4,1,0x80,4,3,0
  480. .size poly1305_emit_fpu,.-poly1305_emit_fpu
  481. .align 6
  482. .LPICmeup:
  483. mflr 0
  484. bcl 20,31,$+4
  485. mflr 5
  486. addi 5,5,56
  487. mtlr 0
  488. blr
  489. .long 0
  490. .byte 0,12,0x14,0,0,0,0,0
  491. .space 28
  492. .long 0x00000000,0x43300000
  493. .long 0x00000000,0x45300000
  494. .long 0x00000000,0x47300000
  495. .long 0x00000000,0x49300000
  496. .long 0x00000000,0x4b500000
  497. .long 0x00000000,0x37f40000
  498. .long 0x00000000,0x44300000
  499. .long 0x00000000,0x46300000
  500. .long 0x00000000,0x48300000
  501. .long 0x00000000,0x4a300000
  502. .long 0x00000000,0x3e300000
  503. .long 0x00000000,0x40300000
  504. .long 0x00000000,0x42300000
  505. .long 0x00000001,0x00000000
  506. .byte 80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,32,70,80,85,44,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
  507. .align 2
  508. .align 4