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

VxWorks

开发平台:

C/C++

  1. /* fptrig32.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. .data
  42. .align 4
  43. sincof: .word 0x171e
  44. .word 0xfff97f98
  45. .word 0x1111111
  46. .word 0xeaaaaaab
  47. .word 0x80000000
  48. coscof: .word 0xd00d
  49. .word 0xffd27d28
  50. .word 0x5555555
  51. .word 0xc0000000
  52. .word 0x80000000
  53. tancof: .word 0x1228
  54. .word 0xb354
  55. .word 0x6ef5e
  56. .word 0x4559ab
  57. .word 0x2d82d83
  58. .word 0x2aaaaaab
  59. .text
  60. .align 4
  61. .global _fpreduct
  62. _fpreduct:
  63. save %sp,-96,%sp
  64. sra     %i0,23,%i2
  65. and     %i2,0xff,%i2
  66. sll     %i0,8,%i1
  67. sethi   %hi(0x80000000),%l2
  68. or      %i1,%l2,%i1
  69. or      %g0,0,%i3
  70. subcc   %i2,0x7e,%i4
  71. bneg    Aret           
  72. subcc   %i4,0x40,%g0
  73. bg      Anan     
  74. NOP
  75. srl     %i1,1,%i1
  76. or      %g0,0,%i5
  77. or      %g0,-1,%i3
  78. sethi   %hi(0x10b4611a),%l1
  79. or      %l1,0x11a,%l1
  80. sethi   %hi(0x6487ed51),%l0
  81. or      %l0,0x151,%l0
  82. b1: subcc   %i5,%l1,%i5
  83. subxcc  %i1,%l0,%i1
  84. bcc     i2       
  85. NOP
  86. addcc   %i5,%l1,%i5
  87. addxcc  %i1,%l0,%i1
  88. i2: addx    %i3,%i3,%i3
  89. addcc   %i5,%i5,%i5
  90. addx    %i1,%i1,%i1
  91. subcc   %i4,0,%i4
  92. bne     b1       
  93. sub     %i4,1,%i4
  94. xor     %i3,7,%i3
  95. and     %i3,7,%i3
  96. andcc   %i3,1,%l2
  97. be      i3       
  98. NOP
  99. or      %g0,%i5,%i4
  100. sll     %l1,1,%i5
  101. subcc   %i5,%i4,%i5
  102. or      %g0,%i1,%i4
  103. sll     %l0,1,%i1
  104. subx    %i1,%i4,%i1
  105. i3: or      %g0,0x7e,%i2
  106. b4: subcc   %i1,0,%i1
  107. bneg    Aret     
  108. NOP
  109. addcc   %i5,%i5,%i5
  110. addx    %i1,%i1,%i1
  111. ba      b4       
  112. sub     %i2,1,%i2
  113. Aret: or      %g0,%i1,%i0
  114. or      %g0,%i2,%i1
  115. or      %g0,%i3,%i2
  116. A999: jmpl %i7+8,%g0
  117. restore %g0,0,%g0
  118. Anan: sethi   %hi(0x80000000),%i3
  119. or      %g0,0xff,%i2
  120. ba      Aret     
  121. sethi   %hi(0xc0000000),%i1
  122. .global _fpsin
  123. _fpsin:
  124. .global _sinf
  125. _sinf:
  126. save %sp,-96,%sp
  127. or      %g0,%i0,%o0
  128. call    _fpreduct
  129. NOP
  130. or      %g0,%o0,%l0
  131. or      %g0,%o1,%l1
  132. orcc    %g0,%o2,%l2
  133. bpos    i5       
  134. NOP
  135. ba      B999     
  136. sethi   %hi(0xffc00000),%i0
  137. i5: sethi   %hi(0x80000000),%l7
  138. and     %l7,%i0,%i1
  139. andcc   %l2,4,%l7
  140. be      i6       
  141. NOP
  142. sub     %l2,4,%l2
  143. sethi   %hi(0x80000000),%l7
  144. xor     %i1,%l7,%i1
  145. i6: sub     %l2,1,%l7
  146. subcc   %l7,2,%g0
  147. bcc     i7       
  148. NOP
  149. umul %l0,%l0,%i5
  150. rd %y,%i5
  151. sethi   %hi(coscof),%l6
  152. or %l6,%lo(coscof),%l6
  153. or      %g0,0x7e,%i3
  154. sub     %i3,%l1,%i3
  155. sll     %i3,1,%i3
  156. subcc %i3,32,%g0
  157. bcc,a L1             
  158. or %g0,0,%i5
  159. L1: srl %i5,%i3,%i5
  160. ld      [%l6],%l0
  161. add     %l6,4,%l6
  162. b8: sra     %l0,31,%i4
  163. xor     %l0,%i4,%l0
  164. sub     %l0,%i4,%l0
  165. umul %i5,%l0,%l0
  166. rd %y,%l0
  167. xor     %l0,%i4,%l0
  168. sub     %l0,%i4,%l0
  169. ld      [%l6],%i4
  170. add     %l6,4,%l6
  171. add     %l0,%i4,%l0
  172. addcc   %i4,%i4,%l7
  173. bne     b8       
  174. NOP
  175. ba      e7       
  176. or      %g0,0x7f,%l1
  177. i7: or      %g0,%l0,%l3
  178. umul %l0,%l0,%i5
  179. rd %y,%i5
  180. sethi   %hi(sincof),%l6
  181. or %l6,%lo(sincof),%l6
  182. or      %g0,0x7e,%i3
  183. sub     %i3,%l1,%i3
  184. sll     %i3,1,%i3
  185. subcc %i3,32,%g0
  186. bcc,a L2             
  187. or %g0,0,%i5
  188. L2: srl %i5,%i3,%i5
  189. ld      [%l6],%l0
  190. add     %l6,4,%l6
  191. b9: sra     %l0,31,%i4
  192. xor     %l0,%i4,%l0
  193. sub     %l0,%i4,%l0
  194. umul %i5,%l0,%l0
  195. rd %y,%l0
  196. xor     %l0,%i4,%l0
  197. sub     %l0,%i4,%l0
  198. ld      [%l6],%i4
  199. add     %l6,4,%l6
  200. add     %l0,%i4,%l0
  201. addcc   %i4,%i4,%l7
  202. bne     b9             
  203. subcc   %l0,0,%l0
  204. ble     i10      
  205. NOP
  206. sll     %l0,1,%l0
  207. sub     %l1,1,%l1
  208. i10: add     %l1,1,%l1
  209. umul %l0,%l3,%l0
  210. rd %y,%l0
  211. e7: subcc   %l0,0,%l0
  212. ble     i11      
  213. NOP
  214. sll     %l0,1,%l0
  215. sub     %l1,1,%l1
  216. i11: sll     %l0,1,%l0
  217. srl     %l0,9,%l0
  218. sll     %l1,23,%l7
  219. or      %l0,%l7,%l0
  220. or      %l0,%i1,%i0
  221. B999: jmpl %i7+8,%g0
  222. restore %g0,0,%g0
  223. .global _fpcos
  224. _fpcos:
  225. .global _cosf
  226. _cosf:
  227. save %sp,-96,%sp
  228. or      %g0,%i0,%o0
  229. call    _fpreduct
  230. NOP
  231. or      %g0,%o0,%i5
  232. or      %g0,%o1,%l0
  233. orcc    %g0,%o2,%l1
  234. bneg    Cnan     
  235. NOP
  236. or      %g0,0,%i1
  237. andcc   %l1,4,%l6
  238. be      i12      
  239. NOP
  240. sub     %l1,4,%l1
  241. sethi   %hi(0x80000000),%l6
  242. xor     %i1,%l6,%i1
  243. i12: andcc   %l1,2,%l6
  244. be      i13      
  245. NOP
  246. sethi   %hi(0x80000000),%l6
  247. xor     %i1,%l6,%i1
  248. i13: sub     %l1,1,%l6
  249. subcc   %l6,2,%g0
  250. bcc     i14      
  251. NOP
  252. or      %g0,%i5,%l2
  253. umul %i5,%i5,%i4
  254. rd %y,%i4
  255. sethi   %hi(sincof),%l5
  256. or %l5,%lo(sincof),%l5
  257. or      %g0,0x7e,%i2
  258. sub     %i2,%l0,%i2
  259. sll     %i2,1,%i2
  260. subcc %i2,32,%g0
  261. bcc,a L3             
  262. or %g0,0,%i4
  263. L3: srl %i4,%i2,%i4
  264. ld      [%l5],%i5
  265. add     %l5,4,%l5
  266. b15: sra     %i5,31,%i3
  267. xor     %i5,%i3,%i5
  268. sub     %i5,%i3,%i5
  269. umul %i4,%i5,%i5
  270. rd %y,%i5
  271. xor     %i5,%i3,%i5
  272. sub     %i5,%i3,%i5
  273. ld      [%l5],%i3
  274. add     %l5,4,%l5
  275. add     %i5,%i3,%i5
  276. addcc   %i3,%i3,%l6
  277. bne     b15            
  278. subcc   %i5,0,%i5
  279. ble     i16      
  280. NOP
  281. sll     %i5,1,%i5
  282. sub     %l0,1,%l0
  283. i16: add     %l0,1,%l0
  284. umul %i5,%l2,%i5
  285. rd %y,%i5
  286. ba,a    e14      
  287. i14:
  288. umul %i5,%i5,%i4
  289. rd %y,%i4
  290. sethi   %hi(coscof),%l5
  291. or %l5,%lo(coscof),%l5
  292. or      %g0,0x7e,%i2
  293. sub     %i2,%l0,%i2
  294. sll     %i2,1,%i2
  295. subcc %i2,32,%g0
  296. bcc,a L4             
  297. or %g0,0,%i4
  298. L4: srl %i4,%i2,%i4
  299. ld      [%l5],%i5
  300. add     %l5,4,%l5
  301. b17: sra     %i5,31,%i3
  302. xor     %i5,%i3,%i5
  303. sub     %i5,%i3,%i5
  304. umul %i4,%i5,%i5
  305. rd %y,%i5
  306. xor     %i5,%i3,%i5
  307. sub     %i5,%i3,%i5
  308. ld      [%l5],%i3
  309. add     %l5,4,%l5
  310. add     %i5,%i3,%i5
  311. addcc   %i3,%i3,%l6
  312. bne     b17      
  313. NOP
  314. or      %g0,0x7f,%l0
  315. e14: subcc   %i5,0,%i5
  316. ble     i18      
  317. NOP
  318. sll     %i5,1,%i5
  319. sub     %l0,1,%l0
  320. i18: sll     %i5,1,%i5
  321. srl     %i5,9,%i5
  322. sll     %l0,23,%l6
  323. or      %i5,%l6,%i5
  324. or      %i5,%i1,%i0
  325. C999: jmpl %i7+8,%g0
  326. restore %g0,0,%g0
  327. Cnan: ba      C999     
  328. sethi   %hi(0xffc00000),%i0
  329. .global _fptan
  330. _fptan:
  331. .global _tanf
  332. _tanf:
  333. save %sp,-96,%sp
  334. or      %g0,%i0,%o0
  335. call    _fpreduct
  336. NOP
  337. or      %g0,%o0,%l0
  338. or      %g0,%o1,%l1
  339. orcc    %g0,%o2,%l2
  340. bneg    Dnan     
  341. NOP
  342. sethi   %hi(0x80000000),%l7
  343. and     %l7,%i0,%i1
  344. and     %l2,0xfffffffb,%l2
  345. andcc   %l2,2,%l7
  346. be      i19      
  347. NOP
  348. sethi   %hi(0x80000000),%l7
  349. xor     %i1,%l7,%i1
  350. i19: or      %g0,%l1,%l4
  351. umul %l0,%l0,%l3
  352. rd %y,%l3
  353. sethi   %hi(tancof),%l6
  354. or %l6,%lo(tancof),%l6
  355. or      %g0,0x7e,%i2
  356. sub     %i2,%l1,%i2
  357. sll     %i2,1,%i2
  358. subcc %i2,32,%g0
  359. bcc,a L5             
  360. or %g0,0,%l3
  361. L5: srl %l3,%i2,%l3
  362. or      %g0,0,%i4
  363. b20: ld      [%l6],%i3
  364. add     %l6,4,%l6
  365. add     %i4,%i3,%i4
  366. umul %l3,%i4,%i4
  367. rd %y,%i4
  368. sethi   %hi(0x20000000),%l7
  369. subcc   %i3,%l7,%g0
  370. bcs     b20      
  371. NOP
  372. or      %g0,0x7f,%l1
  373. sethi   %hi(0x7fffffff),%l7
  374. or      %l7,0x3ff,%l7
  375. subcc   %l7,%i4,%i4
  376. bneg    i21      
  377. NOP
  378. sll     %i4,1,%i4
  379. sub     %l1,1,%l1
  380. i21: sub     %l2,1,%l7
  381. subcc   %l7,2,%g0
  382. bcc     i22      
  383. NOP
  384. add     %l1,0x7f,%l1
  385. sub     %l1,%l4,%l1
  386. srl     %i4,1,%i4
  387. or      %g0,%l0,%i5
  388. wr %i4,0,%y
  389. or %g0,0x0,%l0
  390. orcc %g0,0,%g0
  391. #if 0
  392. divscc %l0,%i5,%l0
  393. divscc %l0,%i5,%l0
  394. divscc %l0,%i5,%l0
  395. divscc %l0,%i5,%l0
  396. divscc %l0,%i5,%l0
  397. divscc %l0,%i5,%l0
  398. divscc %l0,%i5,%l0
  399. divscc %l0,%i5,%l0
  400. divscc %l0,%i5,%l0
  401. divscc %l0,%i5,%l0
  402. divscc %l0,%i5,%l0
  403. divscc %l0,%i5,%l0
  404. divscc %l0,%i5,%l0
  405. divscc %l0,%i5,%l0
  406. divscc %l0,%i5,%l0
  407. divscc %l0,%i5,%l0
  408. divscc %l0,%i5,%l0
  409. divscc %l0,%i5,%l0
  410. divscc %l0,%i5,%l0
  411. divscc %l0,%i5,%l0
  412. divscc %l0,%i5,%l0
  413. divscc %l0,%i5,%l0
  414. divscc %l0,%i5,%l0
  415. divscc %l0,%i5,%l0
  416. divscc %l0,%i5,%l0
  417. divscc %l0,%i5,%l0
  418. divscc %l0,%i5,%l0
  419. divscc %l0,%i5,%l0
  420. divscc %l0,%i5,%l0
  421. divscc %l0,%i5,%l0
  422. divscc %l0,%i5,%l0
  423. divscc %l0,%i5,%l0
  424. #else
  425. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  426. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  427. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  428. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  429. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  430. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  431. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  432. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  433. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  434. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  435. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  436. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  437. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  438. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  439. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  440. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  441. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  442. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  443. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  444. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  445. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  446. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  447. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  448. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  449. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  450. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  451. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  452. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  453. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  454. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  455. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  456. DIVSCC | (lo0 << 14) | in5 | (lo0 << 25)
  457. #endif
  458. ba,a    e22      
  459. i22: sub     %l4,%l1,%l1
  460. add     %l1,0x7f,%l1
  461. srl     %l0,1,%l0
  462. wr %l0,0,%y
  463. or %g0,0x0,%l0
  464. orcc %g0,0,%g0
  465. #if 0
  466. divscc %l0,%i4,%l0
  467. divscc %l0,%i4,%l0
  468. divscc %l0,%i4,%l0
  469. divscc %l0,%i4,%l0
  470. divscc %l0,%i4,%l0
  471. divscc %l0,%i4,%l0
  472. divscc %l0,%i4,%l0
  473. divscc %l0,%i4,%l0
  474. divscc %l0,%i4,%l0
  475. divscc %l0,%i4,%l0
  476. divscc %l0,%i4,%l0
  477. divscc %l0,%i4,%l0
  478. divscc %l0,%i4,%l0
  479. divscc %l0,%i4,%l0
  480. divscc %l0,%i4,%l0
  481. divscc %l0,%i4,%l0
  482. divscc %l0,%i4,%l0
  483. divscc %l0,%i4,%l0
  484. divscc %l0,%i4,%l0
  485. divscc %l0,%i4,%l0
  486. divscc %l0,%i4,%l0
  487. divscc %l0,%i4,%l0
  488. divscc %l0,%i4,%l0
  489. divscc %l0,%i4,%l0
  490. divscc %l0,%i4,%l0
  491. divscc %l0,%i4,%l0
  492. divscc %l0,%i4,%l0
  493. divscc %l0,%i4,%l0
  494. divscc %l0,%i4,%l0
  495. divscc %l0,%i4,%l0
  496. divscc %l0,%i4,%l0
  497. divscc %l0,%i4,%l0
  498. #else
  499. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  500. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  501. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  502. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  503. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  504. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  505. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  506. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  507. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  508. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  509. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  510. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  511. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  512. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  513. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  514. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  515. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  516. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  517. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  518. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  519. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  520. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  521. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  522. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  523. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  524. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  525. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  526. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  527. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  528. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  529. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  530. DIVSCC | (lo0 << 14) | in4 | (lo0 << 25)
  531. #endif
  532. e22: subcc   %l0,0,%l0
  533. ble     i23      
  534. NOP
  535. sll     %l0,1,%l0
  536. sub     %l1,1,%l1
  537. i23: sll     %l0,1,%l0
  538. srl     %l0,9,%l0
  539. sll     %l1,23,%l7
  540. or      %l0,%l7,%l0
  541. or      %l0,%i1,%i0
  542. D999: jmpl %i7+8,%g0
  543. restore %g0,0,%g0
  544. Dnan: ba      D999     
  545. sethi   %hi(0xffc00000),%i0
  546. ! .end