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.

isamax_power8.S 5.8 kB

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