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_power9.S 5.3 kB

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