csqrt.S 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  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 "csqrt.c"
  38. .text
  39. ..TXTST0:
  40. # -- Begin csqrt
  41. .text
  42. .align 16,0x90
  43. .globl csqrt
  44. csqrt:
  45. # parameter 1: %xmm0
  46. ..B1.1:
  47. .cfi_startproc
  48. ..___tag_value_csqrt.1:
  49. ..L2:
  50. ..B1.2:
  51. movq %rsp, %rax
  52. subq $152, %rsp
  53. .cfi_def_cfa_offset 160
  54. movq %rax, 56(%rsp)
  55. movq %xmm0, 32(%rsp)
  56. movq %xmm1, 40(%rsp)
  57. movq %rbx, 64(%rsp)
  58. movq 32(%rsp), %xmm0
  59. movq 40(%rsp), %xmm1
  60. lea csqrt_table(%rip), %r8
  61. movq (%r8), %xmm2
  62. movq (%r8), %xmm3
  63. movq 144(%r8), %xmm7
  64. pand %xmm0, %xmm2
  65. pand %xmm1, %xmm3
  66. pand 16(%r8), %xmm0
  67. pand 16(%r8), %xmm1
  68. movq %xmm2, %xmm4
  69. movq %xmm3, %xmm5
  70. movl 36(%rsp), %eax
  71. movl 44(%rsp), %ebx
  72. andl $2147483647, %eax
  73. andl $2147483647, %ebx
  74. subl $591396864, %eax
  75. movq %xmm0, 8(%rsp)
  76. subl $591396864, %ebx
  77. cmpl $1017118720, %eax
  78. movq %xmm1, 16(%rsp)
  79. jae .L_2TAG_PACKET_0.0.1
  80. cmpl $1017118720, %ebx
  81. jae .L_2TAG_PACKET_0.0.1
  82. addl $591396864, %eax
  83. addl $591396864, %ebx
  84. movl %eax, %edx
  85. subl %ebx, %edx
  86. cmpl $60817408, %edx
  87. jg .L_2TAG_PACKET_1.0.1
  88. cmpl $-60817408, %edx
  89. jl .L_2TAG_PACKET_2.0.1
  90. .L_2TAG_PACKET_3.0.1:
  91. subsd %xmm2, %xmm0
  92. subsd %xmm3, %xmm1
  93. mulsd %xmm2, %xmm2
  94. mulsd %xmm3, %xmm3
  95. mulsd %xmm0, %xmm4
  96. mulsd %xmm1, %xmm5
  97. movq %xmm2, %xmm6
  98. mulsd %xmm0, %xmm0
  99. mulsd %xmm1, %xmm1
  100. movq %xmm7, 24(%rsp)
  101. movq %xmm2, %xmm7
  102. addsd %xmm3, %xmm2
  103. addsd %xmm4, %xmm0
  104. subsd %xmm2, %xmm7
  105. addsd %xmm5, %xmm1
  106. movq %xmm2, (%rsp)
  107. addsd %xmm7, %xmm2
  108. addsd %xmm7, %xmm3
  109. movq (%rsp), %xmm7
  110. addsd %xmm4, %xmm0
  111. subsd %xmm2, %xmm6
  112. addsd %xmm5, %xmm1
  113. movq (%rsp), %xmm5
  114. movq %xmm0, %xmm2
  115. movq %xmm0, %xmm4
  116. addsd %xmm3, %xmm6
  117. addsd %xmm1, %xmm0
  118. subsd %xmm0, %xmm2
  119. movq %xmm0, %xmm3
  120. addsd %xmm2, %xmm0
  121. addsd %xmm2, %xmm1
  122. pshufd $221, %xmm7, %xmm2
  123. subsd %xmm0, %xmm4
  124. movq 32(%r8), %xmm0
  125. addsd %xmm4, %xmm1
  126. pand %xmm7, %xmm0
  127. addsd %xmm3, %xmm7
  128. addsd %xmm6, %xmm1
  129. subsd %xmm7, %xmm5
  130. subsd %xmm0, %xmm7
  131. movq %xmm0, %xmm4
  132. addsd %xmm5, %xmm3
  133. movq %xmm0, %xmm5
  134. addsd %xmm7, %xmm1
  135. movq %xmm0, %xmm7
  136. psrlq $29, %xmm0
  137. addsd %xmm3, %xmm1
  138. pand 48(%r8), %xmm0
  139. movq 152(%r8), %xmm3
  140. pxor 64(%r8), %xmm0
  141. addsd %xmm1, %xmm4
  142. paddd 80(%r8), %xmm0
  143. psubd 96(%r8), %xmm2
  144. rsqrtss %xmm0, %xmm0
  145. pand 112(%r8), %xmm2
  146. psrld $3, %xmm0
  147. psrld $1, %xmm2
  148. paddd 128(%r8), %xmm0
  149. psubd %xmm2, %xmm0
  150. psllq $32, %xmm0
  151. movq %xmm0, %xmm2
  152. mulsd %xmm0, %xmm0
  153. mulsd %xmm0, %xmm7
  154. mulsd %xmm1, %xmm0
  155. subsd 144(%r8), %xmm7
  156. addsd %xmm0, %xmm7
  157. movq 160(%r8), %xmm0
  158. movq %xmm7, %xmm6
  159. mulsd %xmm7, %xmm7
  160. mulsd %xmm7, %xmm3
  161. mulsd %xmm7, %xmm0
  162. addsd 168(%r8), %xmm3
  163. addsd 176(%r8), %xmm0
  164. mulsd %xmm7, %xmm3
  165. mulsd %xmm7, %xmm0
  166. addsd 184(%r8), %xmm3
  167. mulsd %xmm6, %xmm3
  168. addsd %xmm0, %xmm3
  169. movq 8(%rsp), %xmm0
  170. mulsd %xmm2, %xmm3
  171. mulsd %xmm4, %xmm3
  172. movq 8(%rsp), %xmm4
  173. mulsd %xmm2, %xmm1
  174. mulsd %xmm2, %xmm5
  175. movq %xmm5, %xmm2
  176. addsd 8(%rsp), %xmm5
  177. movq 32(%r8), %xmm7
  178. addsd %xmm3, %xmm1
  179. subsd %xmm5, %xmm4
  180. movq %xmm5, %xmm3
  181. addsd %xmm4, %xmm5
  182. addsd %xmm2, %xmm4
  183. subsd %xmm5, %xmm0
  184. addsd %xmm0, %xmm4
  185. movq 208(%r8), %xmm0
  186. addsd %xmm1, %xmm4
  187. movq %xmm3, %xmm1
  188. movq %xmm3, %xmm2
  189. addsd %xmm4, %xmm3
  190. subsd %xmm3, %xmm1
  191. mulsd %xmm3, %xmm0
  192. pand %xmm0, %xmm7
  193. addsd %xmm1, %xmm3
  194. addsd %xmm4, %xmm1
  195. movq %xmm7, %xmm4
  196. subsd %xmm2, %xmm3
  197. movq %xmm7, %xmm5
  198. pshufd $221, %xmm0, %xmm2
  199. subsd %xmm7, %xmm0
  200. subsd %xmm3, %xmm1
  201. mulsd 208(%r8), %xmm1
  202. addsd %xmm0, %xmm1
  203. movq %xmm7, %xmm0
  204. psrlq $29, %xmm7
  205. movq 152(%r8), %xmm3
  206. pand 48(%r8), %xmm7
  207. psubd 96(%r8), %xmm2
  208. pxor 64(%r8), %xmm7
  209. addsd %xmm1, %xmm4
  210. paddd 80(%r8), %xmm7
  211. rsqrtss %xmm7, %xmm7
  212. psrld $3, %xmm7
  213. pand 112(%r8), %xmm2
  214. psrld $1, %xmm2
  215. paddd 128(%r8), %xmm7
  216. psubd %xmm2, %xmm7
  217. psllq $32, %xmm7
  218. movq %xmm7, %xmm2
  219. mulsd %xmm7, %xmm7
  220. mulsd %xmm7, %xmm0
  221. mulsd %xmm1, %xmm7
  222. subsd 144(%r8), %xmm0
  223. addsd %xmm7, %xmm0
  224. movq 160(%r8), %xmm7
  225. movq %xmm0, %xmm6
  226. mulsd %xmm0, %xmm0
  227. mulsd %xmm0, %xmm3
  228. mulsd %xmm0, %xmm7
  229. addsd 168(%r8), %xmm3
  230. addsd 176(%r8), %xmm7
  231. mulsd %xmm0, %xmm3
  232. mulsd %xmm0, %xmm7
  233. addsd 184(%r8), %xmm3
  234. mulsd %xmm6, %xmm3
  235. movq 16(%rsp), %xmm6
  236. addsd %xmm7, %xmm3
  237. mulsd 208(%r8), %xmm6
  238. mulsd %xmm2, %xmm3
  239. mulsd %xmm3, %xmm4
  240. pxor %xmm7, %xmm7
  241. mulsd %xmm2, %xmm1
  242. mulsd %xmm2, %xmm5
  243. cmpnlesd 32(%rsp), %xmm7
  244. addsd %xmm4, %xmm1
  245. movq 32(%r8), %xmm4
  246. pand %xmm6, %xmm4
  247. subsd %xmm4, %xmm6
  248. addsd %xmm5, %xmm1
  249. movq %xmm2, %xmm5
  250. mulsd %xmm4, %xmm2
  251. mulsd %xmm3, %xmm4
  252. movq %xmm1, %xmm0
  253. pand %xmm7, %xmm0
  254. mulsd %xmm6, %xmm3
  255. mulsd %xmm5, %xmm6
  256. movq 40(%rsp), %xmm5
  257. addsd %xmm4, %xmm3
  258. addsd %xmm3, %xmm6
  259. addsd %xmm6, %xmm2
  260. movq %xmm7, %xmm6
  261. pandn %xmm2, %xmm6
  262. pand %xmm7, %xmm2
  263. pandn %xmm1, %xmm7
  264. pand 192(%r8), %xmm5
  265. por %xmm0, %xmm6
  266. por %xmm7, %xmm2
  267. por %xmm5, %xmm6
  268. movq 24(%rsp), %xmm0
  269. movq 24(%rsp), %xmm1
  270. mulsd %xmm2, %xmm0
  271. mulsd %xmm6, %xmm1
  272. movq 64(%rsp), %rbx
  273. movq 56(%rsp), %rsp
  274. ret
  275. .L_2TAG_PACKET_0.0.1:
  276. addl $591396864, %eax
  277. addl $591396864, %ebx
  278. cmpl $2146435072, %eax
  279. jge .L_2TAG_PACKET_4.0.1
  280. cmpl $2146435072, %ebx
  281. jge .L_2TAG_PACKET_5.0.1
  282. movl 32(%rsp), %edx
  283. orl %eax, %edx
  284. movl 40(%rsp), %edx
  285. je .L_2TAG_PACKET_6.0.1
  286. orl %ebx, %edx
  287. je .L_2TAG_PACKET_7.0.1
  288. movl %eax, %edx
  289. subl %ebx, %edx
  290. cmpl $60817408, %edx
  291. jg .L_2TAG_PACKET_1.0.1
  292. cmpl $-60817408, %edx
  293. jl .L_2TAG_PACKET_2.0.1
  294. cmpl $1072693248, %eax
  295. jl .L_2TAG_PACKET_8.0.1
  296. mulsd 216(%r8), %xmm0
  297. mulsd 216(%r8), %xmm1
  298. movq 224(%r8), %xmm7
  299. movq 32(%r8), %xmm2
  300. movq 32(%r8), %xmm3
  301. pand %xmm0, %xmm2
  302. pand %xmm1, %xmm3
  303. movq %xmm2, %xmm4
  304. movq %xmm3, %xmm5
  305. movq %xmm0, 8(%rsp)
  306. movq %xmm1, 16(%rsp)
  307. jmp .L_2TAG_PACKET_3.0.1
  308. .L_2TAG_PACKET_8.0.1:
  309. mulsd 232(%r8), %xmm0
  310. mulsd 232(%r8), %xmm1
  311. movq 240(%r8), %xmm7
  312. movq 32(%r8), %xmm2
  313. movq 32(%r8), %xmm3
  314. pand %xmm0, %xmm2
  315. pand %xmm1, %xmm3
  316. movq %xmm2, %xmm4
  317. movq %xmm3, %xmm5
  318. movq %xmm0, 8(%rsp)
  319. movq %xmm1, 16(%rsp)
  320. jmp .L_2TAG_PACKET_3.0.1
  321. .L_2TAG_PACKET_2.0.1:
  322. .L_2TAG_PACKET_6.0.1:
  323. cmpl $2097152, %ebx
  324. jl .L_2TAG_PACKET_9.0.1
  325. mulsd 208(%r8), %xmm1
  326. sqrtsd %xmm1, %xmm0
  327. movsd 40(%rsp), %xmm1
  328. pand 192(%r8), %xmm1
  329. por %xmm0, %xmm1
  330. movq 64(%rsp), %rbx
  331. movq 56(%rsp), %rsp
  332. ret
  333. .L_2TAG_PACKET_9.0.1:
  334. mulsd 248(%r8), %xmm1
  335. sqrtsd %xmm1, %xmm0
  336. movsd 40(%rsp), %xmm1
  337. pand 192(%r8), %xmm1
  338. mulsd 256(%r8), %xmm0
  339. por %xmm0, %xmm1
  340. movq 64(%rsp), %rbx
  341. movq 56(%rsp), %rsp
  342. ret
  343. .L_2TAG_PACKET_7.0.1:
  344. sqrtsd %xmm0, %xmm0
  345. movl 36(%rsp), %eax
  346. cmpl $0, %eax
  347. jl .L_2TAG_PACKET_10.0.1
  348. movsd 40(%rsp), %xmm1
  349. pand 192(%r8), %xmm1
  350. movq 64(%rsp), %rbx
  351. movq 56(%rsp), %rsp
  352. ret
  353. .L_2TAG_PACKET_10.0.1:
  354. movsd 40(%rsp), %xmm1
  355. pand 192(%r8), %xmm1
  356. por %xmm0, %xmm1
  357. pxor %xmm0, %xmm0
  358. movq 64(%rsp), %rbx
  359. movq 56(%rsp), %rsp
  360. ret
  361. .L_2TAG_PACKET_1.0.1:
  362. cmpl $57671680, %ebx
  363. movsd %xmm0, %xmm4
  364. subsd %xmm2, %xmm0
  365. movq %xmm2, %xmm5
  366. movq %xmm2, %xmm7
  367. pshufd $221, %xmm2, %xmm1
  368. jl .L_2TAG_PACKET_11.0.1
  369. mulsd 288(%r8), %xmm2
  370. mulsd 288(%r8), %xmm0
  371. mulsd 288(%r8), %xmm4
  372. movsd %xmm2, %xmm5
  373. movsd %xmm2, %xmm7
  374. pshufd $221, %xmm2, %xmm1
  375. shrl $21, %eax
  376. shrl $20, %ebx
  377. psrlq $29, %xmm2
  378. pand 48(%r8), %xmm2
  379. pxor 64(%r8), %xmm2
  380. paddd 80(%r8), %xmm2
  381. rsqrtss %xmm2, %xmm2
  382. subl $511, %eax
  383. subl $1023, %ebx
  384. psubd 96(%r8), %xmm1
  385. psrld $3, %xmm2
  386. pand 112(%r8), %xmm1
  387. psrld $1, %xmm1
  388. paddd 128(%r8), %xmm2
  389. psubd %xmm1, %xmm2
  390. subl %eax, %ebx
  391. psllq $32, %xmm2
  392. movq %xmm2, %xmm1
  393. mulsd %xmm2, %xmm2
  394. mulsd %xmm2, %xmm7
  395. mulsd %xmm0, %xmm2
  396. subsd 144(%r8), %xmm7
  397. cmpl $-1020, %ebx
  398. addsd %xmm2, %xmm7
  399. movq %xmm7, %xmm6
  400. mulsd %xmm7, %xmm7
  401. movq 152(%r8), %xmm3
  402. movq 160(%r8), %xmm2
  403. mulsd %xmm7, %xmm3
  404. mulsd %xmm7, %xmm2
  405. addsd 168(%r8), %xmm3
  406. addsd 176(%r8), %xmm2
  407. mulsd %xmm7, %xmm3
  408. mulsd %xmm7, %xmm2
  409. addsd 184(%r8), %xmm3
  410. mulsd %xmm6, %xmm3
  411. addsd %xmm2, %xmm3
  412. mulsd %xmm1, %xmm3
  413. mulsd %xmm3, %xmm4
  414. mulsd %xmm1, %xmm0
  415. mulsd %xmm1, %xmm5
  416. addsd %xmm4, %xmm0
  417. mulsd 304(%r8), %xmm5
  418. mulsd 304(%r8), %xmm0
  419. mulsd 296(%r8), %xmm1
  420. mulsd 296(%r8), %xmm3
  421. jl .L_2TAG_PACKET_12.0.1
  422. movsd 16(%rsp), %xmm2
  423. addsd %xmm5, %xmm0
  424. mulsd 208(%r8), %xmm1
  425. mulsd 208(%r8), %xmm3
  426. movq 32(%r8), %xmm4
  427. pand %xmm2, %xmm4
  428. subsd %xmm4, %xmm2
  429. movq %xmm1, %xmm5
  430. mulsd %xmm4, %xmm1
  431. mulsd %xmm3, %xmm4
  432. mulsd %xmm2, %xmm3
  433. mulsd %xmm5, %xmm2
  434. addsd %xmm4, %xmm3
  435. addsd %xmm3, %xmm2
  436. addsd %xmm2, %xmm1
  437. .L_2TAG_PACKET_13.0.1:
  438. movsd 40(%rsp), %xmm3
  439. pand 192(%r8), %xmm3
  440. movl 36(%rsp), %eax
  441. cmpl $0, %eax
  442. jl .L_2TAG_PACKET_14.0.1
  443. por %xmm3, %xmm1
  444. movq 64(%rsp), %rbx
  445. movq 56(%rsp), %rsp
  446. ret
  447. .L_2TAG_PACKET_14.0.1:
  448. por %xmm0, %xmm3
  449. movq %xmm1, %xmm0
  450. movq %xmm3, %xmm1
  451. movq 64(%rsp), %rbx
  452. movq 56(%rsp), %rsp
  453. ret
  454. .L_2TAG_PACKET_11.0.1:
  455. psrlq $29, %xmm2
  456. pand 48(%r8), %xmm2
  457. pxor 64(%r8), %xmm2
  458. paddd 80(%r8), %xmm2
  459. rsqrtss %xmm2, %xmm2
  460. psubd 96(%r8), %xmm1
  461. psrld $3, %xmm2
  462. pand 112(%r8), %xmm1
  463. psrld $1, %xmm1
  464. paddd 128(%r8), %xmm2
  465. psubd %xmm1, %xmm2
  466. psllq $32, %xmm2
  467. movq %xmm2, %xmm1
  468. mulsd %xmm2, %xmm2
  469. mulsd %xmm2, %xmm7
  470. mulsd %xmm0, %xmm2
  471. subsd 144(%r8), %xmm7
  472. addsd %xmm2, %xmm7
  473. movq %xmm7, %xmm6
  474. mulsd %xmm7, %xmm7
  475. movq 152(%r8), %xmm3
  476. movq 160(%r8), %xmm2
  477. mulsd %xmm7, %xmm3
  478. mulsd %xmm7, %xmm2
  479. addsd 168(%r8), %xmm3
  480. addsd 176(%r8), %xmm2
  481. mulsd %xmm7, %xmm3
  482. mulsd %xmm7, %xmm2
  483. addsd 184(%r8), %xmm3
  484. mulsd %xmm6, %xmm3
  485. addsd %xmm2, %xmm3
  486. mulsd %xmm1, %xmm3
  487. mulsd %xmm3, %xmm4
  488. mulsd %xmm1, %xmm0
  489. mulsd %xmm1, %xmm5
  490. addsd %xmm4, %xmm0
  491. .L_2TAG_PACKET_12.0.1:
  492. addsd %xmm5, %xmm0
  493. movq 16(%rsp), %xmm2
  494. mulsd 264(%r8), %xmm2
  495. mulsd 248(%r8), %xmm2
  496. movq 32(%r8), %xmm4
  497. pand %xmm2, %xmm4
  498. subsd %xmm4, %xmm2
  499. movq %xmm1, %xmm5
  500. mulsd %xmm4, %xmm1
  501. mulsd %xmm3, %xmm4
  502. mulsd %xmm2, %xmm3
  503. mulsd %xmm5, %xmm2
  504. addsd %xmm4, %xmm3
  505. addsd %xmm3, %xmm2
  506. movq %xmm1, %xmm3
  507. addsd %xmm2, %xmm1
  508. pextrw $3, %xmm1, %eax
  509. mulsd 272(%r8), %xmm1
  510. mulsd 280(%r8), %xmm1
  511. cmpl $19216, %eax
  512. jge .L_2TAG_PACKET_13.0.1
  513. movq 272(%r8), %xmm5
  514. mulsd %xmm5, %xmm5
  515. cmpl $19056, %eax
  516. jle .L_2TAG_PACKET_13.0.1
  517. movq 32(%r8), %xmm1
  518. pand %xmm3, %xmm1
  519. subsd %xmm1, %xmm3
  520. addsd %xmm3, %xmm2
  521. mulsd 272(%r8), %xmm1
  522. mulsd 272(%r8), %xmm2
  523. mulsd 280(%r8), %xmm1
  524. mulsd 280(%r8), %xmm2
  525. addsd %xmm2, %xmm1
  526. jmp .L_2TAG_PACKET_13.0.1
  527. .L_2TAG_PACKET_5.0.1:
  528. .L_2TAG_PACKET_15.0.1:
  529. movq 144(%r8), %xmm0
  530. addsd 40(%rsp), %xmm0
  531. movq %xmm0, %xmm1
  532. mulsd %xmm0, %xmm0
  533. movq 64(%rsp), %rbx
  534. movq 56(%rsp), %rsp
  535. ret
  536. .L_2TAG_PACKET_4.0.1:
  537. movsd 32(%rsp), %xmm1
  538. mulsd %xmm1, %xmm1
  539. cmpl $2146435072, %ebx
  540. jl .L_2TAG_PACKET_16.0.1
  541. movl 40(%rsp), %ebx
  542. jg .L_2TAG_PACKET_17.0.1
  543. andl %ebx, %ebx
  544. jne .L_2TAG_PACKET_17.0.1
  545. jmp .L_2TAG_PACKET_15.0.1
  546. .L_2TAG_PACKET_17.0.1:
  547. movq 144(%r8), %xmm0
  548. addsd 40(%rsp), %xmm0
  549. cmpl $2146435072, %eax
  550. movl 32(%rsp), %ebx
  551. jg .L_2TAG_PACKET_18.0.1
  552. andl %ebx, %ebx
  553. movl 36(%rsp), %ebx
  554. jne .L_2TAG_PACKET_18.0.1
  555. cmpl $2146435072, %ebx
  556. je .L_2TAG_PACKET_19.0.1
  557. mulsd %xmm1, %xmm1
  558. movq 64(%rsp), %rbx
  559. movq 56(%rsp), %rsp
  560. ret
  561. .L_2TAG_PACKET_18.0.1:
  562. .L_2TAG_PACKET_19.0.1:
  563. movq 32(%rsp), %xmm0
  564. movq 40(%rsp), %xmm1
  565. movq 64(%rsp), %rbx
  566. movq 56(%rsp), %rsp
  567. ret
  568. .L_2TAG_PACKET_16.0.1:
  569. cmpl $2146435072, %eax
  570. movl 32(%rsp), %eax
  571. jg .L_2TAG_PACKET_20.0.1
  572. andl %eax, %eax
  573. jne .L_2TAG_PACKET_20.0.1
  574. pxor %xmm2, %xmm2
  575. movl 36(%rsp), %eax
  576. movq 40(%rsp), %xmm3
  577. testl $-2147483648, %eax
  578. pand 192(%r8), %xmm3
  579. jne .L_2TAG_PACKET_21.0.1
  580. por %xmm3, %xmm2
  581. movq %xmm1, %xmm0
  582. movq %xmm2, %xmm1
  583. movq 64(%rsp), %rbx
  584. movq 56(%rsp), %rsp
  585. ret
  586. .L_2TAG_PACKET_21.0.1:
  587. por %xmm3, %xmm1
  588. movq %xmm2, %xmm0
  589. movq 64(%rsp), %rbx
  590. movq 56(%rsp), %rsp
  591. ret
  592. .L_2TAG_PACKET_20.0.1:
  593. movq %xmm1, %xmm0
  594. movq 64(%rsp), %rbx
  595. movq 56(%rsp), %rsp
  596. ret
  597. .cfi_def_cfa_offset 8
  598. ..B1.3:
  599. .align 16,0x90
  600. .cfi_endproc
  601. .type csqrt,@function
  602. .size csqrt,.-csqrt
  603. .data
  604. # -- End csqrt
  605. .section .rodata, "a"
  606. .align 16
  607. .align 16
  608. csqrt_table:
  609. .long 4160749568
  610. .long 2147483647
  611. .long 4160749568
  612. .long 2147483647
  613. .long 4294967295
  614. .long 2147483647
  615. .long 4294967295
  616. .long 2147483647
  617. .long 4160749568
  618. .long 4294967295
  619. .long 4160749568
  620. .long 4294967295
  621. .long 16777215
  622. .long 16777215
  623. .long 16777215
  624. .long 16777215
  625. .long 8388608
  626. .long 8388608
  627. .long 8388608
  628. .long 8388608
  629. .long 1065353216
  630. .long 1065353216
  631. .long 1065353216
  632. .long 1065353216
  633. .long 1048576
  634. .long 1048576
  635. .long 1048576
  636. .long 1048576
  637. .long 4292870144
  638. .long 4292870144
  639. .long 4292870144
  640. .long 4292870144
  641. .long 1475346432
  642. .long 1475346432
  643. .long 1475346432
  644. .long 1475346432
  645. .long 0
  646. .long 1072693248
  647. .long 0
  648. .long 3218046976
  649. .long 0
  650. .long 1070694400
  651. .long 0
  652. .long 3218341888
  653. .long 0
  654. .long 1071120384
  655. .long 0
  656. .long 3219128320
  657. .long 0
  658. .long 2147483648
  659. .long 0
  660. .long 2147483648
  661. .long 0
  662. .long 1071644672
  663. .long 0
  664. .long 533725184
  665. .long 0
  666. .long 1342177280
  667. .long 0
  668. .long 1722810368
  669. .long 0
  670. .long 747634688
  671. .long 0
  672. .long 1281359872
  673. .long 0
  674. .long 967835648
  675. .long 0
  676. .long 2121269248
  677. .long 0
  678. .long 24117248
  679. .long 0
  680. .long 862978048
  681. .long 0
  682. .long 1062207488
  683. .long 0
  684. .long 1067450368
  685. .long 0
  686. .long 1077936128
  687. .type csqrt_table,@object
  688. .size csqrt_table,312
  689. .data
  690. .section .note.GNU-stack, ""
  691. // -- Begin DWARF2 SEGMENT .eh_frame
  692. .section .eh_frame,"a",@progbits
  693. .eh_frame_seg:
  694. .align 1
  695. # End