fma.S 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208
  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 "fma.c"
  38. .text
  39. ..TXTST0:
  40. # -- Begin fma
  41. .text
  42. .align 16,0x90
  43. .globl fma
  44. fma:
  45. # parameter 1: 8 + %ebp
  46. # parameter 2: 16 + %ebp
  47. # parameter 3: 24 + %ebp
  48. ..B1.1:
  49. ..L1:
  50. pushl %ebp
  51. movl %esp, %ebp
  52. andl $-16, %esp
  53. pushl %esi
  54. pushl %edi
  55. pushl %ebx
  56. subl $84, %esp
  57. ..B1.2:
  58. fnstcw 80(%esp)
  59. ..B1.3:
  60. movl 12(%ebp), %esi
  61. movl 16(%ebp), %ecx
  62. movl 24(%ebp), %eax
  63. movzwl 80(%esp), %edx
  64. movl %esi, 60(%esp)
  65. andl $2147483647, %esi
  66. andl $3072, %edx
  67. movl %edx, 56(%esp)
  68. movl 20(%ebp), %edx
  69. movl %edx, %edi
  70. movl %ecx, 76(%esp)
  71. andl $2147483647, %edi
  72. movl 28(%ebp), %ecx
  73. movl %eax, 72(%esp)
  74. movl %esi, %eax
  75. movl 8(%ebp), %ebx
  76. movl %ecx, 68(%esp)
  77. andl $2147483647, %ecx
  78. orl %ebx, %eax
  79. call ..L2
  80. ..L2:
  81. popl %eax
  82. lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
  83. movl %eax, 64(%esp)
  84. jne ..B1.4
  85. ..B1.130:
  86. cmpl $2146435072, %esi
  87. ja ..B1.8
  88. jmp ..B1.6
  89. ..B1.4:
  90. cmpl $2146435072, %esi
  91. jb ..B1.9
  92. ..B1.5:
  93. ja ..B1.8
  94. ..B1.6:
  95. jne ..B1.134
  96. ..B1.7:
  97. testl %ebx, %ebx
  98. jne ..B1.8
  99. ..B1.133:
  100. cmpl $2146435072, %edi
  101. ja ..B1.15
  102. jmp ..B1.13
  103. ..B1.8:
  104. fldl 8(%ebp)
  105. faddl 16(%ebp)
  106. fmull 24(%ebp)
  107. addl $84, %esp
  108. popl %ebx
  109. popl %edi
  110. popl %esi
  111. movl %ebp, %esp
  112. popl %ebp
  113. ret
  114. ..B1.9:
  115. lea -1072693248(%esi), %eax
  116. orl %ebx, %eax
  117. je ..B1.133
  118. ..B1.10:
  119. movl %edi, %eax
  120. orl 76(%esp), %eax
  121. je ..B1.133
  122. ..B1.11:
  123. cmpl $2146435072, %edi
  124. jae ..B1.12
  125. jmp ..B1.16
  126. ..B1.134:
  127. cmpl $2146435072, %edi
  128. ..B1.12:
  129. ja ..B1.15
  130. ..B1.13:
  131. jne ..B1.138
  132. ..B1.14:
  133. cmpl $0, 76(%esp)
  134. jne ..B1.15
  135. ..B1.137:
  136. cmpl $2146435072, %ecx
  137. ja ..B1.22
  138. jmp ..B1.20
  139. ..B1.15:
  140. fldl 16(%ebp)
  141. faddl 24(%ebp)
  142. addl $84, %esp
  143. popl %ebx
  144. popl %edi
  145. popl %esi
  146. movl %ebp, %esp
  147. popl %ebp
  148. ret
  149. ..B1.16:
  150. lea -1072693248(%edi), %eax
  151. orl 76(%esp), %eax
  152. je ..B1.137
  153. ..B1.17:
  154. movl %ecx, %eax
  155. orl 72(%esp), %eax
  156. je ..B1.137
  157. ..B1.18:
  158. cmpl $2146435072, %ecx
  159. jae ..B1.19
  160. jmp ..B1.28
  161. ..B1.138:
  162. cmpl $2146435072, %ecx
  163. ..B1.19:
  164. ja ..B1.22
  165. ..B1.20:
  166. jne ..B1.23
  167. ..B1.21:
  168. cmpl $0, 72(%esp)
  169. je ..B1.23
  170. ..B1.22:
  171. fldl 24(%ebp)
  172. movl 64(%esp), %eax
  173. fmull _ones@GOTOFF(%eax)
  174. addl $84, %esp
  175. popl %ebx
  176. popl %edi
  177. popl %esi
  178. movl %ebp, %esp
  179. popl %ebp
  180. ret
  181. ..B1.23:
  182. cmpl $2146435072, %esi
  183. jae ..B1.27
  184. ..B1.24:
  185. cmpl $2146435072, %edi
  186. jae ..B1.27
  187. ..B1.25:
  188. cmpl $2146435072, %ecx
  189. jb ..B1.27
  190. ..B1.26:
  191. fldl 24(%ebp)
  192. addl $84, %esp
  193. popl %ebx
  194. popl %edi
  195. popl %esi
  196. movl %ebp, %esp
  197. popl %ebp
  198. ret
  199. ..B1.27:
  200. fldl 8(%ebp)
  201. fmull 16(%ebp)
  202. faddl 24(%ebp)
  203. addl $84, %esp
  204. popl %ebx
  205. popl %edi
  206. popl %esi
  207. movl %ebp, %esp
  208. popl %ebp
  209. ret
  210. ..B1.28:
  211. cmpl $1048576, %esi
  212. jae ..B1.30
  213. ..B1.29:
  214. movl 60(%esp), %ebx
  215. movl %ebx, %eax
  216. shrl $31, %eax
  217. orl $1072693248, %ebx
  218. movl 64(%esp), %esi
  219. movl %ebx, 12(%ebp)
  220. fldl 8(%ebp)
  221. fsubl _ones@GOTOFF(%esi,%eax,8)
  222. fstpl 8(%ebp)
  223. movl 12(%ebp), %esi
  224. movl %esi, 60(%esp)
  225. andl $2147483647, %esi
  226. movl %esi, %eax
  227. shrl $20, %eax
  228. addl $-1022, %eax
  229. movl 8(%ebp), %ebx
  230. movl %eax, 4(%esp)
  231. jmp ..B1.31
  232. ..B1.30:
  233. movl %esi, %eax
  234. shrl $20, %eax
  235. movl %eax, 4(%esp)
  236. ..B1.31:
  237. cmpl $1048576, %edi
  238. jae ..B1.33
  239. ..B1.32:
  240. movl %edx, %edi
  241. orl $1072693248, %edx
  242. shrl $31, %edi
  243. movl %edx, 20(%ebp)
  244. fldl 16(%ebp)
  245. movl 64(%esp), %edx
  246. fsubl _ones@GOTOFF(%edx,%edi,8)
  247. fstpl 16(%ebp)
  248. movl 20(%ebp), %edx
  249. movl %edx, %edi
  250. movl 16(%ebp), %eax
  251. andl $2147483647, %edi
  252. movl %eax, 76(%esp)
  253. movl %edi, %eax
  254. shrl $20, %eax
  255. addl $-1022, %eax
  256. movl %eax, 16(%esp)
  257. jmp ..B1.34
  258. ..B1.33:
  259. movl %edi, %eax
  260. shrl $20, %eax
  261. movl %eax, 16(%esp)
  262. ..B1.34:
  263. cmpl $1048576, %ecx
  264. jae ..B1.36
  265. ..B1.35:
  266. movl 68(%esp), %eax
  267. movl %eax, %ecx
  268. shrl $31, %ecx
  269. orl $1072693248, %eax
  270. movl %eax, 28(%ebp)
  271. fldl 24(%ebp)
  272. movl 64(%esp), %eax
  273. fsubl _ones@GOTOFF(%eax,%ecx,8)
  274. fstpl 24(%ebp)
  275. movl 28(%ebp), %ecx
  276. movl 24(%ebp), %eax
  277. movl %ecx, 68(%esp)
  278. andl $2147483647, %ecx
  279. movl %eax, 72(%esp)
  280. movl %ecx, %eax
  281. shrl $20, %eax
  282. addl $-1022, %eax
  283. movl %eax, (%esp)
  284. jmp ..B1.37
  285. ..B1.36:
  286. movl %ecx, %eax
  287. shrl $20, %eax
  288. movl %eax, (%esp)
  289. ..B1.37:
  290. andl $1048575, %ecx
  291. movl %ebx, %eax
  292. orl $1048576, %ecx
  293. andl $1048575, %esi
  294. movl %ecx, 20(%esp)
  295. orl $1048576, %esi
  296. movl 60(%esp), %ecx
  297. andl $1048575, %edi
  298. xorl %edx, %ecx
  299. orl $1048576, %edi
  300. andl $-2147483648, %ecx
  301. movl %ecx, 60(%esp)
  302. movl 4(%esp), %edx
  303. movl 16(%esp), %ecx
  304. lea -1023(%edx,%ecx), %edx
  305. movl 76(%esp), %ecx
  306. movl %edx, 32(%esp)
  307. mull %ecx
  308. movl %eax, 44(%esp)
  309. movl %ecx, %eax
  310. movl %edx, 24(%esp)
  311. mull %esi
  312. movl %eax, %ecx
  313. movl %ebx, %eax
  314. movl %edx, 28(%esp)
  315. mull %edi
  316. movl %eax, 52(%esp)
  317. movl %esi, %eax
  318. movl %edx, %ebx
  319. xorl %esi, %esi
  320. mull %edi
  321. addl 52(%esp), %ecx
  322. movl 28(%esp), %edi
  323. adcl $0, %esi
  324. addl 24(%esp), %ecx
  325. movl %ecx, 48(%esp)
  326. adcl $0, %esi
  327. addl %eax, %esi
  328. movl $0, %eax
  329. movl 20(%esp), %ecx
  330. adcl $0, %eax
  331. addl %ebx, %edi
  332. movl $0, %ebx
  333. adcl $0, %ebx
  334. addl %edi, %esi
  335. movl %esi, 40(%esp)
  336. adcl %ebx, %eax
  337. addl %eax, %edx
  338. movl %edx, 36(%esp)
  339. testl $512, %edx
  340. je ..B1.39
  341. ..B1.38:
  342. movl %esi, %eax
  343. shll $11, %edx
  344. shrl $21, %eax
  345. orl %eax, %edx
  346. movl %edx, 36(%esp)
  347. movl 48(%esp), %eax
  348. movl %eax, %ebx
  349. movl 44(%esp), %edx
  350. movl %edx, %edi
  351. shll $11, %esi
  352. shrl $21, %ebx
  353. shll $11, %eax
  354. orl %ebx, %esi
  355. shrl $21, %edi
  356. shll $11, %edx
  357. orl %edi, %eax
  358. incl 32(%esp)
  359. movl %esi, 40(%esp)
  360. movl %eax, 48(%esp)
  361. movl %edx, 44(%esp)
  362. jmp ..B1.40
  363. ..B1.39:
  364. movl %esi, %eax
  365. shll $12, %edx
  366. shrl $20, %eax
  367. orl %eax, %edx
  368. movl %edx, 36(%esp)
  369. movl 48(%esp), %eax
  370. movl %eax, %ebx
  371. movl 44(%esp), %edx
  372. movl %edx, %edi
  373. shll $12, %esi
  374. shrl $20, %ebx
  375. shll $12, %eax
  376. orl %ebx, %esi
  377. shrl $20, %edi
  378. shll $12, %edx
  379. orl %edi, %eax
  380. movl %esi, 40(%esp)
  381. movl %eax, 48(%esp)
  382. movl %edx, 44(%esp)
  383. ..B1.40:
  384. movl 32(%esp), %eax
  385. cmpl (%esp), %eax
  386. jg ..B1.45
  387. ..B1.41:
  388. cmpl (%esp), %eax
  389. jne ..B1.46
  390. ..B1.42:
  391. cmpl 36(%esp), %ecx
  392. jb ..B1.45
  393. ..B1.43:
  394. jne ..B1.46
  395. ..B1.44:
  396. movl 72(%esp), %eax
  397. cmpl 40(%esp), %eax
  398. ja ..B1.46
  399. ..B1.45:
  400. movl 72(%esp), %eax
  401. movl 32(%esp), %edx
  402. movl 68(%esp), %ebx
  403. movl %eax, 24(%esp)
  404. andl $-2147483648, %ebx
  405. xorl %eax, %eax
  406. subl (%esp), %edx
  407. movl %ecx, 20(%esp)
  408. movl %ebx, 16(%esp)
  409. movl %eax, 28(%esp)
  410. jmp ..B1.47
  411. ..B1.46:
  412. movl 36(%esp), %ebx
  413. movl %ebx, 20(%esp)
  414. movl 72(%esp), %ebx
  415. movl %ebx, 40(%esp)
  416. movl (%esp), %eax
  417. movl %eax, %edx
  418. movl 60(%esp), %ebx
  419. movl 48(%esp), %edi
  420. movl %ebx, 16(%esp)
  421. subl 32(%esp), %edx
  422. movl 68(%esp), %ebx
  423. movl %eax, 32(%esp)
  424. andl $-2147483648, %ebx
  425. movl 44(%esp), %eax
  426. movl %ebx, 60(%esp)
  427. xorl %ebx, %ebx
  428. movl %esi, 24(%esp)
  429. movl %edi, 28(%esp)
  430. movl %ecx, 36(%esp)
  431. movl %ebx, 44(%esp)
  432. movl %ebx, 48(%esp)
  433. ..B1.47:
  434. testl %edx, %edx
  435. je ..B1.57
  436. ..B1.48:
  437. cmpl $32, %edx
  438. jge ..B1.50
  439. ..B1.49:
  440. movl %edx, %esi
  441. movl %edx, %ecx
  442. negl %esi
  443. movl %eax, %ebx
  444. movl %esi, (%esp)
  445. movl $-1, %esi
  446. shrl %cl, %esi
  447. movl (%esp), %ecx
  448. notl %esi
  449. shll %cl, %ebx
  450. movl 28(%esp), %edi
  451. andl %esi, %ebx
  452. movl %ebx, 52(%esp)
  453. movl %edi, %ebx
  454. shll %cl, %ebx
  455. movl %edx, %ecx
  456. shrl %cl, %eax
  457. andl %esi, %ebx
  458. orl %ebx, %eax
  459. movl %eax, 4(%esp)
  460. movl 24(%esp), %eax
  461. movl %eax, %ebx
  462. movl (%esp), %ecx
  463. shll %cl, %ebx
  464. movl %edx, %ecx
  465. shrl %cl, %edi
  466. andl %esi, %ebx
  467. orl %ebx, %edi
  468. movl 20(%esp), %ebx
  469. movl %edi, 28(%esp)
  470. movl %ebx, %edi
  471. movl (%esp), %ecx
  472. shll %cl, %edi
  473. movl %edx, %ecx
  474. shrl %cl, %eax
  475. andl %esi, %edi
  476. orl %edi, %eax
  477. movl %eax, 24(%esp)
  478. shrl %cl, %ebx
  479. movl %ebx, 20(%esp)
  480. movl 4(%esp), %eax
  481. jmp ..B1.58
  482. ..B1.50:
  483. cmpl $64, %edx
  484. jge ..B1.52
  485. ..B1.51:
  486. movl %edx, %esi
  487. movl %edx, %ecx
  488. movl $-1, %edi
  489. negl %esi
  490. movl %esi, (%esp)
  491. testl %eax, %eax
  492. movl 28(%esp), %ebx
  493. movl $0, %eax
  494. setne %al
  495. shrl %cl, %edi
  496. movl (%esp), %ecx
  497. notl %edi
  498. shll %cl, %ebx
  499. andl %edi, %ebx
  500. movl 24(%esp), %esi
  501. orl %eax, %ebx
  502. movl %esi, %eax
  503. shll %cl, %eax
  504. movl %edx, %ecx
  505. movl %ebx, 52(%esp)
  506. andl %edi, %eax
  507. movl 28(%esp), %ebx
  508. shrl %cl, %ebx
  509. movl (%esp), %ecx
  510. orl %ebx, %eax
  511. movl 20(%esp), %ebx
  512. shll %cl, %ebx
  513. movl %edx, %ecx
  514. shrl %cl, %esi
  515. andl %edi, %ebx
  516. orl %esi, %ebx
  517. movl %ebx, 28(%esp)
  518. movl 20(%esp), %ebx
  519. shrl %cl, %ebx
  520. movl %ebx, 24(%esp)
  521. movl $0, 20(%esp)
  522. jmp ..B1.58
  523. ..B1.52:
  524. cmpl $96, %edx
  525. jge ..B1.54
  526. ..B1.53:
  527. movl %edx, %edi
  528. movl %edx, %ecx
  529. movl $-1, %esi
  530. negl %edi
  531. movl %edi, (%esp)
  532. shrl %cl, %esi
  533. orl 28(%esp), %eax
  534. notl %esi
  535. movl (%esp), %ecx
  536. movl $0, %eax
  537. movl 24(%esp), %ebx
  538. setne %al
  539. shll %cl, %ebx
  540. andl %esi, %ebx
  541. orl %eax, %ebx
  542. movl %ebx, 52(%esp)
  543. movl 20(%esp), %ebx
  544. movl %ebx, %eax
  545. shll %cl, %eax
  546. movl %edx, %ecx
  547. andl %esi, %eax
  548. xorl %edx, %edx
  549. movl 24(%esp), %esi
  550. shrl %cl, %esi
  551. shrl %cl, %ebx
  552. orl %esi, %eax
  553. movl %ebx, 28(%esp)
  554. movl %edx, 24(%esp)
  555. movl %edx, 20(%esp)
  556. jmp ..B1.58
  557. ..B1.54:
  558. cmpl $128, %edx
  559. jge ..B1.56
  560. ..B1.55:
  561. movl %edx, %ebx
  562. movl %edx, %ecx
  563. negl %ebx
  564. movl $-1, %edi
  565. movl 20(%esp), %esi
  566. shrl %cl, %edi
  567. movl %ebx, %ecx
  568. movl %esi, %ebx
  569. notl %edi
  570. shll %cl, %ebx
  571. movl 24(%esp), %ecx
  572. andl %edi, %ebx
  573. orl 28(%esp), %ecx
  574. orl %eax, %ecx
  575. movl $0, %eax
  576. movl %edx, %ecx
  577. setne %al
  578. xorl %edx, %edx
  579. orl %eax, %ebx
  580. movl %esi, %eax
  581. movl %ebx, 52(%esp)
  582. shrl %cl, %eax
  583. movl %edx, 28(%esp)
  584. movl %edx, 24(%esp)
  585. movl %edx, 20(%esp)
  586. jmp ..B1.58
  587. ..B1.56:
  588. movl 20(%esp), %edi
  589. orl 24(%esp), %edi
  590. orl 28(%esp), %edi
  591. orl %eax, %edi
  592. movl $0, %eax
  593. setne %al
  594. movl %eax, 52(%esp)
  595. xorl %eax, %eax
  596. movl %eax, 28(%esp)
  597. movl %eax, 24(%esp)
  598. movl %eax, 20(%esp)
  599. jmp ..B1.58
  600. ..B1.57:
  601. movl $0, 52(%esp)
  602. ..B1.58:
  603. movl 60(%esp), %ecx
  604. cmpl 16(%esp), %ecx
  605. jne ..B1.62
  606. ..B1.59:
  607. movl 44(%esp), %esi
  608. addl %esi, %eax
  609. xorl %ecx, %ecx
  610. cmpl %esi, %eax
  611. movl 48(%esp), %ebx
  612. setb %cl
  613. xorl %edi, %edi
  614. addl 28(%esp), %ebx
  615. adcl $0, %edi
  616. addl %ecx, %ebx
  617. movl 40(%esp), %ecx
  618. adcl $0, %edi
  619. addl 24(%esp), %ecx
  620. movl %ebx, 48(%esp)
  621. movl $0, %ebx
  622. adcl $0, %ebx
  623. addl %edi, %ecx
  624. movl %ecx, 40(%esp)
  625. movl 36(%esp), %ecx
  626. adcl $0, %ebx
  627. addl 20(%esp), %ecx
  628. addl %ebx, %ecx
  629. movl %ecx, 36(%esp)
  630. testl $2097152, %ecx
  631. je ..B1.61
  632. ..B1.60:
  633. orl 48(%esp), %eax
  634. orl 52(%esp), %eax
  635. movl 40(%esp), %esi
  636. movl %esi, %edx
  637. movl %ecx, %ebx
  638. movl $0, %eax
  639. movl %ebx, %ecx
  640. setne %al
  641. shll $31, %edx
  642. shll $31, %ecx
  643. orl %eax, %edx
  644. shrl $1, %esi
  645. shrl $1, %ebx
  646. orl %ecx, %esi
  647. andl $1048575, %ebx
  648. incl 32(%esp)
  649. movl %edx, 20(%esp)
  650. movl %esi, 40(%esp)
  651. movl %ebx, 36(%esp)
  652. jmp ..B1.84
  653. ..B1.61:
  654. orl 52(%esp), %eax
  655. movl $0, %eax
  656. setne %al
  657. orl 48(%esp), %eax
  658. andl $1048575, 36(%esp)
  659. movl %eax, 20(%esp)
  660. jmp ..B1.84
  661. ..B1.62:
  662. xorl %ebx, %ebx
  663. negl 52(%esp)
  664. movl 44(%esp), %esi
  665. setne %bl
  666. xorl %edi, %edi
  667. subl %eax, %esi
  668. movl $0, %eax
  669. sbbl $0, %eax
  670. subl %ebx, %esi
  671. movl 48(%esp), %ecx
  672. sbbl $0, %eax
  673. subl 28(%esp), %ecx
  674. cltd
  675. sbbl $0, %edi
  676. addl %eax, %ecx
  677. movl 40(%esp), %ebx
  678. adcl %edx, %edi
  679. subl 24(%esp), %ebx
  680. movl %edi, %eax
  681. movl %esi, 44(%esp)
  682. movl $0, %esi
  683. cltd
  684. sbbl $0, %esi
  685. addl %ebx, %edi
  686. movl 36(%esp), %eax
  687. adcl %edx, %esi
  688. subl 20(%esp), %eax
  689. movl %ecx, 48(%esp)
  690. addl %esi, %eax
  691. movl %edi, 16(%esp)
  692. movl %eax, 36(%esp)
  693. je ..B1.64
  694. ..B1.63:
  695. shll $11, %eax
  696. movl $0, 4(%esp)
  697. jmp ..B1.72
  698. ..B1.64:
  699. cmpl $0, 16(%esp)
  700. je ..B1.66
  701. ..B1.65:
  702. movl %edi, %eax
  703. movl $21, 4(%esp)
  704. jmp ..B1.72
  705. ..B1.66:
  706. cmpl $0, 48(%esp)
  707. je ..B1.68
  708. ..B1.67:
  709. movl %ecx, %eax
  710. movl $53, 4(%esp)
  711. jmp ..B1.72
  712. ..B1.68:
  713. cmpl $0, 44(%esp)
  714. je ..B1.70
  715. ..B1.69:
  716. movl 44(%esp), %eax
  717. movl $85, 4(%esp)
  718. jmp ..B1.72
  719. ..B1.70:
  720. cmpl $0, 52(%esp)
  721. je ..B1.123
  722. ..B1.71:
  723. movl 52(%esp), %eax
  724. movl $117, 4(%esp)
  725. ..B1.72:
  726. testl $-2147483648, %eax
  727. jne ..B1.76
  728. ..B1.73:
  729. movl 4(%esp), %edx
  730. ..B1.74:
  731. addl %eax, %eax
  732. incl %edx
  733. testl $-2147483648, %eax
  734. je ..B1.74
  735. ..B1.75:
  736. movl %edx, 4(%esp)
  737. ..B1.76:
  738. cmpl $32, 4(%esp)
  739. jge ..B1.78
  740. ..B1.77:
  741. movl 4(%esp), %ebx
  742. movl %ebx, %esi
  743. movl 44(%esp), %eax
  744. negl %esi
  745. orl 52(%esp), %eax
  746. movl %ebx, %ecx
  747. movl %esi, (%esp)
  748. movl $0, %eax
  749. movl 48(%esp), %esi
  750. movl %esi, %edx
  751. setne %al
  752. movl $1, %edi
  753. shll %cl, %edx
  754. orl %eax, %edx
  755. movl %edx, 20(%esp)
  756. movl 16(%esp), %edx
  757. movl %edx, %eax
  758. shll %cl, %edi
  759. shll %cl, %eax
  760. decl %edi
  761. movl (%esp), %ecx
  762. shrl %cl, %esi
  763. movl %ebx, %ecx
  764. andl %edi, %esi
  765. orl %esi, %eax
  766. movl %eax, 40(%esp)
  767. movl 36(%esp), %eax
  768. shll %cl, %eax
  769. movl (%esp), %ecx
  770. shrl %cl, %edx
  771. andl %edi, %edx
  772. orl %edx, %eax
  773. andl $1048575, %eax
  774. movl %eax, 36(%esp)
  775. jmp ..B1.83
  776. ..B1.78:
  777. cmpl $64, 4(%esp)
  778. jge ..B1.80
  779. ..B1.79:
  780. movl 4(%esp), %ebx
  781. movl %ebx, %esi
  782. cmpl $0, 52(%esp)
  783. movl %ebx, %ecx
  784. movl $0, %eax
  785. setne %al
  786. movl $1, %edi
  787. negl %esi
  788. movl %esi, (%esp)
  789. movl 44(%esp), %esi
  790. movl %esi, %edx
  791. shll %cl, %edx
  792. orl %eax, %edx
  793. movl %edx, 20(%esp)
  794. movl 48(%esp), %edx
  795. movl %edx, %eax
  796. shll %cl, %edi
  797. shll %cl, %eax
  798. decl %edi
  799. movl (%esp), %ecx
  800. shrl %cl, %esi
  801. movl %ebx, %ecx
  802. andl %edi, %esi
  803. orl %esi, %eax
  804. movl %eax, 40(%esp)
  805. movl 16(%esp), %eax
  806. shll %cl, %eax
  807. movl (%esp), %ecx
  808. shrl %cl, %edx
  809. andl %edi, %edx
  810. orl %edx, %eax
  811. andl $1048575, %eax
  812. movl %eax, 36(%esp)
  813. jmp ..B1.83
  814. ..B1.80:
  815. cmpl $96, 4(%esp)
  816. jge ..B1.82
  817. ..B1.81:
  818. movl 4(%esp), %edi
  819. movl %edi, %ebx
  820. negl %ebx
  821. movl %edi, %ecx
  822. movl %ebx, (%esp)
  823. movl $1, %ebx
  824. movl 44(%esp), %esi
  825. movl %esi, %edx
  826. movl 52(%esp), %eax
  827. shll %cl, %ebx
  828. shll %cl, %eax
  829. decl %ebx
  830. shll %cl, %edx
  831. movl (%esp), %ecx
  832. movl %eax, 20(%esp)
  833. shrl %cl, %eax
  834. movl %edi, %ecx
  835. andl %ebx, %eax
  836. orl %eax, %edx
  837. movl %edx, 40(%esp)
  838. movl 48(%esp), %edx
  839. shll %cl, %edx
  840. movl (%esp), %ecx
  841. shrl %cl, %esi
  842. andl %ebx, %esi
  843. orl %esi, %edx
  844. andl $1048575, %edx
  845. movl %edx, 36(%esp)
  846. jmp ..B1.83
  847. ..B1.82:
  848. movl 4(%esp), %ecx
  849. xorl %eax, %eax
  850. movl 44(%esp), %edx
  851. shll %cl, %edx
  852. andl $1048575, %edx
  853. cmpl $128, %ecx
  854. movl %eax, 20(%esp)
  855. jl ..L3
  856. movl $0, %edx
  857. ..L3:
  858. movl %eax, 40(%esp)
  859. movl %edx, 36(%esp)
  860. ..B1.83:
  861. movl 32(%esp), %eax
  862. subl 4(%esp), %eax
  863. movl %eax, 32(%esp)
  864. ..B1.84:
  865. movl 32(%esp), %eax
  866. lea -1(%eax), %edx
  867. cmpl $2046, %edx
  868. jb ..B1.92
  869. ..B1.85:
  870. cmpl $2047, 32(%esp)
  871. jge ..B1.91
  872. ..B1.86:
  873. negl %eax
  874. incl %eax
  875. orl $1048576, 36(%esp)
  876. movl %eax, 32(%esp)
  877. cmpl $32, %eax
  878. jge ..B1.88
  879. ..B1.87:
  880. movl %eax, %ecx
  881. movl %ecx, %edx
  882. negl %edx
  883. movl $-1, %edi
  884. movl 20(%esp), %eax
  885. movl %eax, %ebx
  886. shrl %cl, %edi
  887. movl %edx, %ecx
  888. movl 40(%esp), %esi
  889. notl %edi
  890. shll %cl, %esi
  891. movl 32(%esp), %ecx
  892. andl %edi, %esi
  893. shrl %cl, %ebx
  894. movl %edx, %ecx
  895. shll %cl, %eax
  896. orl %ebx, %esi
  897. testl %edi, %eax
  898. movl $0, %eax
  899. setne %al
  900. orl %esi, %eax
  901. movl %eax, 20(%esp)
  902. movl 36(%esp), %eax
  903. movl %eax, %esi
  904. shll %cl, %esi
  905. movl 32(%esp), %ecx
  906. andl %edi, %esi
  907. movl 40(%esp), %edi
  908. shrl %cl, %edi
  909. orl %esi, %edi
  910. movl %edi, 40(%esp)
  911. shrl %cl, %eax
  912. jmp ..B1.93
  913. ..B1.88:
  914. xorl %eax, %eax
  915. cmpl $53, 32(%esp)
  916. jg ..B1.90
  917. ..B1.89:
  918. movl %eax, (%esp)
  919. movl 32(%esp), %eax
  920. movl %eax, %edx
  921. negl %edx
  922. movl %eax, %ecx
  923. movl %edx, 4(%esp)
  924. movl $-1, %edx
  925. shrl %cl, %edx
  926. movl 4(%esp), %ecx
  927. notl %edx
  928. movl 36(%esp), %edi
  929. movl 40(%esp), %esi
  930. movl %esi, %ebx
  931. shll %cl, %edi
  932. movl %eax, %ecx
  933. shrl %cl, %ebx
  934. andl %edx, %edi
  935. movl 4(%esp), %ecx
  936. orl %ebx, %edi
  937. shll %cl, %esi
  938. movl %eax, %ecx
  939. andl %edx, %esi
  940. xorl %edx, %edx
  941. orl 20(%esp), %esi
  942. movl 36(%esp), %esi
  943. setne %dl
  944. shrl %cl, %esi
  945. orl %edi, %edx
  946. movl (%esp), %eax
  947. movl %edx, 20(%esp)
  948. movl %esi, 40(%esp)
  949. jmp ..B1.93
  950. ..B1.90:
  951. movl $1, 20(%esp)
  952. movl %eax, 40(%esp)
  953. jmp ..B1.94
  954. ..B1.91:
  955. movl 60(%esp), %eax
  956. shrl $31, %eax
  957. movl 64(%esp), %edx
  958. fldl _large_value_64@GOTOFF(%edx,%eax,8)
  959. fmull _large_value_64@GOTOFF(%edx)
  960. fstl 8(%esp)
  961. fstl (%esp)
  962. addl $84, %esp
  963. popl %ebx
  964. popl %edi
  965. popl %esi
  966. movl %ebp, %esp
  967. popl %ebp
  968. ret
  969. ..B1.92:
  970. movl %eax, %edx
  971. shll $20, %edx
  972. movl 36(%esp), %eax
  973. orl %edx, %eax
  974. ..B1.93:
  975. cmpl $0, 20(%esp)
  976. je ..B1.122
  977. ..B1.94:
  978. movl 64(%esp), %edx
  979. cmpl $0, 56(%esp)
  980. fldl _small_value_64@GOTOFF(%edx)
  981. fldl _ones@GOTOFF(%edx)
  982. fadd %st(1), %st
  983. fstpl 8(%esp)
  984. je ..B1.124
  985. ..B1.95:
  986. cmpl $3072, 56(%esp)
  987. je ..B1.118
  988. ..B1.96:
  989. cmpl $2048, 56(%esp)
  990. jne ..B1.107
  991. ..B1.97:
  992. cmpl $0, 60(%esp)
  993. je ..B1.99
  994. ..B1.98:
  995. cmpl $1048576, %eax
  996. jb ..B1.104
  997. jmp ..B1.139
  998. ..B1.99:
  999. cmpl $1048575, %eax
  1000. jb ..B1.104
  1001. ..B1.100:
  1002. jne ..B1.105
  1003. ..B1.101:
  1004. cmpl $-1, 40(%esp)
  1005. jb ..B1.104
  1006. ..B1.102:
  1007. jne ..B1.105
  1008. ..B1.103:
  1009. cmpl $-2147483648, 20(%esp)
  1010. jae ..B1.105
  1011. ..B1.104:
  1012. fmul %st(0), %st
  1013. fstl 8(%esp)
  1014. cmpl $0, 60(%esp)
  1015. jne ..B1.139
  1016. ..B1.105:
  1017. fstp %st(0)
  1018. xorl %edx, %edx
  1019. incl 40(%esp)
  1020. sete %dl
  1021. addl %edx, %eax
  1022. cmpl $2146435072, %eax
  1023. jb ..B1.122
  1024. ..B1.106:
  1025. movl 60(%esp), %eax
  1026. shrl $31, %eax
  1027. movl 64(%esp), %edx
  1028. fldl _large_value_64@GOTOFF(%edx,%eax,8)
  1029. fmull _large_value_64@GOTOFF(%edx)
  1030. fstl 8(%esp)
  1031. fstl (%esp)
  1032. addl $84, %esp
  1033. popl %ebx
  1034. popl %edi
  1035. popl %esi
  1036. movl %ebp, %esp
  1037. popl %ebp
  1038. ret
  1039. ..B1.107:
  1040. cmpl $1024, 56(%esp)
  1041. jne ..B1.139
  1042. ..B1.108:
  1043. cmpl $0, 60(%esp)
  1044. jne ..B1.110
  1045. ..B1.109:
  1046. cmpl $1048576, %eax
  1047. jb ..B1.115
  1048. jmp ..B1.139
  1049. ..B1.110:
  1050. cmpl $1048575, %eax
  1051. jb ..B1.115
  1052. ..B1.111:
  1053. jne ..B1.116
  1054. ..B1.112:
  1055. cmpl $-1, 40(%esp)
  1056. jb ..B1.115
  1057. ..B1.113:
  1058. jne ..B1.116
  1059. ..B1.114:
  1060. cmpl $-2147483648, 20(%esp)
  1061. jae ..B1.116
  1062. ..B1.115:
  1063. fmul %st(0), %st
  1064. fstl 8(%esp)
  1065. cmpl $0, 60(%esp)
  1066. je ..B1.139
  1067. ..B1.116:
  1068. fstp %st(0)
  1069. xorl %edx, %edx
  1070. incl 40(%esp)
  1071. sete %dl
  1072. addl %edx, %eax
  1073. cmpl $2146435072, %eax
  1074. jb ..B1.122
  1075. ..B1.117:
  1076. movl 60(%esp), %eax
  1077. shrl $31, %eax
  1078. movl 64(%esp), %edx
  1079. fldl _large_value_64@GOTOFF(%edx,%eax,8)
  1080. fmull _large_value_64@GOTOFF(%edx)
  1081. fstl 8(%esp)
  1082. fstl (%esp)
  1083. addl $84, %esp
  1084. popl %ebx
  1085. popl %edi
  1086. popl %esi
  1087. movl %ebp, %esp
  1088. popl %ebp
  1089. ret
  1090. ..B1.118:
  1091. cmpl $1048576, %eax
  1092. jb ..B1.121
  1093. ..B1.119:
  1094. lea -1048576(%eax), %edx
  1095. orl 40(%esp), %edx
  1096. jne ..B1.139
  1097. ..B1.120:
  1098. cmpl $-2147483648, 20(%esp)
  1099. jne ..B1.139
  1100. ..B1.121:
  1101. fmul %st(0), %st
  1102. fstpl 8(%esp)
  1103. ..B1.122:
  1104. movl 60(%esp), %edx
  1105. orl %eax, %edx
  1106. movl 40(%esp), %eax
  1107. movl %edx, 4(%esp)
  1108. movl %eax, (%esp)
  1109. fldl (%esp)
  1110. addl $84, %esp
  1111. popl %ebx
  1112. popl %edi
  1113. popl %esi
  1114. movl %ebp, %esp
  1115. popl %ebp
  1116. ret
  1117. ..B1.123:
  1118. xorl %eax, %eax
  1119. cmpl $1024, 56(%esp)
  1120. movl 64(%esp), %edi
  1121. sete %al
  1122. fldl _zeros@GOTOFF(%edi,%eax,8)
  1123. addl $84, %esp
  1124. popl %ebx
  1125. popl %edi
  1126. popl %esi
  1127. movl %ebp, %esp
  1128. popl %ebp
  1129. ret
  1130. ..B1.124:
  1131. testl $-2147483648, 20(%esp)
  1132. je ..B1.118
  1133. ..B1.125:
  1134. movl 40(%esp), %ecx
  1135. movl 20(%esp), %edx
  1136. andl $1, %ecx
  1137. andl $2147483647, %edx
  1138. orl %edx, %ecx
  1139. je ..B1.118
  1140. ..B1.126:
  1141. xorl %edx, %edx
  1142. incl 40(%esp)
  1143. sete %dl
  1144. addl %edx, %eax
  1145. cmpl $2146435072, %eax
  1146. jb ..B1.118
  1147. ..B1.127:
  1148. fstp %st(0)
  1149. movl 60(%esp), %eax
  1150. shrl $31, %eax
  1151. movl 64(%esp), %edx
  1152. fldl _large_value_64@GOTOFF(%edx,%eax,8)
  1153. fmull _large_value_64@GOTOFF(%edx)
  1154. fstl 8(%esp)
  1155. fstl (%esp)
  1156. addl $84, %esp
  1157. popl %ebx
  1158. popl %edi
  1159. popl %esi
  1160. movl %ebp, %esp
  1161. popl %ebp
  1162. ret
  1163. ..B1.139:
  1164. fstp %st(0)
  1165. jmp ..B1.122
  1166. .align 16,0x90
  1167. .type fma,@function
  1168. .size fma,.-fma
  1169. .data
  1170. # -- End fma
  1171. .section .rodata, "a"
  1172. .align 4
  1173. .align 4
  1174. _ones:
  1175. .long 0
  1176. .long 1072693248
  1177. .long 0
  1178. .long 3220176896
  1179. .type _ones,@object
  1180. .size _ones,16
  1181. .align 4
  1182. _large_value_64:
  1183. .long 0
  1184. .long 2121269248
  1185. .long 0
  1186. .long 4268752896
  1187. .type _large_value_64,@object
  1188. .size _large_value_64,16
  1189. .align 4
  1190. _small_value_64:
  1191. .long 0
  1192. .long 24117248
  1193. .long 0
  1194. .long 2171600896
  1195. .type _small_value_64,@object
  1196. .size _small_value_64,16
  1197. .align 4
  1198. _zeros:
  1199. .long 0
  1200. .long 0
  1201. .long 0
  1202. .long 2147483648
  1203. .type _zeros,@object
  1204. .size _zeros,16
  1205. .data
  1206. .section .note.GNU-stack, ""
  1207. # End