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.

icamin_power9.S 5.2 kB

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