avcall-sparc.S
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:4k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

  1. #include "asmsparc.h"
  2. .text
  3. .align 4
  4. #ifndef __CHECKER__
  5. .global C(__builtin_avcall)
  6. DECLARE_FUNCTION(__builtin_avcall)
  7. .proc 04
  8. C(__builtin_avcall:)
  9. #else
  10. .global C(chkr.__builtin_avcall)
  11. DECLARE_FUNCTION(chkr.__builtin_avcall)
  12. .proc 04
  13. C(chkr.__builtin_avcall:)
  14. #endif
  15. !$PROLOGUE$ 0
  16. save %sp, -1152, %sp
  17. !$PROLOGUE$ 1
  18. ld [%i0+20], %g3
  19. add %sp, 68, %l2
  20. add %g3, -40, %g3
  21. ld [%i0+12], %o7
  22. sub %g3, %i0, %g3
  23. cmp %o7, 16
  24. bne L3
  25. sra %g3, 2, %l0
  26. ld [%i0+4], %g3
  27. andcc %g3, 8, %g0
  28. bne L87
  29. cmp %l0, 6
  30. ld [%i0+8], %g3
  31. st %g3, [%l2-4]
  32. L3:
  33. cmp %l0, 6
  34. L87:
  35. ble,a L88
  36. ld [%i0+12], %g3
  37. add %l0, -6, %l0
  38. add %i0, 40, %l1
  39. mov 24, %o7
  40. L7:
  41. ld [%l1+%o7], %g3
  42. addcc %l0, -1, %l0
  43. st %g3, [%o7+%l2]
  44. bne L7
  45. add %o7, 4, %o7
  46. ld [%i0+12], %g3
  47. L88:
  48. cmp %g3, 16
  49. bne,a L89
  50. ld [%i0], %g3
  51. ld [%i0+4], %g3
  52. andcc %g3, 16, %g0
  53. be L9
  54. sethi %hi(-2117607424), %o7
  55. ld [%i0+16], %g3
  56. and %g3, 4095, %g3
  57. or %o7, 8, %o7
  58. sethi %hi(-1614774272), %l0
  59. sethi %hi(16777216), %l1
  60. sethi %hi(-1341120512), %l2
  61. sethi %hi(-2115502080), %l3
  62. st %g3, [%fp-24]
  63. std %l0, [%fp-32]
  64. st %l2, [%fp-20]
  65. st %o7, [%fp-16]
  66. st %l3, [%fp-12]
  67. add %fp, -32, %g3
  68. iflush %g3
  69. add %fp, -24, %o7
  70. iflush %o7
  71. add %fp, -16, %g3
  72. iflush %g3
  73. add %fp, -12, %o7
  74. iflush %o7
  75. ld [%i0], %g2
  76. ld [%i0+40], %o0
  77. ld [%i0+44], %o1
  78. ld [%i0+48], %o2
  79. ld [%i0+52], %o3
  80. ld [%i0+56], %o4
  81. jmp %fp-32
  82. ld [%i0+60], %o5
  83. L9:
  84. ld [%i0], %g3
  85. L89:
  86. ld [%i0+40], %o0
  87. ld [%i0+44], %o1
  88. ld [%i0+48], %o2
  89. ld [%i0+52], %o3
  90. ld [%i0+56], %o4
  91. call %g3, 0
  92. ld [%i0+60], %o5
  93. mov %o0, %l2
  94. nop
  95. ld [%i0+12], %g3
  96. cmp %g3, 1
  97. be L11
  98. cmp %g3, 0
  99. be L84
  100. cmp %g3, 2
  101. be L85
  102. cmp %g3, 3
  103. be L85
  104. cmp %g3, 4
  105. be L85
  106. cmp %g3, 5
  107. be L86
  108. cmp %g3, 6
  109. be L86
  110. cmp %g3, 7
  111. be L84
  112. cmp %g3, 8
  113. be L84
  114. cmp %g3, 9
  115. be L84
  116. cmp %g3, 10
  117. be,a L90
  118. ld [%i0+8], %g3
  119. ld [%i0+12], %o7
  120. add %o7, -11, %g3
  121. cmp %g3, 1
  122. bgu L32
  123. cmp %o7, 13
  124. ld [%i0+8], %g3
  125. st %l2, [%g3]
  126. ld [%i0+8], %o7
  127. b L11
  128. st %o1, [%o7+4]
  129. L32:
  130. bne L34
  131. cmp %o7, 14
  132. ld [%i0+4], %g3
  133. andcc %g3, 32, %g0
  134. bne,a L35
  135. fdtos %f0, %f0
  136. L35:
  137. ld [%i0+8], %g3
  138. b L11
  139. st %f0, [%g3]
  140. L34:
  141. bne L38
  142. cmp %o7, 15
  143. ld [%i0+8], %g3
  144. b L11
  145. std %f0, [%g3]
  146. L38:
  147. be L84
  148. cmp %o7, 16
  149. bne L11
  150. nop
  151. ld [%i0+4], %g3
  152. andcc %g3, 8, %g0
  153. be L43
  154. andcc %g3, 1, %g0
  155. ld [%i0+16], %g3
  156. cmp %g3, 1
  157. bne L44
  158. cmp %g3, 2
  159. ld [%i0+8], %o7
  160. ldub [%sp-1], %g3
  161. b L11
  162. stb %g3, [%o7]
  163. L44:
  164. bne L46
  165. cmp %g3, 4
  166. ld [%i0+8], %o7
  167. lduh [%sp-2], %g3
  168. b L11
  169. sth %g3, [%o7]
  170. L46:
  171. bne L48
  172. cmp %g3, 8
  173. ld [%i0+8], %o7
  174. ld [%sp-4], %g3
  175. b L11
  176. st %g3, [%o7]
  177. L48:
  178. bne L50
  179. andcc %g3, 3, %g0
  180. ld [%sp-8], %g3
  181. ld [%i0+8], %o7
  182. st %g3, [%o7]
  183. ld [%i0+8], %l0
  184. ld [%sp-4], %g3
  185. b L11
  186. st %g3, [%l0+4]
  187. L50:
  188. be L52
  189. sub %sp, %g3, %o7
  190. ld [%i0+8], %i0
  191. cmp %g3, 4
  192. bleu L53
  193. mov %g3, %l0
  194. and %o7, -4, %o7
  195. L53:
  196. cmp %g3, 0
  197. be L11
  198. nop
  199. L56:
  200. ldub [%o7], %g3
  201. addcc %l0, -1, %l0
  202. stb %g3, [%i0]
  203. add %o7, 1, %o7
  204. bne L56
  205. add %i0, 1, %i0
  206. b,a L11
  207. L52:
  208. cmp %o7, %sp
  209. bgeu L11
  210. ld [%i0+8], %i0
  211. L61:
  212. ld [%o7], %g3
  213. add %o7, 4, %o7
  214. st %g3, [%i0]
  215. cmp %o7, %sp
  216. blu L61
  217. add %i0, 4, %i0
  218. b,a L11
  219. L43:
  220. be L64
  221. andcc %g3, 2, %g0
  222. ld [%i0+16], %g3
  223. cmp %g3, 1
  224. bne L65
  225. cmp %g3, 2
  226. ld [%i0+8], %o7
  227. ldub [%l2], %g3
  228. b L11
  229. stb %g3, [%o7]
  230. L65:
  231. bne L67
  232. cmp %g3, 4
  233. ld [%i0+8], %o7
  234. lduh [%l2], %g3
  235. b L11
  236. sth %g3, [%o7]
  237. L67:
  238. bne L69
  239. cmp %g3, 8
  240. ld [%i0+8], %o7
  241. ld [%l2], %g3
  242. b L11
  243. st %g3, [%o7]
  244. L69:
  245. bne L71
  246. add %g3, 3, %g3
  247. ld [%l2], %g3
  248. ld [%i0+8], %o7
  249. st %g3, [%o7]
  250. ld [%i0+8], %l0
  251. ld [%l2+4], %g3
  252. b L11
  253. st %g3, [%l0+4]
  254. L71:
  255. srl %g3, 2, %l1
  256. addcc %l1, -1, %l1
  257. bneg L11
  258. sll %l1, 2, %l0
  259. L75:
  260. ld [%l0+%l2], %o7
  261. addcc %l1, -1, %l1
  262. ld [%i0+8], %g3
  263. st %o7, [%g3+%l0]
  264. bpos L75
  265. add %l0, -4, %l0
  266. b,a L11
  267. L64:
  268. be L11
  269. nop
  270. ld [%i0+16], %g3
  271. cmp %g3, 1
  272. bne L79
  273. cmp %g3, 2
  274. L85:
  275. ld [%i0+8], %g3
  276. b L11
  277. stb %l2, [%g3]
  278. L79:
  279. bne L81
  280. cmp %g3, 4
  281. L86:
  282. ld [%i0+8], %g3
  283. b L11
  284. sth %l2, [%g3]
  285. L81:
  286. bne L11
  287. nop
  288. L84:
  289. ld [%i0+8], %g3
  290. L90:
  291. st %l2, [%g3]
  292. L11:
  293. ret
  294. restore %g0, 0, %o0