trig32.s
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:8k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* trig32.s - VxWorks conversion from Microtek tools to Sun native */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,06aug92,jwt  converted.
  7. */
  8. /*
  9. ! ! ! ! !
  10. ! SPARClite Floating Point Library
  11. !
  12. ! Copyright (C) 1992 By
  13. ! United States Software Corporation
  14. ! 14215 N.W. Science Park Drive
  15. ! Portland, Oregon 97229
  16. !
  17. ! This software is furnished under a license and may be used
  18. ! and copied only in accordance with the terms of such license
  19. ! and with the inclusion of the above copyright notice.
  20. ! This software or any other copies thereof may not be provided
  21. ! or otherwise made available to any other person.  No title to
  22. ! and ownership of the software is hereby transferred.
  23. !
  24. ! The information in this software is subject to change without 
  25. ! notice and should not be construed as a commitment by United
  26. ! States Software Corporation.
  27. !
  28. ! First Release: V1.02 March 26 1992
  29. ! ! ! ! !
  30. .macro scan,p1,p2,p3
  31. .word 0x81602000 | (&p3<<25) | (&p1<<14) | p2
  32. .endm
  33. .macro umul,p1,p2,p3
  34. .word 0x80500000 | (&p3<<25) | (&p1<<14) | &p2
  35. .endm
  36. .macro divscc,p1,p2,p3
  37. .word 0x80e80000 | (&p3<<25) | (&p1<<14) | &p2
  38. .endm
  39. */
  40. #include "arch/sparc/ussSun4.h"
  41. .global _exmul
  42. .global _exdiv
  43. .global _sigmax
  44. .data
  45. .align 4
  46. sincon: .word 0xff946030,0xffffffff
  47. .word 0x5849184f,0x0
  48. .word 0x33753015,0xffffffca
  49. .word 0xe3a556c7,0x171d
  50. .word 0xf97f97f9,0xfff97f97
  51. .word 0x11111111,0x1111111
  52. .word 0xaaaaaaab,0xeaaaaaaa
  53. .word 0x0,0x80000000
  54. coscon: .word 0x6b9fd,0x0
  55. .word 0xf9b1a2d6,0xffffffff
  56. .word 0x7bb63bfe,0x4
  57. .word 0x360910ec,0xfffffdb0
  58. .word 0xd00d01,0xd00d
  59. .word 0xd27d27d2,0xffd27d27
  60. .word 0x55555555,0x5555555
  61. .word 0x0,0xc0000000
  62. .word 0x0,0x80000000
  63. tancon: .word 0xffde9d9a,0xffffffff
  64. .word 0xfeb68270,0xffffffff
  65. .word 0xf34c0f08,0xffffffff
  66. .word 0x82a09a5d,0xffffffff
  67. .word 0x2a9e38a7,0xfffffffb
  68. .word 0x4b63c10d,0xffffffd0
  69. .word 0x24d3b1f7,0xfffffe29
  70. .word 0xfa29bbda,0xffffedd7
  71. .word 0x86a0478a,0xffff4cab
  72. .word 0x1b32c43d,0xfff910a2
  73. .word 0xffbaa65,0xffbaa655
  74. .word 0x27d27d28,0xfd27d27d
  75. .word 0x55555555,0xd5555555
  76. .word 0x0,0x80000000
  77. .text
  78. .align 4
  79. .global _reduct
  80. _reduct:
  81. save %sp,-96,%sp
  82. sll     %i0,1,%i4
  83. srl     %i4,21,%i4
  84. sll     %i0,11,%i2
  85. srl     %i1,21,%l5
  86. or      %i2,%l5,%i2
  87. sll     %i1,11,%i3
  88. sethi   %hi(0x80000000),%l5
  89. or      %i2,%l5,%i2
  90. subcc   %i4,0x3fe,%i5
  91. bneg    Aret2          
  92. subcc   %i5,0x40,%g0
  93. bg      Anan     
  94. NOP
  95. srl     %i3,1,%i3
  96. sll     %i2,31,%l5
  97. srl     %i2,1,%i2
  98. or      %i3,%l5,%i3
  99. sethi   %hi(0x60000000),%l4
  100. sethi   %hi(0x10b4611a),%l3
  101. or      %l3,0x11a,%l3
  102. sethi   %hi(0x6487ed51),%l2
  103. or      %l2,0x151,%l2
  104. or      %g0,-1,%l0
  105. or      %g0,0,%l1
  106. Alab3: subcc   %l1,%l4,%l1
  107. subxcc  %i3,%l3,%i3
  108. subxcc  %i2,%l2,%i2
  109. bcc     i1       
  110. NOP
  111. addcc   %l1,%l4,%l1
  112. addxcc  %i3,%l3,%i3
  113. addxcc  %i2,%l2,%i2
  114. i1: addx    %l0,%l0,%l0
  115. addcc   %l1,%l1,%l1
  116. addxcc  %i3,%i3,%i3
  117. addx    %i2,%i2,%i2
  118. subcc   %i5,0,%i5
  119. bne     Alab3    
  120. sub     %i5,1,%i5
  121. xor     %l0,-1,%l0
  122. andcc   %l0,1,%l5
  123. be      i2       
  124. NOP
  125. or      %g0,%l1,%i5
  126. sll     %l4,1,%l1
  127. subcc   %l1,%i5,%l1
  128. or      %g0,%i3,%i5
  129. sll     %l3,1,%i3
  130. subxcc  %i3,%i5,%i3
  131. or      %g0,%i2,%i5
  132. sll     %l2,1,%i2
  133. subx    %i2,%i5,%i2
  134. i2: or      %g0,0x3fe,%i4
  135. b3: subcc   %i2,0,%i2
  136. bneg    Aret     
  137. NOP
  138. addcc   %l1,%l1,%l1
  139. addxcc  %i3,%i3,%i3
  140. addx    %i2,%i2,%i2
  141. ba      b3       
  142. sub     %i4,1,%i4
  143. Aret: sll     %l0,29,%l5
  144. or      %i4,%l5,%i4
  145. Aret2: or      %g0,%i2,%i0
  146. or      %g0,%i3,%i1
  147. or      %g0,%i4,%i2
  148. A999: jmpl %i7+8,%g0
  149. restore %g0,0,%g0
  150. Anan: or      %g0,-1,%i4
  151. sethi   %hi(0xc0000000),%i2
  152. ba      Aret2    
  153. or      %g0,0,%i3
  154. .global _dpsin
  155. _dpsin:
  156. .global _sin
  157. _sin:
  158. save %sp,-96,%sp
  159. sethi   %hi(0x80000000),%l4
  160. and     %l4,%i0,%i2
  161. or      %g0,%i0,%o0
  162. call    _reduct
  163. or      %g0,%i1,%o1
  164. or      %g0,%o0,%i4
  165. or      %g0,%o1,%i5
  166. or      %g0,%o2,%l0
  167. subcc   %l0,-1,%g0
  168. be      Bret     
  169. NOP
  170. srl     %l0,29,%i3
  171. sll     %l0,3,%l0
  172. srl     %l0,3,%l0
  173. andcc   %i3,4,%l4
  174. be      i4       
  175. NOP
  176. sub     %i3,4,%i3
  177. sethi   %hi(0x80000000),%l4
  178. xor     %i2,%l4,%i2
  179. i4: sub     %i3,1,%l4
  180. subcc   %l4,2,%g0
  181. bcc     i5             
  182. or      %g0,%i4,%o0
  183. or      %g0,%i5,%o1
  184. or      %g0,%l0,%o2
  185. or      %g0,%i4,%o3
  186. or      %g0,%i5,%o4
  187. call    _exmul
  188. or      %g0,%l0,%o5
  189. or      %g0,0,%o3
  190. sethi   %hi(coscon),%o4
  191. call    _sigmax
  192. or %o4,%lo(coscon),%o4
  193. or      %g0,%o0,%i4
  194. or      %g0,%o1,%i5
  195. ba      Bret     
  196. or      %g0,%o2,%l0
  197. i5: or      %g0,%i4,%l1
  198. or      %g0,%i5,%l2
  199. or      %g0,%l0,%l3
  200. or      %g0,%i4,%o0
  201. or      %g0,%i5,%o1
  202. or      %g0,%l0,%o2
  203. or      %g0,%i4,%o3
  204. or      %g0,%i5,%o4
  205. call    _exmul
  206. or      %g0,%l0,%o5
  207. or      %g0,0,%o3
  208. sethi   %hi(sincon),%o4
  209. call    _sigmax
  210. or %o4,%lo(sincon),%o4
  211. or      %g0,%l1,%o3
  212. or      %g0,%l2,%o4
  213. call    _exmul
  214. or      %g0,%l3,%o5
  215. or      %g0,%o0,%i4
  216. or      %g0,%o1,%i5
  217. or      %g0,%o2,%l0
  218. Bret: srl     %i5,11,%i1
  219. sll     %i4,21,%l4
  220. or      %i1,%l4,%i1
  221. srl     %i4,11,%i0
  222. sethi   %hi(0xfffff),%l4
  223. or      %l4,0x3ff,%l4
  224. and     %i0,%l4,%i0
  225. sll     %l0,20,%l4
  226. or      %i0,%l4,%i0
  227. or      %i0,%i2,%i0
  228. B999: jmpl %i7+8,%g0
  229. restore %g0,0,%g0
  230. .global _dpcos
  231. _dpcos:
  232. .global _cos
  233. _cos:
  234. save %sp,-96,%sp
  235. or      %g0,0,%i2
  236. or      %g0,%i0,%o0
  237. call    _reduct
  238. or      %g0,%i1,%o1
  239. or      %g0,%o0,%i4
  240. or      %g0,%o1,%i5
  241. or      %g0,%o2,%l0
  242. subcc   %l0,-1,%g0
  243. be      Cret     
  244. NOP
  245. srl     %l0,29,%i3
  246. sll     %l0,3,%l0
  247. srl     %l0,3,%l0
  248. andcc   %i3,4,%l4
  249. be      i6       
  250. NOP
  251. sub     %i3,4,%i3
  252. sethi   %hi(0x80000000),%l4
  253. xor     %i2,%l4,%i2
  254. i6: andcc   %i3,2,%l4
  255. be      i7       
  256. NOP
  257. sethi   %hi(0x80000000),%l4
  258. xor     %i2,%l4,%i2
  259. i7: sub     %i3,1,%l4
  260. subcc   %l4,2,%g0
  261. bcc     i8       
  262. NOP
  263. or      %g0,%i4,%l1
  264. or      %g0,%i5,%l2
  265. or      %g0,%l0,%l3
  266. or      %g0,%i4,%o0
  267. or      %g0,%i5,%o1
  268. or      %g0,%l0,%o2
  269. or      %g0,%i4,%o3
  270. or      %g0,%i5,%o4
  271. call    _exmul
  272. or      %g0,%l0,%o5
  273. or      %g0,0,%o3
  274. sethi   %hi(sincon),%o4
  275. call    _sigmax
  276. or %o4,%lo(sincon),%o4
  277. or      %g0,%l1,%o3
  278. or      %g0,%l2,%o4
  279. call    _exmul
  280. or      %g0,%l3,%o5
  281. or      %g0,%o0,%i4
  282. or      %g0,%o1,%i5
  283. ba      Cret     
  284. or      %g0,%o2,%l0
  285. i8: or      %g0,%i4,%o0
  286. or      %g0,%i5,%o1
  287. or      %g0,%l0,%o2
  288. or      %g0,%i4,%o3
  289. or      %g0,%i5,%o4
  290. call    _exmul
  291. or      %g0,%l0,%o5
  292. or      %g0,0,%o3
  293. sethi   %hi(coscon),%o4
  294. call    _sigmax
  295. or %o4,%lo(coscon),%o4
  296. or      %g0,%o0,%i4
  297. or      %g0,%o1,%i5
  298. or      %g0,%o2,%l0
  299. Cret: srl     %i5,11,%i1
  300. sll     %i4,21,%l4
  301. or      %i1,%l4,%i1
  302. srl     %i4,11,%i0
  303. sethi   %hi(0xfffff),%l4
  304. or      %l4,0x3ff,%l4
  305. and     %i0,%l4,%i0
  306. sll     %l0,20,%l4
  307. or      %i0,%l4,%i0
  308. or      %i0,%i2,%i0
  309. C999: jmpl %i7+8,%g0
  310. restore %g0,0,%g0
  311. .global _dptan
  312. _dptan:
  313. .global _tan
  314. _tan:
  315. save %sp,-96,%sp
  316. sethi   %hi(0x80000000),%l5
  317. and     %l5,%i0,%i2
  318. or      %g0,%i0,%o0
  319. call    _reduct
  320. or      %g0,%i1,%o1
  321. or      %g0,%o0,%i5
  322. or      %g0,%o1,%l0
  323. or      %g0,%o2,%l1
  324. subcc   %l1,-1,%g0
  325. be      Dret     
  326. NOP
  327. srl     %l1,29,%i4
  328. sll     %l1,3,%l1
  329. srl     %l1,3,%l1
  330. and     %i4,0xfffffffb,%i4
  331. andcc   %i4,2,%l5
  332. be      i9       
  333. NOP
  334. sethi   %hi(0x80000000),%l5
  335. xor     %i2,%l5,%i2
  336. i9: or      %g0,%i5,%o0
  337. or      %g0,%l0,%o1
  338. or      %g0,%l1,%o2
  339. or      %g0,%i5,%o3
  340. or      %g0,%l0,%o4
  341. call    _exmul
  342. or      %g0,%l1,%o5
  343. or      %g0,0,%o3
  344. sethi   %hi(tancon),%o4
  345. call    _sigmax
  346. or %o4,%lo(tancon),%o4
  347. or      %g0,%o0,%l2
  348. or      %g0,%o1,%l3
  349. or      %g0,%o2,%l4
  350. sub     %i4,1,%l5
  351. subcc   %l5,2,%g0
  352. bcc     i10            
  353. or      %g0,%l2,%o0
  354. or      %g0,%l3,%o1
  355. or      %g0,%l4,%o2
  356. or      %g0,%i5,%o3
  357. or      %g0,%l0,%o4
  358. call    _exdiv
  359. or      %g0,%l1,%o5
  360. or      %g0,%o0,%i5
  361. or      %g0,%o1,%l0
  362. ba      Dret     
  363. or      %g0,%o2,%l1
  364. i10: or      %g0,%i5,%o0
  365. or      %g0,%l0,%o1
  366. or      %g0,%l1,%o2
  367. or      %g0,%l2,%o3
  368. or      %g0,%l3,%o4
  369. call    _exdiv
  370. or      %g0,%l4,%o5
  371. or      %g0,%o0,%i5
  372. or      %g0,%o1,%l0
  373. or      %g0,%o2,%l1
  374. Dret: srl     %l0,11,%i1
  375. sll     %i5,21,%l5
  376. or      %i1,%l5,%i1
  377. srl     %i5,11,%i0
  378. sethi   %hi(0xfffff),%l5
  379. or      %l5,0x3ff,%l5
  380. and     %i0,%l5,%i0
  381. sll     %l1,20,%l5
  382. or      %i0,%l5,%i0
  383. or      %i0,%i2,%i0
  384. D999: jmpl %i7+8,%g0
  385. restore %g0,0,%g0
  386. ! .end