ctanh.S 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  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 "ctanh.c"
  38. .text
  39. ..TXTST0:
  40. # -- Begin ctanhf
  41. .text
  42. .align 16,0x90
  43. .globl ctanhf
  44. ctanhf:
  45. # parameter 1: %xmm0
  46. ..B1.1:
  47. .cfi_startproc
  48. ..___tag_value_ctanhf.1:
  49. ..L2:
  50. subq $24, %rsp
  51. .cfi_def_cfa_offset 32
  52. cvtps2pd %xmm0, %xmm1
  53. movaps %xmm1, %xmm0
  54. unpckhpd %xmm1, %xmm1
  55. ..___tag_value_ctanhf.4:
  56. call ctanh@PLT
  57. ..___tag_value_ctanhf.5:
  58. ..B1.10:
  59. unpcklpd %xmm1, %xmm0
  60. ..B1.2:
  61. cvtpd2ps %xmm0, %xmm0
  62. movsd %xmm0, 4(%rsp)
  63. movzwl 6(%rsp), %eax
  64. testl $32640, %eax
  65. jne ..B1.4
  66. ..B1.3:
  67. testl $8388607, 4(%rsp)
  68. jne ..B1.6
  69. ..B1.4:
  70. movzwl 10(%rsp), %eax
  71. testl $32640, %eax
  72. jne ..B1.7
  73. ..B1.5:
  74. testl $8388607, 8(%rsp)
  75. je ..B1.7
  76. ..B1.6:
  77. movl $8388608, (%rsp)
  78. movss (%rsp), %xmm1
  79. movss (%rsp), %xmm0
  80. mulss %xmm0, %xmm1
  81. movsd 4(%rsp), %xmm0
  82. movss %xmm1, (%rsp)
  83. ..B1.7:
  84. addq $24, %rsp
  85. .cfi_def_cfa_offset 8
  86. ret
  87. .align 16,0x90
  88. .cfi_endproc
  89. .type ctanhf,@function
  90. .size ctanhf,.-ctanhf
  91. .data
  92. # -- End ctanhf
  93. .text
  94. # -- Begin ctanh
  95. .text
  96. .align 16,0x90
  97. .globl ctanh
  98. ctanh:
  99. # parameter 1: %xmm0
  100. ..B2.1:
  101. .cfi_startproc
  102. ..___tag_value_ctanh.8:
  103. ..L9:
  104. pushq %r12
  105. .cfi_def_cfa_offset 16
  106. .cfi_offset 12, -16
  107. pushq %r14
  108. .cfi_def_cfa_offset 24
  109. .cfi_offset 14, -24
  110. pushq %rbx
  111. .cfi_def_cfa_offset 32
  112. .cfi_offset 3, -32
  113. movq %fs:40, %rax
  114. subq $160, %rsp
  115. .cfi_def_cfa_offset 192
  116. movsd %xmm0, 40(%rsp)
  117. xorq %rsp, %rax
  118. movzwl 46(%rsp), %r12d
  119. andl $32752, %r12d
  120. shrl $4, %r12d
  121. movsd %xmm1, 48(%rsp)
  122. cmpl $2047, %r12d
  123. movq %rax, 152(%rsp)
  124. jge ..B2.33
  125. ..B2.2:
  126. testl %r12d, %r12d
  127. jle ..B2.61
  128. ..B2.3:
  129. movzwl 54(%rsp), %edi
  130. movl %edi, %ebx
  131. andl $32752, %ebx
  132. shrl $4, %ebx
  133. cmpl $2047, %ebx
  134. jge ..B2.34
  135. ..B2.4:
  136. cmpl $1032, %r12d
  137. jl ..B2.8
  138. ..B2.5:
  139. movb 47(%rsp), %dl
  140. lea _DBL_MIN_NORMAL(%rip), %rax
  141. andb $-128, %dl
  142. lea ones(%rip), %rcx
  143. shrb $7, %dl
  144. movsd (%rax), %xmm1
  145. movzbl %dl, %esi
  146. testl %ebx, %ebx
  147. movsd (%rcx,%rsi,8), %xmm0
  148. subsd %xmm1, %xmm0
  149. movsd %xmm0, 24(%rsp)
  150. jle ..B2.57
  151. ..B2.6:
  152. movsd %xmm1, 16(%rsp)
  153. testl $32752, %edi
  154. movsd 16(%rsp), %xmm1
  155. movsd 16(%rsp), %xmm0
  156. mulsd %xmm0, %xmm1
  157. movsd %xmm1, 16(%rsp)
  158. movsd 16(%rsp), %xmm0
  159. jle ..B2.56
  160. ..B2.7:
  161. movsd 48(%rsp), %xmm0
  162. call tan@PLT
  163. ..B2.71:
  164. lea 32(%rsp), %rax
  165. pxor %xmm1, %xmm1
  166. mulsd %xmm0, %xmm1
  167. movsd %xmm1, (%rax)
  168. movsd -8(%rax), %xmm0
  169. movhpd (%rax), %xmm0
  170. jmp ..B2.54
  171. ..B2.8:
  172. movsd 40(%rsp), %xmm0
  173. lea 104(%rsp), %rdi
  174. ..___tag_value_ctanh.17:
  175. call __libm_cosh_k64@PLT
  176. ..___tag_value_ctanh.18:
  177. ..B2.72:
  178. movl %eax, %ebx
  179. ..B2.9:
  180. movsd 104(%rsp), %xmm2
  181. movsd 112(%rsp), %xmm3
  182. movaps %xmm2, %xmm4
  183. movzwl 46(%rsp), %eax
  184. addsd %xmm3, %xmm4
  185. movaps %xmm4, %xmm1
  186. andl $32752, %eax
  187. cmpl $13168, %eax
  188. subsd %xmm4, %xmm2
  189. addsd %xmm3, %xmm2
  190. movsd .L_2il0floatpacket.13(%rip), %xmm3
  191. mulsd %xmm3, %xmm1
  192. movaps %xmm1, %xmm0
  193. subsd %xmm4, %xmm0
  194. subsd %xmm0, %xmm1
  195. movsd %xmm1, 104(%rsp)
  196. subsd %xmm1, %xmm4
  197. addsd %xmm2, %xmm4
  198. movsd %xmm4, 112(%rsp)
  199. jge ..B2.11
  200. ..B2.10:
  201. lea 16+_CONSTANTS(%rip), %r12
  202. lea 80(%rsp), %r14
  203. movsd -40(%r14), %xmm0
  204. mulsd (%r12), %xmm0
  205. movsd %xmm0, -8(%r14)
  206. movzwl -2(%r14), %eax
  207. movl %eax, %r12d
  208. andl $32752, %r12d
  209. andl $-32753, %eax
  210. shrl $4, %r12d
  211. orl $-49168, %eax
  212. movw %ax, -2(%r14)
  213. addl $-1279, %r12d
  214. pxor %xmm0, %xmm0
  215. jmp ..B2.13
  216. ..B2.11:
  217. movsd 40(%rsp), %xmm0
  218. lea 72(%rsp), %rdi
  219. ..___tag_value_ctanh.19:
  220. call __libm_sinh_k64@PLT
  221. ..___tag_value_ctanh.20:
  222. ..B2.73:
  223. movsd .L_2il0floatpacket.13(%rip), %xmm3
  224. movl %eax, %r12d
  225. ..B2.12:
  226. lea 80(%rsp), %r14
  227. movsd (%r14), %xmm0
  228. ..B2.13:
  229. movsd 72(%rsp), %xmm4
  230. movaps %xmm0, %xmm5
  231. movaps %xmm3, %xmm2
  232. lea 56(%rsp), %rdi
  233. addsd %xmm4, %xmm5
  234. mulsd %xmm5, %xmm2
  235. subsd %xmm5, %xmm4
  236. movaps %xmm2, %xmm1
  237. lea 88(%rsp), %rsi
  238. subsd %xmm5, %xmm1
  239. addsd %xmm0, %xmm4
  240. subsd %xmm1, %xmm2
  241. movsd -40(%rsi), %xmm0
  242. subsd %xmm2, %xmm5
  243. movsd %xmm2, -16(%rsi)
  244. addsd %xmm4, %xmm5
  245. movsd %xmm5, (%r14)
  246. ..___tag_value_ctanh.21:
  247. call __libm_sincos_k64@PLT
  248. ..___tag_value_ctanh.22:
  249. ..B2.14:
  250. movsd 88(%rsp), %xmm4
  251. lea 8+_CONSTANTS(%rip), %rax
  252. movsd 96(%rsp), %xmm2
  253. movaps %xmm4, %xmm1
  254. movsd .L_2il0floatpacket.13(%rip), %xmm3
  255. addl %r12d, %ebx
  256. movsd 112(%rsp), %xmm6
  257. movaps %xmm3, %xmm10
  258. movsd (%r14), %xmm13
  259. movaps %xmm6, %xmm11
  260. mulsd %xmm13, %xmm11
  261. addsd %xmm2, %xmm1
  262. movsd 104(%rsp), %xmm7
  263. lea (%r12,%r12), %r14d
  264. movaps %xmm7, %xmm8
  265. subsd %xmm1, %xmm4
  266. mulsd %xmm13, %xmm7
  267. addsd %xmm2, %xmm4
  268. movaps %xmm3, %xmm2
  269. mulsd %xmm1, %xmm2
  270. movaps %xmm2, %xmm0
  271. movsd (%rax), %xmm5
  272. subsd %xmm1, %xmm0
  273. movsd %xmm5, 8(%rsp)
  274. subsd %xmm0, %xmm2
  275. movsd 72(%rsp), %xmm0
  276. subsd %xmm2, %xmm1
  277. mulsd %xmm0, %xmm6
  278. addsd %xmm5, %xmm2
  279. mulsd %xmm0, %xmm8
  280. addsd %xmm4, %xmm1
  281. addsd %xmm6, %xmm11
  282. movaps %xmm8, %xmm12
  283. movaps %xmm0, %xmm5
  284. mulsd %xmm0, %xmm5
  285. addsd %xmm7, %xmm11
  286. mulsd %xmm13, %xmm0
  287. mulsd %xmm13, %xmm13
  288. addsd %xmm11, %xmm12
  289. addsd %xmm0, %xmm0
  290. mulsd %xmm12, %xmm10
  291. subsd %xmm12, %xmm8
  292. addsd %xmm13, %xmm0
  293. addsd %xmm8, %xmm11
  294. movaps %xmm10, %xmm9
  295. movaps %xmm2, %xmm6
  296. movsd %xmm5, 120(%rsp)
  297. subsd %xmm12, %xmm9
  298. mulsd %xmm2, %xmm6
  299. subsd %xmm9, %xmm10
  300. movzwl 126(%rsp), %edx
  301. subsd %xmm10, %xmm12
  302. andl $32752, %edx
  303. addsd %xmm11, %xmm12
  304. shrl $4, %edx
  305. movsd %xmm2, 88(%rsp)
  306. mulsd %xmm1, %xmm2
  307. movsd %xmm6, 24(%rsp)
  308. lea (%rdx,%r12,2), %eax
  309. movzwl 30(%rsp), %edx
  310. addsd %xmm2, %xmm2
  311. andl $32752, %edx
  312. shrl $4, %edx
  313. movsd %xmm1, 96(%rsp)
  314. mulsd %xmm1, %xmm1
  315. movsd %xmm10, 136(%rsp)
  316. lea -112(%rdx), %ecx
  317. movsd %xmm12, 144(%rsp)
  318. cmpl %ecx, %eax
  319. movsd %xmm0, 128(%rsp)
  320. addsd %xmm1, %xmm2
  321. jg ..B2.16
  322. ..B2.15:
  323. movsd %xmm2, 32(%rsp)
  324. xorl %r14d, %r14d
  325. jmp ..B2.22
  326. ..B2.16:
  327. addl $112, %edx
  328. cmpl %edx, %eax
  329. jge ..B2.21
  330. ..B2.17:
  331. movl %r14d, %eax
  332. negl %eax
  333. movsd .L_2il0floatpacket.14(%rip), %xmm1
  334. addl $1023, %eax
  335. movsd %xmm1, (%rsp)
  336. andl $2047, %eax
  337. movzwl 6(%rsp), %edx
  338. movaps %xmm5, %xmm1
  339. shll $4, %eax
  340. andl $-32753, %edx
  341. orl %eax, %edx
  342. movw %dx, 6(%rsp)
  343. movsd (%rsp), %xmm4
  344. mulsd %xmm4, %xmm6
  345. mulsd %xmm4, %xmm2
  346. comisd %xmm6, %xmm5
  347. addsd %xmm6, %xmm1
  348. movsd %xmm6, 24(%rsp)
  349. movsd %xmm2, 32(%rsp)
  350. jbe ..B2.19
  351. ..B2.18:
  352. subsd %xmm1, %xmm5
  353. addsd %xmm6, %xmm5
  354. addsd %xmm2, %xmm5
  355. addsd %xmm0, %xmm5
  356. jmp ..B2.20
  357. ..B2.19:
  358. subsd %xmm1, %xmm6
  359. addsd %xmm5, %xmm6
  360. addsd %xmm0, %xmm6
  361. addsd %xmm2, %xmm6
  362. movaps %xmm6, %xmm5
  363. ..B2.20:
  364. movaps %xmm5, %xmm6
  365. addsd %xmm1, %xmm6
  366. subsd %xmm6, %xmm1
  367. addsd %xmm1, %xmm5
  368. movaps %xmm5, %xmm2
  369. jmp ..B2.22
  370. ..B2.21:
  371. movsd %xmm2, 32(%rsp)
  372. movaps %xmm5, %xmm6
  373. movaps %xmm0, %xmm2
  374. ..B2.22:
  375. movaps %xmm6, %xmm0
  376. movaps %xmm3, %xmm5
  377. movsd .L_2il0floatpacket.14(%rip), %xmm1
  378. movaps %xmm3, %xmm7
  379. movsd .L_2il0floatpacket.14(%rip), %xmm8
  380. negl %r14d
  381. addl %r14d, %ebx
  382. lea 136(%rsp), %rsi
  383. movl %ebx, %edi
  384. lea 120(%rsp), %rdx
  385. addsd %xmm2, %xmm0
  386. mulsd %xmm0, %xmm5
  387. subsd %xmm0, %xmm6
  388. addsd %xmm2, %xmm6
  389. movaps %xmm5, %xmm2
  390. subsd %xmm0, %xmm2
  391. subsd %xmm2, %xmm5
  392. divsd %xmm5, %xmm1
  393. mulsd %xmm1, %xmm7
  394. subsd %xmm5, %xmm0
  395. movaps %xmm7, %xmm4
  396. lea 24(%rsp), %rcx
  397. subsd %xmm1, %xmm4
  398. addsd %xmm0, %xmm6
  399. subsd %xmm4, %xmm7
  400. mulsd %xmm7, %xmm5
  401. mulsd %xmm7, %xmm6
  402. subsd %xmm5, %xmm8
  403. movsd %xmm7, (%rdx)
  404. subsd %xmm6, %xmm8
  405. movsd .L_2il0floatpacket.14(%rip), %xmm6
  406. addsd %xmm8, %xmm6
  407. mulsd %xmm6, %xmm8
  408. mulsd %xmm7, %xmm8
  409. movsd %xmm8, 8(%rdx)
  410. ..___tag_value_ctanh.23:
  411. call __libm_mul_k64@PLT
  412. ..___tag_value_ctanh.24:
  413. ..B2.23:
  414. movzwl 54(%rsp), %eax
  415. andl $32752, %eax
  416. shrl $4, %eax
  417. movsd .L_2il0floatpacket.13(%rip), %xmm3
  418. testl %eax, %eax
  419. jne ..B2.28
  420. ..B2.24:
  421. testl $1048575, 52(%rsp)
  422. jne ..B2.28
  423. ..B2.25:
  424. cmpl $0, 48(%rsp)
  425. jne ..B2.28
  426. ..B2.26:
  427. movq 48(%rsp), %rax
  428. movq %rax, 32(%rsp)
  429. movq 152(%rsp), %rdx
  430. xorq %rsp, %rdx
  431. movsd 48(%rsp), %xmm1
  432. movsd 24(%rsp), %xmm0
  433. cmpq %fs:40, %rdx
  434. jne ..B2.60
  435. ..B2.27:
  436. addq $160, %rsp
  437. .cfi_def_cfa_offset 32
  438. .cfi_restore 3
  439. popq %rbx
  440. .cfi_def_cfa_offset 24
  441. .cfi_restore 14
  442. popq %r14
  443. .cfi_def_cfa_offset 16
  444. .cfi_restore 12
  445. popq %r12
  446. .cfi_def_cfa_offset 8
  447. ret
  448. .cfi_def_cfa_offset 192
  449. .cfi_offset 3, -32
  450. .cfi_offset 12, -16
  451. .cfi_offset 14, -24
  452. ..B2.28:
  453. cmpl $823, %eax
  454. jl ..B2.30
  455. ..B2.29:
  456. xorl %ecx, %ecx
  457. lea 64(%rsp), %rax
  458. movsd (%rax), %xmm0
  459. jmp ..B2.31
  460. ..B2.30:
  461. lea 16+_CONSTANTS(%rip), %rax
  462. movsd 48(%rsp), %xmm0
  463. mulsd (%rax), %xmm0
  464. lea 64(%rsp), %rax
  465. movsd %xmm0, -8(%rax)
  466. movzwl -2(%rax), %edx
  467. movl %edx, %ecx
  468. andl $32752, %ecx
  469. andl $-32753, %edx
  470. shrl $4, %ecx
  471. orl $-49168, %edx
  472. movw %dx, -2(%rax)
  473. addl $-1279, %ecx
  474. pxor %xmm0, %xmm0
  475. ..B2.31:
  476. movsd 56(%rsp), %xmm1
  477. movaps %xmm0, %xmm6
  478. movaps %xmm3, %xmm2
  479. addl %ecx, %r14d
  480. movsd 8(%rsp), %xmm4
  481. lea 136(%rsp), %rsi
  482. movsd -40(%rsi), %xmm5
  483. lea 120(%rsp), %rdx
  484. movsd -32(%rdx), %xmm7
  485. lea 32(%rsp), %rcx
  486. movl %r14d, %edi
  487. addsd %xmm1, %xmm6
  488. mulsd %xmm6, %xmm2
  489. subsd %xmm6, %xmm1
  490. addsd %xmm0, %xmm1
  491. movaps %xmm2, %xmm0
  492. subsd %xmm6, %xmm0
  493. subsd %xmm0, %xmm2
  494. subsd %xmm2, %xmm6
  495. addsd %xmm2, %xmm4
  496. addsd %xmm1, %xmm6
  497. movaps %xmm6, %xmm8
  498. movaps %xmm4, %xmm10
  499. mulsd %xmm5, %xmm8
  500. mulsd %xmm4, %xmm5
  501. mulsd %xmm7, %xmm10
  502. mulsd %xmm6, %xmm7
  503. addsd %xmm5, %xmm8
  504. movaps %xmm10, %xmm11
  505. addsd %xmm7, %xmm8
  506. movsd %xmm6, (%rax)
  507. addsd %xmm8, %xmm11
  508. mulsd %xmm11, %xmm3
  509. subsd %xmm11, %xmm10
  510. movaps %xmm3, %xmm9
  511. addsd %xmm8, %xmm10
  512. subsd %xmm11, %xmm9
  513. movsd %xmm4, -64(%rdx)
  514. subsd %xmm9, %xmm3
  515. movsd %xmm3, 16(%rdx)
  516. subsd %xmm3, %xmm11
  517. addsd %xmm10, %xmm11
  518. movsd %xmm11, 24(%rdx)
  519. ..___tag_value_ctanh.36:
  520. call __libm_mul_k64@PLT
  521. ..___tag_value_ctanh.37:
  522. ..B2.32:
  523. movsd 24(%rsp), %xmm0
  524. movhpd 32(%rsp), %xmm0
  525. jmp ..B2.54
  526. ..B2.33:
  527. movzwl 54(%rsp), %ebx
  528. andl $32752, %ebx
  529. shrl $4, %ebx
  530. ..B2.34:
  531. testl %ebx, %ebx
  532. jne ..B2.37
  533. ..B2.35:
  534. testl $1048575, 52(%rsp)
  535. jne ..B2.37
  536. ..B2.36:
  537. cmpl $0, 48(%rsp)
  538. je ..B2.39
  539. ..B2.37:
  540. cmpl $2047, %ebx
  541. jge ..B2.45
  542. ..B2.38:
  543. cmpl $2047, %r12d
  544. je ..B2.65
  545. ..B2.39:
  546. movsd 40(%rsp), %xmm0
  547. call tanh@PLT
  548. ..B2.74:
  549. movsd %xmm0, 24(%rsp)
  550. testl %r12d, %r12d
  551. jne ..B2.42
  552. ..B2.40:
  553. testl $1048575, 44(%rsp)
  554. jne ..B2.42
  555. ..B2.41:
  556. cmpl $0, 40(%rsp)
  557. je ..B2.44
  558. ..B2.42:
  559. testl %ebx, %ebx
  560. jle ..B2.64
  561. ..B2.43:
  562. movsd 48(%rsp), %xmm0
  563. call tan@PLT
  564. ..B2.75:
  565. pxor %xmm1, %xmm1
  566. mulsd %xmm0, %xmm1
  567. movsd %xmm1, 32(%rsp)
  568. movsd 24(%rsp), %xmm0
  569. movhpd 32(%rsp), %xmm0
  570. jmp ..B2.54
  571. ..B2.44:
  572. movsd 48(%rsp), %xmm0
  573. call tan@PLT
  574. ..B2.76:
  575. movsd %xmm0, 32(%rsp)
  576. movsd 24(%rsp), %xmm0
  577. movhpd 32(%rsp), %xmm0
  578. jmp ..B2.54
  579. ..B2.45:
  580. cmpl $2047, %r12d
  581. jge ..B2.47
  582. ..B2.46:
  583. movsd 48(%rsp), %xmm0
  584. call tan@PLT
  585. ..B2.77:
  586. movsd %xmm0, 32(%rsp)
  587. movsd %xmm0, 24(%rsp)
  588. movhpd 32(%rsp), %xmm0
  589. jmp ..B2.54
  590. ..B2.47:
  591. testl $1048575, 44(%rsp)
  592. jne ..B2.49
  593. ..B2.48:
  594. cmpl $0, 40(%rsp)
  595. je ..B2.50
  596. ..B2.49:
  597. movsd 40(%rsp), %xmm0
  598. call tanh@PLT
  599. ..B2.78:
  600. movsd 48(%rsp), %xmm1
  601. mulsd %xmm0, %xmm1
  602. movsd %xmm1, 32(%rsp)
  603. movsd %xmm0, 24(%rsp)
  604. movhpd 32(%rsp), %xmm0
  605. jmp ..B2.54
  606. ..B2.50:
  607. testl $1048575, 52(%rsp)
  608. jne ..B2.52
  609. ..B2.51:
  610. cmpl $0, 48(%rsp)
  611. je ..B2.53
  612. ..B2.52:
  613. movsd 48(%rsp), %xmm0
  614. mulsd %xmm0, %xmm0
  615. movsd %xmm0, 48(%rsp)
  616. movsd 40(%rsp), %xmm0
  617. call tanh@PLT
  618. ..B2.79:
  619. lea zeros(%rip), %rax
  620. movhpd (%rax), %xmm0
  621. movsd %xmm0, 24(%rsp)
  622. movhpd %xmm0, 32(%rsp)
  623. jmp ..B2.54
  624. ..B2.53:
  625. movsd 40(%rsp), %xmm0
  626. call tanh@PLT
  627. ..B2.80:
  628. movb 55(%rsp), %dl
  629. lea zeros(%rip), %rax
  630. andb $-128, %dl
  631. lea ones(%rip), %rcx
  632. shrb $7, %dl
  633. movsd (%rax), %xmm1
  634. movzbl %dl, %ebx
  635. mulsd (%rcx,%rbx,8), %xmm1
  636. unpcklpd %xmm1, %xmm0
  637. movsd %xmm0, 24(%rsp)
  638. movhpd %xmm0, 32(%rsp)
  639. ..B2.54:
  640. movq 152(%rsp), %rax
  641. xorq %rsp, %rax
  642. cmpq %fs:40, %rax
  643. jne ..B2.60
  644. ..B2.55:
  645. movaps %xmm0, %xmm1
  646. unpckhpd %xmm0, %xmm1
  647. addq $160, %rsp
  648. .cfi_def_cfa_offset 32
  649. .cfi_restore 3
  650. popq %rbx
  651. .cfi_def_cfa_offset 24
  652. .cfi_restore 14
  653. popq %r14
  654. .cfi_def_cfa_offset 16
  655. .cfi_restore 12
  656. popq %r12
  657. .cfi_def_cfa_offset 8
  658. ret
  659. .cfi_def_cfa_offset 192
  660. .cfi_offset 3, -32
  661. .cfi_offset 12, -16
  662. .cfi_offset 14, -24
  663. ..B2.56:
  664. movb 55(%rsp), %dl
  665. lea 32(%rsp), %rax
  666. movsd %xmm0, (%rax)
  667. andb $-128, %dl
  668. movb 7(%rax), %cl
  669. andb $127, %cl
  670. orb %dl, %cl
  671. movsd -8(%rax), %xmm0
  672. movb %cl, 7(%rax)
  673. movhpd (%rax), %xmm0
  674. jmp ..B2.54
  675. ..B2.57:
  676. testl $1048575, 52(%rsp)
  677. jne ..B2.6
  678. ..B2.58:
  679. cmpl $0, 48(%rsp)
  680. jne ..B2.6
  681. ..B2.59:
  682. pxor %xmm0, %xmm0
  683. jmp ..B2.56
  684. ..B2.60:
  685. call __stack_chk_fail@PLT
  686. ..B2.61:
  687. testl $1048575, 44(%rsp)
  688. jne ..B2.3
  689. ..B2.62:
  690. cmpl $0, 40(%rsp)
  691. jne ..B2.3
  692. jmp ..B2.33
  693. ..B2.64:
  694. pxor %xmm0, %xmm0
  695. mulsd 48(%rsp), %xmm0
  696. movsd %xmm0, 32(%rsp)
  697. movsd 24(%rsp), %xmm0
  698. movhpd 32(%rsp), %xmm0
  699. jmp ..B2.54
  700. ..B2.65:
  701. testl $1048575, 44(%rsp)
  702. jne ..B2.45
  703. ..B2.66:
  704. cmpl $0, 40(%rsp)
  705. jne ..B2.45
  706. ..B2.67:
  707. movsd 40(%rsp), %xmm0
  708. call tanh@PLT
  709. ..B2.81:
  710. movsd %xmm0, 24(%rsp)
  711. jmp ..B2.42
  712. .align 16,0x90
  713. .cfi_endproc
  714. .type ctanh,@function
  715. .size ctanh,.-ctanh
  716. .data
  717. # -- End ctanh
  718. .section .rodata, "a"
  719. .align 16
  720. .align 16
  721. _DBL_MIN_NORMAL:
  722. .long 0
  723. .long 1048576
  724. .type _DBL_MIN_NORMAL,@object
  725. .size _DBL_MIN_NORMAL,8
  726. .align 8
  727. .L_2il0floatpacket.13:
  728. .long 0x02000000,0x41a00000
  729. .type .L_2il0floatpacket.13,@object
  730. .size .L_2il0floatpacket.13,8
  731. .align 8
  732. .L_2il0floatpacket.14:
  733. .long 0x00000000,0x3ff00000
  734. .type .L_2il0floatpacket.14,@object
  735. .size .L_2il0floatpacket.14,8
  736. .align 8
  737. ones:
  738. .long 0x00000000,0x3ff00000
  739. .long 0x00000000,0xbff00000
  740. .type ones,@object
  741. .size ones,16
  742. .align 8
  743. zeros:
  744. .long 0x00000000,0x00000000
  745. .long 0x00000000,0x00000000
  746. .type zeros,@object
  747. .size zeros,16
  748. .align 4
  749. .L_2il0floatpacket.12:
  750. .long 0x00800000
  751. .type .L_2il0floatpacket.12,@object
  752. .size .L_2il0floatpacket.12,4
  753. .align 4
  754. _CONSTANTS:
  755. .long 0
  756. .long 2145386496
  757. .long 0
  758. .long 1048576
  759. .long 0
  760. .long 1341128704
  761. .type _CONSTANTS,@object
  762. .size _CONSTANTS,24
  763. .data
  764. .section .note.GNU-stack, ""
  765. // -- Begin DWARF2 SEGMENT .eh_frame
  766. .section .eh_frame,"a",@progbits
  767. .eh_frame_seg:
  768. .align 1
  769. # End