atanf_wmt.S 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. /*
  2. * Math library
  3. *
  4. * Copyright (C) 2016 Intel Corporation. All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * * Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * * Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in
  14. * the documentation and/or other materials provided with the
  15. * distribution.
  16. * * Neither the name of Intel Corporation nor the names of its
  17. * contributors may be used to endorse or promote products derived
  18. * from this software without specific prior written permission.
  19. *
  20. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  22. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  23. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  24. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  25. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  26. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  27. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  28. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  29. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  30. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. *
  32. *
  33. * Author Name <jingwei.zhang@intel.com>
  34. * History:
  35. * 03-14-2016 Initial version. numerics svn rev. 12864
  36. */
  37. .file "atanf_wmt.c"
  38. .text
  39. ..TXTST0:
  40. # -- Begin static_func
  41. .text
  42. .align 16,0x90
  43. static_func:
  44. ..B1.1:
  45. ..L1:
  46. call ..L2
  47. ..L2:
  48. popl %eax
  49. lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
  50. lea static_const_table@GOTOFF(%eax), %eax
  51. ret
  52. .align 16,0x90
  53. .type static_func,@function
  54. .size static_func,.-static_func
  55. .data
  56. # -- End static_func
  57. .text
  58. # -- Begin atanf
  59. .text
  60. .align 16,0x90
  61. .globl atanf
  62. atanf:
  63. # parameter 1: 8 + %ebp
  64. ..B2.1:
  65. ..L3:
  66. ..B2.2:
  67. pushl %ebp
  68. movl %esp, %ebp
  69. subl $104, %esp
  70. movl %ebx, 40(%esp)
  71. call static_func
  72. movl %eax, %ebx
  73. movss 112(%esp), %xmm0
  74. movl $-524288, %eax
  75. movd %eax, %xmm3
  76. movss 1376(%ebx), %xmm5
  77. movl $262144, %ecx
  78. movd %ecx, %xmm4
  79. movl 112(%esp), %edx
  80. andps %xmm0, %xmm3
  81. movss %xmm0, %xmm1
  82. orps %xmm4, %xmm3
  83. movl %edx, %eax
  84. andl $2146959360, %edx
  85. subl $1023410176, %edx
  86. cmpl $83361792, %edx
  87. ja .L_2TAG_PACKET_0.0.2
  88. mulss %xmm3, %xmm1
  89. subss %xmm3, %xmm0
  90. addss %xmm5, %xmm1
  91. divss %xmm1, %xmm0
  92. shrl $16, %edx
  93. addl $8, %edx
  94. movl $-1096111855, %ecx
  95. movd %ecx, %xmm4
  96. movss (%ebx,%edx), %xmm2
  97. movss 4(%ebx,%edx), %xmm3
  98. andl $-2147483648, %eax
  99. movd %eax, %xmm5
  100. xorps %xmm5, %xmm2
  101. xorps %xmm5, %xmm3
  102. movss %xmm2, %xmm5
  103. movss %xmm0, %xmm1
  104. mulss %xmm0, %xmm0
  105. mulss %xmm1, %xmm4
  106. addss %xmm1, %xmm2
  107. subss %xmm2, %xmm5
  108. mulss %xmm4, %xmm0
  109. addss %xmm5, %xmm1
  110. addss %xmm3, %xmm0
  111. addss %xmm1, %xmm0
  112. addss %xmm2, %xmm0
  113. movss %xmm0, (%esp)
  114. flds (%esp)
  115. jmp .L_2TAG_PACKET_1.0.2
  116. .L_2TAG_PACKET_0.0.2:
  117. addl $75497472, %edx
  118. cmpl $158859264, %edx
  119. ja .L_2TAG_PACKET_2.0.2
  120. movss 1360(%ebx), %xmm2
  121. movss 1364(%ebx), %xmm4
  122. mulss %xmm1, %xmm1
  123. mulss %xmm0, %xmm4
  124. mulss %xmm0, %xmm2
  125. movss %xmm1, %xmm5
  126. mulss %xmm1, %xmm1
  127. mulss %xmm5, %xmm4
  128. mulss %xmm2, %xmm1
  129. addss %xmm4, %xmm1
  130. addss %xmm1, %xmm0
  131. movss %xmm0, (%esp)
  132. flds (%esp)
  133. jmp .L_2TAG_PACKET_1.0.2
  134. .L_2TAG_PACKET_2.0.2:
  135. addl $947912704, %edx
  136. cmpl $1106771968, %edx
  137. jae .L_2TAG_PACKET_3.0.2
  138. movl $1065353217, %eax
  139. movd %xmm0, %ecx
  140. cmpl $8388608, %edx
  141. cmovb %ecx, %eax
  142. movd %eax, %xmm1
  143. mulss %xmm1, %xmm1
  144. movss %xmm0, (%esp)
  145. flds (%esp)
  146. jmp .L_2TAG_PACKET_1.0.2
  147. .L_2TAG_PACKET_3.0.2:
  148. cmpl $1602224128, %edx
  149. jae .L_2TAG_PACKET_4.0.2
  150. movl $-1082130432, %ecx
  151. movd %ecx, %xmm1
  152. divss %xmm0, %xmm1
  153. cmpl $1182793728, %edx
  154. jae .L_2TAG_PACKET_5.0.2
  155. movl $-1096111855, %ecx
  156. movd %ecx, %xmm4
  157. movss 1344(%ebx), %xmm2
  158. movss 1348(%ebx), %xmm3
  159. andl $-2147483648, %eax
  160. movd %eax, %xmm5
  161. xorps %xmm5, %xmm2
  162. xorps %xmm5, %xmm3
  163. movss %xmm2, %xmm5
  164. movss %xmm1, %xmm0
  165. mulss %xmm1, %xmm1
  166. mulss %xmm0, %xmm4
  167. addss %xmm0, %xmm2
  168. subss %xmm2, %xmm5
  169. mulss %xmm4, %xmm1
  170. addss %xmm5, %xmm0
  171. addss %xmm3, %xmm1
  172. addss %xmm1, %xmm0
  173. addss %xmm2, %xmm0
  174. movss %xmm0, (%esp)
  175. flds (%esp)
  176. jmp .L_2TAG_PACKET_1.0.2
  177. .L_2TAG_PACKET_5.0.2:
  178. movss 1344(%ebx), %xmm0
  179. movss 1348(%ebx), %xmm3
  180. andl $-2147483648, %eax
  181. movd %eax, %xmm5
  182. xorps %xmm5, %xmm0
  183. xorps %xmm5, %xmm3
  184. movss %xmm0, %xmm5
  185. addss %xmm1, %xmm0
  186. subss %xmm0, %xmm5
  187. addss %xmm5, %xmm1
  188. addss %xmm1, %xmm3
  189. addss %xmm3, %xmm0
  190. movss %xmm0, (%esp)
  191. flds (%esp)
  192. jmp .L_2TAG_PACKET_1.0.2
  193. .L_2TAG_PACKET_4.0.2:
  194. movss 1344(%ebx), %xmm2
  195. movss 1348(%ebx), %xmm3
  196. cmpl $2139029504, %edx
  197. ja .L_2TAG_PACKET_6.0.2
  198. .L_2TAG_PACKET_7.0.2:
  199. andl $-2147483648, %eax
  200. movd %eax, %xmm0
  201. orps %xmm0, %xmm2
  202. orps %xmm3, %xmm0
  203. addss %xmm2, %xmm0
  204. movss %xmm0, (%esp)
  205. flds (%esp)
  206. jmp .L_2TAG_PACKET_1.0.2
  207. .L_2TAG_PACKET_6.0.2:
  208. movd %xmm0, %edx
  209. andl $2147483647, %edx
  210. cmpl $2139095040, %edx
  211. je .L_2TAG_PACKET_7.0.2
  212. addss %xmm0, %xmm0
  213. movss %xmm0, (%esp)
  214. flds (%esp)
  215. .L_2TAG_PACKET_1.0.2:
  216. movl 40(%esp), %ebx
  217. movl %ebp, %esp
  218. popl %ebp
  219. ret
  220. ..B2.3:
  221. .align 16,0x90
  222. .type atanf,@function
  223. .size atanf,.-atanf
  224. .data
  225. # -- End atanf
  226. .section .rodata, "a"
  227. .align 16
  228. .align 16
  229. static_const_table:
  230. .long 0
  231. .long 0
  232. .long 1023669327
  233. .long 803928991
  234. .long 1024193038
  235. .long 2966692170
  236. .long 1024716678
  237. .long 811692700
  238. .long 1025240245
  239. .long 792964392
  240. .long 1025763734
  241. .long 802148141
  242. .long 1026287141
  243. .long 819324013
  244. .long 1026810463
  245. .long 790037051
  246. .long 1027333695
  247. .long 759154391
  248. .long 1027856833
  249. .long 817525057
  250. .long 1028379874
  251. .long 808527090
  252. .long 1028902813
  253. .long 821626264
  254. .long 1029425647
  255. .long 817580405
  256. .long 1029948372
  257. .long 2952445505
  258. .long 1030470983
  259. .long 801005003
  260. .long 1030993477
  261. .long 800387983
  262. .long 1031515850
  263. .long 2942256123
  264. .long 1032048979
  265. .long 2968250322
  266. .long 1032570964
  267. .long 822790803
  268. .long 1033092672
  269. .long 826289861
  270. .long 1033614088
  271. .long 2976224418
  272. .long 1034135194
  273. .long 824490938
  274. .long 1034655977
  275. .long 822527213
  276. .long 1035176421
  277. .long 784232806
  278. .long 1035696510
  279. .long 822531604
  280. .long 1036216230
  281. .long 2967672936
  282. .long 1036735564
  283. .long 826515440
  284. .long 1037254499
  285. .long 2944102134
  286. .long 1037773019
  287. .long 2977774463
  288. .long 1038291108
  289. .long 795957866
  290. .long 1038808753
  291. .long 2972700386
  292. .long 1039325938
  293. .long 2975253635
  294. .long 1039842648
  295. .long 807079588
  296. .long 1040402092
  297. .long 822355304
  298. .long 1040917290
  299. .long 805504040
  300. .long 1041431409
  301. .long 2978896586
  302. .long 1041944391
  303. .long 836680090
  304. .long 1042456182
  305. .long 826352980
  306. .long 1042966726
  307. .long 2973619487
  308. .long 1043475968
  309. .long 2937629464
  310. .long 1043983855
  311. .long 831159584
  312. .long 1044490335
  313. .long 820394738
  314. .long 1044995356
  315. .long 2965290852
  316. .long 1045498867
  317. .long 772017454
  318. .long 1046000819
  319. .long 2978687103
  320. .long 1046501162
  321. .long 836200518
  322. .long 1046999850
  323. .long 836883769
  324. .long 1047496836
  325. .long 826905524
  326. .long 1047992074
  327. .long 824423170
  328. .long 1048653779
  329. .long 2993658277
  330. .long 1049143506
  331. .long 2988293347
  332. .long 1049629355
  333. .long 838635411
  334. .long 1050111172
  335. .long 2981083232
  336. .long 1050588809
  337. .long 840069395
  338. .long 1051062131
  339. .long 2985487843
  340. .long 1051531009
  341. .long 2987007755
  342. .long 1051995325
  343. .long 2954909954
  344. .long 1052454971
  345. .long 2992105648
  346. .long 1052909846
  347. .long 2984512837
  348. .long 1053359860
  349. .long 2974535271
  350. .long 1053804931
  351. .long 834850816
  352. .long 1054244987
  353. .long 2990399399
  354. .long 1054679962
  355. .long 2986843574
  356. .long 1055109800
  357. .long 841668384
  358. .long 1055534454
  359. .long 840878179
  360. .long 1056161628
  361. .long 2959648204
  362. .long 1056972004
  363. .long 2999182783
  364. .long 1057370275
  365. .long 2987693957
  366. .long 1057757908
  367. .long 848029633
  368. .long 1058134927
  369. .long 833824667
  370. .long 1058501396
  371. .long 838916473
  372. .long 1058857417
  373. .long 2982869562
  374. .long 1059203123
  375. .long 2987447445
  376. .long 1059538675
  377. .long 2986943103
  378. .long 1059864257
  379. .long 2962018373
  380. .long 1060180073
  381. .long 3001690183
  382. .long 1060486341
  383. .long 3000978470
  384. .long 1060783292
  385. .long 855353569
  386. .long 1061071169
  387. .long 847903241
  388. .long 1061350219
  389. .long 2995336148
  390. .long 1061620693
  391. .long 848940038
  392. .long 1062010885
  393. .long 848518105
  394. .long 1062503512
  395. .long 2989792343
  396. .long 1062966414
  397. .long 2998000194
  398. .long 1063401558
  399. .long 2966602495
  400. .long 1063810833
  401. .long 841421013
  402. .long 1064196033
  403. .long 853285487
  404. .long 1064558850
  405. .long 831341538
  406. .long 1064900868
  407. .long 2999260393
  408. .long 1065223564
  409. .long 3001104089
  410. .long 1065440763
  411. .long 856880849
  412. .long 1065584798
  413. .long 852830020
  414. .long 1065721082
  415. .long 862757435
  416. .long 1065850159
  417. .long 2998927867
  418. .long 1065972528
  419. .long 2998512290
  420. .long 1066088651
  421. .long 2998663603
  422. .long 1066198953
  423. .long 2996780932
  424. .long 1066354340
  425. .long 3007554211
  426. .long 1066544552
  427. .long 2996943326
  428. .long 1066717600
  429. .long 3000009859
  430. .long 1066875577
  431. .long 856175525
  432. .long 1067020272
  433. .long 836800017
  434. .long 1067153216
  435. .long 3008748444
  436. .long 1067275724
  437. .long 851983949
  438. .long 1067388933
  439. .long 862585050
  440. .long 1067493827
  441. .long 3009301766
  442. .long 1067591258
  443. .long 2988483069
  444. .long 1067681973
  445. .long 3005223458
  446. .long 1067766623
  447. .long 839061141
  448. .long 1067845782
  449. .long 2995523700
  450. .long 1067919954
  451. .long 2995663457
  452. .long 1067989585
  453. .long 858133164
  454. .long 1068055072
  455. .long 829335339
  456. .long 1068146290
  457. .long 856294518
  458. .long 1068256389
  459. .long 3003850806
  460. .long 1068355146
  461. .long 856998103
  462. .long 1068444206
  463. .long 2999569255
  464. .long 1068524912
  465. .long 3011255227
  466. .long 1068598373
  467. .long 841513866
  468. .long 1068665514
  469. .long 841710807
  470. .long 1068727109
  471. .long 2949159239
  472. .long 1068783812
  473. .long 2995542644
  474. .long 1068836179
  475. .long 3007665083
  476. .long 1068884685
  477. .long 3006087365
  478. .long 1068929739
  479. .long 2996180184
  480. .long 1068971695
  481. .long 3006313179
  482. .long 1069010859
  483. .long 849476222
  484. .long 1069047500
  485. .long 860722755
  486. .long 1069081853
  487. .long 859062603
  488. .long 1069129538
  489. .long 2979745798
  490. .long 1069186846
  491. .long 842801502
  492. .long 1069238035
  493. .long 3010794384
  494. .long 1069284031
  495. .long 3010162926
  496. .long 1069325584
  497. .long 3005589807
  498. .long 1069363306
  499. .long 853875835
  500. .long 1069397703
  501. .long 851842476
  502. .long 1069429195
  503. .long 3001807968
  504. .long 1069458133
  505. .long 859424355
  506. .long 1069484817
  507. .long 3004202910
  508. .long 1069509498
  509. .long 843503196
  510. .long 1069532394
  511. .long 856475636
  512. .long 1069553692
  513. .long 2995114457
  514. .long 1069573552
  515. .long 860725119
  516. .long 1069592116
  517. .long 859745384
  518. .long 1069609507
  519. .long 3009201804
  520. .long 1069633623
  521. .long 855498560
  522. .long 1069662574
  523. .long 858167444
  524. .long 1069688405
  525. .long 853306415
  526. .long 1069711594
  527. .long 846705105
  528. .long 1069732526
  529. .long 858976312
  530. .long 1069751516
  531. .long 2999172562
  532. .long 1069768821
  533. .long 2999539371
  534. .long 1069784656
  535. .long 2998679696
  536. .long 1069799200
  537. .long 861304267
  538. .long 1069812606
  539. .long 843012447
  540. .long 1069825002
  541. .long 3010989671
  542. .long 1069836497
  543. .long 3005173143
  544. .long 1069847186
  545. .long 853102954
  546. .long 1069857152
  547. .long 2993551140
  548. .long 1069866465
  549. .long 3000116992
  550. .long 1069875187
  551. .long 827148142
  552. .long 0
  553. .long 0
  554. .long 0
  555. .long 1072693248
  556. .long 0
  557. .long 0
  558. .long 0
  559. .long 32768
  560. .long 0
  561. .long 0
  562. .long 1431655765
  563. .long 3218429269
  564. .long 0
  565. .long 0
  566. .long 1070141402
  567. .long 866263400
  568. .long 0
  569. .long 0
  570. .long 1045220557
  571. .long 3198855851
  572. .long 0
  573. .long 0
  574. .long 1065353216
  575. .long 0
  576. .long 0
  577. .long 0
  578. .long 3198855441
  579. .long 0
  580. .long 0
  581. .long 0
  582. .long 2147483647
  583. .long 0
  584. .long 0
  585. .long 0
  586. .long 2146959360
  587. .long 0
  588. .long 0
  589. .long 0
  590. .type static_const_table,@object
  591. .size static_const_table,1440
  592. .data
  593. .section .note.GNU-stack, ""
  594. # End