You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

icamax_power8.S 6.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. /* .file "icamax.c"
  2. .abiversion 2
  3. .section ".text"
  4. .align 2
  5. .p2align 4,,15
  6. .globl icamax_k
  7. .type icamax_k, @function
  8. */
  9. #define ASSEMBLER
  10. #include "common.h"
  11. PROLOGUE
  12. icamax_k:
  13. .LCF0:
  14. 0: addis 2,12,.TOC.-.LCF0@ha
  15. addi 2,2,.TOC.-.LCF0@l
  16. .localentry icamax_k,.-icamax_k
  17. mr. 9,3
  18. ble 0,.L25
  19. cmpdi 7,5,0
  20. li 3,0
  21. blelr 7
  22. cmpdi 7,5,1
  23. beq 7,.L54
  24. lfs 11,0(4)
  25. lfs 0,4(4)
  26. cmpdi 7,9,1
  27. fabs 11,11
  28. fabs 0,0
  29. fadds 11,11,0
  30. beq 7,.L29
  31. addi 9,9,-1
  32. sldi 5,5,3
  33. mtctr 9
  34. add 4,4,5
  35. li 3,0
  36. li 9,1
  37. .p2align 4,,15
  38. .L24:
  39. lfs 0,4(4)
  40. lfs 12,0(4)
  41. add 4,4,5
  42. fabs 0,0
  43. fabs 12,12
  44. fadds 0,0,12
  45. fcmpu 7,0,11
  46. bng 7,.L23
  47. fmr 11,0
  48. mr 3,9
  49. .L23:
  50. addi 9,9,1
  51. bdnz .L24
  52. .L52:
  53. addi 3,3,1
  54. blr
  55. .p2align 4,,15
  56. .L25:
  57. li 3,0
  58. blr
  59. .p2align 4,,15
  60. .L54:
  61. rldicr. 8,9,0,58
  62. bne 0,.L55
  63. addi 7,8,1
  64. li 10,0
  65. xxlxor 11,11,11
  66. cmpd 7,7,9
  67. sldi 10,10,2
  68. add 4,4,10
  69. subf 10,8,9
  70. mtctr 10
  71. li 3,0
  72. bgt 7,.L43
  73. li 10,-1
  74. rldicr 10,10,0,0
  75. cmpd 7,9,10
  76. beq 7,.L43
  77. .p2align 4,,15
  78. .L44:
  79. lfs 0,4(4)
  80. lfs 12,0(4)
  81. addi 4,4,8
  82. fabs 0,0
  83. fabs 12,12
  84. fadds 0,0,12
  85. fcmpu 7,0,11
  86. bng 7,.L46
  87. fmr 11,0
  88. mr 3,8
  89. .L46:
  90. addi 8,8,1
  91. bdnz .L44
  92. b .L52
  93. .p2align 4,,15
  94. .L55:
  95. li 0,-144
  96. std 31,-8(1)
  97. addis 5,2,.LC2@toc@ha
  98. vspltisw 18,0
  99. vspltisw 19,0
  100. addis 6,2,.LC3@toc@ha
  101. addi 5,5,.LC2@toc@l
  102. stvx 24,1,0
  103. li 0,-128
  104. addi 6,6,.LC3@toc@l
  105. xxlor 49,50,50
  106. addis 7,2,.LC4@toc@ha
  107. lxvd2x 44,0,5
  108. addis 10,2,.LC5@toc@ha
  109. stvx 25,1,0
  110. li 0,-112
  111. addi 7,7,.LC4@toc@l
  112. lxvd2x 45,0,6
  113. addis 5,2,.LC6@toc@ha
  114. addis 6,2,.LC7@toc@ha
  115. stvx 26,1,0
  116. li 0,-96
  117. addi 10,10,.LC5@toc@l
  118. addi 6,6,.LC7@toc@l
  119. addi 5,5,.LC6@toc@l
  120. stvx 27,1,0
  121. li 0,-80
  122. lxvd2x 46,0,10
  123. xxpermdi 44,44,44,2
  124. mr 10,4
  125. lxvd2x 48,0,6
  126. lxvd2x 47,0,5
  127. xxpermdi 45,45,45,2
  128. li 6,0
  129. stvx 28,1,0
  130. li 0,-64
  131. xxlnand 44,44,44
  132. xxlnand 45,45,45
  133. stvx 29,1,0
  134. li 0,-48
  135. vspltisw 29,8
  136. vadduwm 29,29,29
  137. xxpermdi 46,46,46,2
  138. stvx 30,1,0
  139. li 0,-32
  140. xxpermdi 47,47,47,2
  141. xxpermdi 48,48,48,2
  142. stvx 31,1,0
  143. lxvd2x 63,0,7
  144. addis 7,2,.LC8@toc@ha
  145. addi 7,7,.LC8@toc@l
  146. lxvd2x 62,0,7
  147. xxpermdi 63,63,63,2
  148. .p2align 4,,15
  149. .L5:
  150. addi 3,10,16
  151. addi 5,10,32
  152. lxvd2x 34,0,10
  153. addi 7,10,64
  154. addi 31,10,48
  155. addi 12,10,80
  156. addi 11,10,96
  157. lxvd2x 36,0,3
  158. lxvd2x 37,0,5
  159. addi 3,10,112
  160. addi 5,10,128
  161. lxvd2x 38,0,7
  162. lxvd2x 7,0,31
  163. addi 7,10,160
  164. addi 31,10,144
  165. lxvd2x 33,0,12
  166. lxvd2x 39,0,11
  167. addi 12,10,176
  168. addi 11,10,192
  169. lxvd2x 8,0,3
  170. lxvd2x 40,0,5
  171. xxpermdi 34,34,34,2
  172. addi 3,10,208
  173. addi 5,10,224
  174. lxvd2x 41,0,7
  175. lxvd2x 9,0,31
  176. addi 7,10,240
  177. lxvd2x 10,0,12
  178. lxvd2x 42,0,11
  179. xxpermdi 37,37,37,2
  180. xxpermdi 36,36,36,2
  181. addi 6,6,32
  182. lxvd2x 32,0,3
  183. lxvd2x 43,0,5
  184. xxpermdi 7,7,7,2
  185. xxpermdi 38,38,38,2
  186. cmpd 7,8,6
  187. addi 10,10,256
  188. lxvd2x 11,0,7
  189. xxpermdi 39,39,39,2
  190. xxpermdi 33,33,33,2
  191. xxpermdi 40,40,40,2
  192. xxpermdi 8,8,8,2
  193. xxpermdi 41,41,41,2
  194. xxpermdi 9,9,9,2
  195. xxpermdi 10,10,10,2
  196. xxpermdi 42,42,42,2
  197. xxpermdi 43,43,43,2
  198. xxpermdi 32,32,32,2
  199. xxpermdi 11,11,11,2
  200. xvabssp 57,37
  201. xvabssp 58,39
  202. xvabssp 35,40
  203. xvabssp 59,41
  204. xvabssp 34,34
  205. xvabssp 33,33
  206. xvabssp 32,32
  207. xvabssp 60,43
  208. xvabssp 36,36
  209. xvabssp 37,7
  210. xvabssp 38,38
  211. xvabssp 39,8
  212. xvabssp 40,9
  213. xvabssp 41,10
  214. xvabssp 42,42
  215. xvabssp 43,11
  216. vperm 24,4,2,12
  217. vperm 4,4,2,13
  218. vperm 2,5,25,12
  219. vperm 5,5,25,13
  220. vperm 25,1,6,12
  221. vperm 6,1,6,13
  222. vperm 1,7,26,12
  223. vperm 7,7,26,13
  224. vperm 26,8,3,12
  225. vperm 8,8,3,13
  226. vperm 3,9,27,12
  227. vperm 9,9,27,13
  228. vperm 27,0,10,12
  229. vperm 10,0,10,13
  230. vperm 0,11,28,12
  231. vperm 11,11,28,13
  232. xvaddsp 12,33,39
  233. xvaddsp 38,57,38
  234. xvaddsp 0,32,43
  235. xvaddsp 42,59,42
  236. xvaddsp 36,56,36
  237. xvaddsp 37,34,37
  238. xvaddsp 40,58,40
  239. xvaddsp 41,35,41
  240. xvcmpgtsp 32,12,38
  241. xvcmpgtsp 33,0,42
  242. xvcmpgtsp 43,37,36
  243. xvcmpgtsp 39,41,40
  244. xxsel 12,38,12,32
  245. xxsel 38,47,48,32
  246. xxsel 0,42,0,33
  247. xxsel 42,47,48,33
  248. xxsel 37,36,37,43
  249. xxsel 43,63,46,43
  250. xxsel 41,40,41,39
  251. xxsel 39,63,46,39
  252. xvcmpgtsp 32,12,37
  253. xvcmpgtsp 33,0,41
  254. xxsel 12,37,12,32
  255. xxsel 43,43,38,32
  256. xxsel 0,41,0,33
  257. xxsel 33,39,42,33
  258. xvcmpgtsp 32,0,12
  259. vadduwm 1,1,29
  260. xxsel 0,12,0,32
  261. xxsel 32,43,33,32
  262. xvcmpgtsp 33,0,51
  263. vadduwm 0,17,0
  264. vadduwm 17,17,30
  265. xxsel 50,50,32,33
  266. xxsel 51,51,0,33
  267. bgt 7,.L5
  268. xxsldwi 11,51,51,3
  269. xxsldwi 12,51,51,2
  270. vspltw 0,18,3
  271. xxsldwi 0,51,51,1
  272. xscvspdp 11,11
  273. xscvspdp 12,12
  274. mfvsrwz 6,32
  275. vspltw 0,18,2
  276. xscvspdp 0,0
  277. mfvsrwz 7,50
  278. mfvsrwz 5,32
  279. vspltw 0,18,0
  280. xscvspdp 51,51
  281. mfvsrwz 10,32
  282. fcmpu 7,11,12
  283. rldicl 3,6,0,32
  284. fmr 10,0
  285. rldicl 11,7,0,32
  286. rldicl 31,5,0,32
  287. rldicl 0,10,0,32
  288. beq 7,.L56
  289. bnl 7,.L8
  290. fmr 11,12
  291. mr 3,31
  292. .L8:
  293. xscmpudp 7,0,51
  294. bne 7,.L11
  295. cmplw 7,7,10
  296. ble 7,.L12
  297. mr 7,10
  298. .L12:
  299. rldicl 11,7,0,32
  300. .L13:
  301. fcmpu 7,11,10
  302. beq 7,.L57
  303. blt 7,.L58
  304. .L17:
  305. cmpd 7,9,8
  306. ble 7,.L19
  307. addi 7,8,1
  308. sldi 10,8,1
  309. cmpd 7,7,9
  310. sldi 10,10,2
  311. add 4,4,10
  312. subf 10,8,9
  313. mtctr 10
  314. bgt 7,.L37
  315. li 10,-1
  316. rldicr 10,10,0,0
  317. cmpd 7,9,10
  318. beq 7,.L37
  319. .p2align 4,,15
  320. .L21:
  321. lfs 0,4(4)
  322. lfs 12,0(4)
  323. addi 4,4,8
  324. fabs 0,0
  325. fabs 12,12
  326. fadds 0,0,12
  327. fcmpu 7,0,11
  328. bng 7,.L20
  329. fmr 11,0
  330. mr 3,8
  331. .L20:
  332. addi 8,8,1
  333. bdnz .L21
  334. .L19:
  335. li 0,-144
  336. ld 31,-8(1)
  337. addi 3,3,1
  338. lvx 24,1,0
  339. li 0,-128
  340. lvx 25,1,0
  341. li 0,-112
  342. lvx 26,1,0
  343. li 0,-96
  344. lvx 27,1,0
  345. li 0,-80
  346. lvx 28,1,0
  347. li 0,-64
  348. lvx 29,1,0
  349. li 0,-48
  350. lvx 30,1,0
  351. li 0,-32
  352. lvx 31,1,0
  353. blr
  354. .p2align 4,,15
  355. .L56:
  356. cmplw 7,6,5
  357. ble 7,.L7
  358. mr 6,5
  359. .L7:
  360. rldicl 3,6,0,32
  361. b .L8
  362. .p2align 4,,15
  363. .L29:
  364. li 3,1
  365. blr
  366. .p2align 4,,15
  367. .L11:
  368. bnl 7,.L13
  369. xscpsgndp 10,51,51
  370. mr 11,0
  371. b .L13
  372. .p2align 4,,15
  373. .L57:
  374. cmpd 7,3,11
  375. ble 7,.L17
  376. mr 3,11
  377. b .L17
  378. .p2align 4,,15
  379. .L58:
  380. fmr 11,10
  381. mr 3,11
  382. b .L17
  383. .L43:
  384. li 9,1
  385. mtctr 9
  386. b .L44
  387. .L37:
  388. li 9,1
  389. mtctr 9
  390. b .L21
  391. .long 0
  392. .byte 0,0,0,0,0,1,0,0
  393. .size icamax_k,.-icamax_k
  394. .section .rodata.cst16,"aM",@progbits,16
  395. .align 4
  396. .LC2:
  397. .byte 0
  398. .byte 1
  399. .byte 2
  400. .byte 3
  401. .byte 8
  402. .byte 9
  403. .byte 10
  404. .byte 11
  405. .byte 16
  406. .byte 17
  407. .byte 18
  408. .byte 19
  409. .byte 24
  410. .byte 25
  411. .byte 26
  412. .byte 27
  413. .LC3:
  414. .byte 4
  415. .byte 5
  416. .byte 6
  417. .byte 7
  418. .byte 12
  419. .byte 13
  420. .byte 14
  421. .byte 15
  422. .byte 20
  423. .byte 21
  424. .byte 22
  425. .byte 23
  426. .byte 28
  427. .byte 29
  428. .byte 30
  429. .byte 31
  430. .LC4:
  431. .long 0
  432. .long 1
  433. .long 2
  434. .long 3
  435. .LC5:
  436. .long 4
  437. .long 5
  438. .long 6
  439. .long 7
  440. .LC6:
  441. .long 8
  442. .long 9
  443. .long 10
  444. .long 11
  445. .LC7:
  446. .long 12
  447. .long 13
  448. .long 14
  449. .long 15
  450. .LC8:
  451. .long 32
  452. .long 32
  453. .long 32
  454. .long 32
  455. .ident "GCC: (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]"
  456. .section .note.GNU-stack,"",@progbits