/tests/gcc.c-torture/job_601_1465/bin/va-arg-18-0.asm

https://github.com/kframework/X86-64-semantics · Assembly · 528 lines · 525 code · 3 blank · 0 comment · 0 complexity · ba6095fbcddc9dbffbd0e8c7cf44625b MD5 · raw file

  1. .text
  2. .globl strlen
  3. strlen:
  4. pushq %rbp
  5. movq %rsp, %rbp
  6. movq %rdi, -24(%rbp)
  7. movq $0, -8(%rbp)
  8. jmp L2
  9. L3:
  10. addq $1, -8(%rbp)
  11. L2:
  12. movq -24(%rbp), %rdx
  13. movq -8(%rbp), %rax
  14. addq %rdx, %rax
  15. movzbl (%rax), %eax
  16. testb %al, %al
  17. jne L3
  18. movq -8(%rbp), %rax
  19. popq %rbp
  20. ret
  21. .globl strcpy
  22. strcpy:
  23. pushq %rbp
  24. movq %rsp, %rbp
  25. movq %rdi, -24(%rbp)
  26. movq %rsi, -32(%rbp)
  27. movq -24(%rbp), %rax
  28. movq %rax, -8(%rbp)
  29. nop
  30. L6:
  31. movq -24(%rbp), %rax
  32. leaq 1(%rax), %rdx
  33. movq %rdx, -24(%rbp)
  34. movq -32(%rbp), %rdx
  35. leaq 1(%rdx), %rcx
  36. movq %rcx, -32(%rbp)
  37. movzbl (%rdx), %edx
  38. movb %dl, (%rax)
  39. movzbl (%rax), %eax
  40. testb %al, %al
  41. jne L6
  42. movq -8(%rbp), %rax
  43. popq %rbp
  44. ret
  45. .globl strcmp
  46. strcmp:
  47. pushq %rbp
  48. movq %rsp, %rbp
  49. movq %rdi, -8(%rbp)
  50. movq %rsi, -16(%rbp)
  51. jmp L9
  52. L11:
  53. addq $1, -8(%rbp)
  54. addq $1, -16(%rbp)
  55. L9:
  56. movq -8(%rbp), %rax
  57. movzbl (%rax), %eax
  58. testb %al, %al
  59. je L10
  60. movq -8(%rbp), %rax
  61. movzbl (%rax), %edx
  62. movq -16(%rbp), %rax
  63. movzbl (%rax), %eax
  64. cmpb %al, %dl
  65. je L11
  66. L10:
  67. movq -8(%rbp), %rax
  68. movzbl (%rax), %eax
  69. movzbl %al, %edx
  70. movq -16(%rbp), %rax
  71. movzbl (%rax), %eax
  72. movzbl %al, %eax
  73. subl %eax, %edx
  74. movl %edx, %eax
  75. popq %rbp
  76. ret
  77. .globl strchr
  78. strchr:
  79. pushq %rbp
  80. movq %rsp, %rbp
  81. movq %rdi, -8(%rbp)
  82. movl %esi, -12(%rbp)
  83. jmp L14
  84. L16:
  85. movq -8(%rbp), %rax
  86. leaq 1(%rax), %rdx
  87. movq %rdx, -8(%rbp)
  88. movzbl (%rax), %eax
  89. testb %al, %al
  90. jne L14
  91. movl $0, %eax
  92. jmp L15
  93. L14:
  94. movq -8(%rbp), %rax
  95. movzbl (%rax), %eax
  96. movl -12(%rbp), %edx
  97. cmpb %dl, %al
  98. jne L16
  99. movq -8(%rbp), %rax
  100. L15:
  101. popq %rbp
  102. ret
  103. .globl strncpy
  104. strncpy:
  105. pushq %rbp
  106. movq %rsp, %rbp
  107. movq %rdi, -24(%rbp)
  108. movq %rsi, -32(%rbp)
  109. movq %rdx, -40(%rbp)
  110. movq -24(%rbp), %rax
  111. movq %rax, -8(%rbp)
  112. L20:
  113. movq -40(%rbp), %rax
  114. leaq -1(%rax), %rdx
  115. movq %rdx, -40(%rbp)
  116. testq %rax, %rax
  117. jne L18
  118. movq -8(%rbp), %rax
  119. jmp L19
  120. L18:
  121. movq -24(%rbp), %rax
  122. leaq 1(%rax), %rdx
  123. movq %rdx, -24(%rbp)
  124. movq -32(%rbp), %rdx
  125. leaq 1(%rdx), %rcx
  126. movq %rcx, -32(%rbp)
  127. movzbl (%rdx), %edx
  128. movb %dl, (%rax)
  129. movzbl (%rax), %eax
  130. testb %al, %al
  131. jne L20
  132. jmp L21
  133. L22:
  134. movq -24(%rbp), %rax
  135. leaq 1(%rax), %rdx
  136. movq %rdx, -24(%rbp)
  137. movb $0, (%rax)
  138. L21:
  139. movq -40(%rbp), %rax
  140. leaq -1(%rax), %rdx
  141. movq %rdx, -40(%rbp)
  142. testq %rax, %rax
  143. jne L22
  144. movq -8(%rbp), %rax
  145. L19:
  146. popq %rbp
  147. ret
  148. .globl strncmp
  149. strncmp:
  150. pushq %rbp
  151. movq %rsp, %rbp
  152. movq %rdi, -8(%rbp)
  153. movq %rsi, -16(%rbp)
  154. movq %rdx, -24(%rbp)
  155. jmp L24
  156. L26:
  157. movq -8(%rbp), %rax
  158. leaq 1(%rax), %rdx
  159. movq %rdx, -8(%rbp)
  160. movzbl (%rax), %ecx
  161. movq -16(%rbp), %rax
  162. leaq 1(%rax), %rdx
  163. movq %rdx, -16(%rbp)
  164. movzbl (%rax), %eax
  165. cmpb %al, %cl
  166. je L24
  167. movq -8(%rbp), %rax
  168. subq $1, %rax
  169. movzbl (%rax), %eax
  170. movzbl %al, %edx
  171. movq -16(%rbp), %rax
  172. subq $1, %rax
  173. movzbl (%rax), %eax
  174. movzbl %al, %eax
  175. subl %eax, %edx
  176. movl %edx, %eax
  177. jmp L25
  178. L24:
  179. movq -24(%rbp), %rax
  180. leaq -1(%rax), %rdx
  181. movq %rdx, -24(%rbp)
  182. testq %rax, %rax
  183. jne L26
  184. movl $0, %eax
  185. L25:
  186. popq %rbp
  187. ret
  188. .globl strrchr
  189. strrchr:
  190. pushq %rbp
  191. movq %rsp, %rbp
  192. movq %rdi, -24(%rbp)
  193. movl %esi, -28(%rbp)
  194. movq $0, -8(%rbp)
  195. L29:
  196. movq -24(%rbp), %rax
  197. movzbl (%rax), %eax
  198. movl -28(%rbp), %edx
  199. cmpb %dl, %al
  200. jne L28
  201. movq -24(%rbp), %rax
  202. movq %rax, -8(%rbp)
  203. L28:
  204. movq -24(%rbp), %rax
  205. leaq 1(%rax), %rdx
  206. movq %rdx, -24(%rbp)
  207. movzbl (%rax), %eax
  208. testb %al, %al
  209. jne L29
  210. movq -8(%rbp), %rax
  211. popq %rbp
  212. ret
  213. .globl memcmp
  214. memcmp:
  215. pushq %rbp
  216. movq %rsp, %rbp
  217. movq %rdi, -24(%rbp)
  218. movq %rsi, -32(%rbp)
  219. movq %rdx, -40(%rbp)
  220. movq -24(%rbp), %rax
  221. movq %rax, -16(%rbp)
  222. movq -32(%rbp), %rax
  223. movq %rax, -8(%rbp)
  224. jmp L32
  225. L35:
  226. movq -16(%rbp), %rax
  227. movzbl (%rax), %edx
  228. movq -8(%rbp), %rax
  229. movzbl (%rax), %eax
  230. cmpb %al, %dl
  231. je L33
  232. movq -16(%rbp), %rax
  233. movzbl (%rax), %eax
  234. movzbl %al, %edx
  235. movq -8(%rbp), %rax
  236. movzbl (%rax), %eax
  237. movzbl %al, %eax
  238. subl %eax, %edx
  239. movl %edx, %eax
  240. jmp L34
  241. L33:
  242. addq $1, -16(%rbp)
  243. addq $1, -8(%rbp)
  244. L32:
  245. movq -40(%rbp), %rax
  246. leaq -1(%rax), %rdx
  247. movq %rdx, -40(%rbp)
  248. testq %rax, %rax
  249. jne L35
  250. movl $0, %eax
  251. L34:
  252. popq %rbp
  253. ret
  254. .globl __stack_chk_fail
  255. __stack_chk_fail:
  256. pushq %rbp
  257. movq %rsp, %rbp
  258. movq $-1, %rax
  259. jmp %rax
  260. nop
  261. popq %rbp
  262. ret
  263. .globl exit
  264. exit:
  265. pushq %rbp
  266. movq %rsp, %rbp
  267. movl %edi, -4(%rbp)
  268. movq $-1, %rax
  269. jmp %rax
  270. nop
  271. popq %rbp
  272. ret
  273. .globl abort
  274. abort:
  275. pushq %rbp
  276. movq %rsp, %rbp
  277. movq $-1, %rax
  278. jmp %rax
  279. nop
  280. popq %rbp
  281. ret
  282. .globl memset
  283. memset:
  284. pushq %rbp
  285. movq %rsp, %rbp
  286. movq %rdi, -24(%rbp)
  287. movl %esi, -28(%rbp)
  288. movq %rdx, -40(%rbp)
  289. movq -24(%rbp), %rax
  290. movq %rax, -8(%rbp)
  291. jmp L40
  292. L41:
  293. movq -8(%rbp), %rax
  294. leaq 1(%rax), %rdx
  295. movq %rdx, -8(%rbp)
  296. movl -28(%rbp), %edx
  297. movb %dl, (%rax)
  298. L40:
  299. movq -40(%rbp), %rax
  300. leaq -1(%rax), %rdx
  301. movq %rdx, -40(%rbp)
  302. testq %rax, %rax
  303. jne L41
  304. movq -24(%rbp), %rax
  305. popq %rbp
  306. ret
  307. .globl memcpy
  308. memcpy:
  309. pushq %rbp
  310. movq %rsp, %rbp
  311. movq %rdi, -24(%rbp)
  312. movq %rsi, -32(%rbp)
  313. movq %rdx, -40(%rbp)
  314. movq -24(%rbp), %rax
  315. movq %rax, -16(%rbp)
  316. movq -32(%rbp), %rax
  317. movq %rax, -8(%rbp)
  318. jmp L44
  319. L45:
  320. movq -16(%rbp), %rax
  321. leaq 1(%rax), %rdx
  322. movq %rdx, -16(%rbp)
  323. movq -8(%rbp), %rdx
  324. leaq 1(%rdx), %rcx
  325. movq %rcx, -8(%rbp)
  326. movzbl (%rdx), %edx
  327. movb %dl, (%rax)
  328. L44:
  329. movq -40(%rbp), %rax
  330. leaq -1(%rax), %rdx
  331. movq %rdx, -40(%rbp)
  332. testq %rax, %rax
  333. jne L45
  334. movq -24(%rbp), %rax
  335. popq %rbp
  336. ret
  337. .globl free
  338. free:
  339. pushq %rbp
  340. movq %rsp, %rbp
  341. movq %rdi, -8(%rbp)
  342. nop
  343. popq %rbp
  344. ret
  345. .globl isprint
  346. isprint:
  347. pushq %rbp
  348. movq %rsp, %rbp
  349. movl %edi, -4(%rbp)
  350. cmpl $96, -4(%rbp)
  351. jle L49
  352. cmpl $122, -4(%rbp)
  353. jg L49
  354. movl $1, %eax
  355. jmp L50
  356. L49:
  357. cmpl $64, -4(%rbp)
  358. jle L51
  359. cmpl $90, -4(%rbp)
  360. jg L51
  361. movl $1, %eax
  362. jmp L50
  363. L51:
  364. cmpl $47, -4(%rbp)
  365. jle L52
  366. cmpl $57, -4(%rbp)
  367. jg L52
  368. movl $1, %eax
  369. jmp L50
  370. L52:
  371. movl $0, %eax
  372. L50:
  373. popq %rbp
  374. ret
  375. .globl f
  376. f:
  377. pushq %rbp
  378. movq %rsp, %rbp
  379. subq $272, %rsp
  380. vmovsd %xmm0, -216(%rbp)
  381. vmovsd %xmm1, -224(%rbp)
  382. vmovsd %xmm2, -232(%rbp)
  383. vmovsd %xmm3, -240(%rbp)
  384. vmovsd %xmm4, -248(%rbp)
  385. vmovsd %xmm5, -256(%rbp)
  386. vmovsd %xmm6, -264(%rbp)
  387. vmovsd %xmm7, -272(%rbp)
  388. movq %rdi, -176(%rbp)
  389. movq %rsi, -168(%rbp)
  390. movq %rdx, -160(%rbp)
  391. movq %rcx, -152(%rbp)
  392. movq %r8, -144(%rbp)
  393. movq %r9, -136(%rbp)
  394. testb %al, %al
  395. movq $40, %rax
  396. movq %rax, -184(%rbp)
  397. xorl %eax, %eax
  398. movl $0, -208(%rbp)
  399. movl $176, -204(%rbp)
  400. leaq 24(%rbp), %rax
  401. movq %rax, -200(%rbp)
  402. leaq -176(%rbp), %rax
  403. movq %rax, -192(%rbp)
  404. movl -208(%rbp), %eax
  405. cmpl $48, %eax
  406. jnb L55
  407. movq -192(%rbp), %rax
  408. movl -208(%rbp), %edx
  409. movl %edx, %edx
  410. addq %rdx, %rax
  411. movl -208(%rbp), %edx
  412. addl $8, %edx
  413. movl %edx, -208(%rbp)
  414. jmp L56
  415. L55:
  416. movq -200(%rbp), %rax
  417. leaq 8(%rax), %rdx
  418. movq %rdx, -200(%rbp)
  419. L56:
  420. movl (%rax), %eax
  421. cmpl $10, %eax
  422. je L57
  423. call abort
  424. L57:
  425. movl -208(%rbp), %eax
  426. cmpl $48, %eax
  427. jnb L58
  428. movq -192(%rbp), %rax
  429. movl -208(%rbp), %edx
  430. movl %edx, %edx
  431. addq %rdx, %rax
  432. movl -208(%rbp), %edx
  433. addl $8, %edx
  434. movl %edx, -208(%rbp)
  435. jmp L59
  436. L58:
  437. movq -200(%rbp), %rax
  438. leaq 8(%rax), %rdx
  439. movq %rdx, -200(%rbp)
  440. L59:
  441. movl (%rax), %eax
  442. cmpl $11, %eax
  443. je L60
  444. call abort
  445. L60:
  446. movl -208(%rbp), %eax
  447. cmpl $48, %eax
  448. jnb L61
  449. movq -192(%rbp), %rax
  450. movl -208(%rbp), %edx
  451. movl %edx, %edx
  452. addq %rdx, %rax
  453. movl -208(%rbp), %edx
  454. addl $8, %edx
  455. movl %edx, -208(%rbp)
  456. jmp L62
  457. L61:
  458. movq -200(%rbp), %rax
  459. leaq 8(%rax), %rdx
  460. movq %rdx, -200(%rbp)
  461. L62:
  462. movl (%rax), %eax
  463. cmpl $12, %eax
  464. je L65
  465. call abort
  466. L65:
  467. nop
  468. movq -184(%rbp), %rax
  469. xorq $40, %rax
  470. je L64
  471. call __stack_chk_fail
  472. L64:
  473. leave
  474. ret
  475. .globl main
  476. .globl _start
  477. _start:
  478. pushq %rbp
  479. movq %rsp, %rbp
  480. vmovsd LC0(%rip), %xmm7
  481. vmovsd LC1(%rip), %xmm6
  482. vmovsd LC2(%rip), %xmm5
  483. vmovsd LC3(%rip), %xmm4
  484. vmovsd LC4(%rip), %xmm3
  485. vmovsd LC5(%rip), %xmm2
  486. vmovsd LC6(%rip), %xmm1
  487. movabsq $4607182418800017408, %rax
  488. subq $8, %rsp
  489. vmovsd LC8(%rip), %xmm0
  490. leaq -8(%rsp), %rsp
  491. vmovsd %xmm0, (%rsp)
  492. movl $12, %edx
  493. movl $11, %esi
  494. movl $10, %edi
  495. vmovq %rax, %xmm0
  496. movl $8, %eax
  497. call f
  498. addq $16, %rsp
  499. movl $0, %edi
  500. call exit
  501. .section .rodata
  502. LC0:
  503. .long 0
  504. .long 1075838976
  505. LC1:
  506. .long 0
  507. .long 1075576832
  508. LC2:
  509. .long 0
  510. .long 1075314688
  511. LC3:
  512. .long 0
  513. .long 1075052544
  514. LC4:
  515. .long 0
  516. .long 1074790400
  517. LC5:
  518. .long 0
  519. .long 1074266112
  520. LC6:
  521. .long 0
  522. .long 1073741824
  523. LC8:
  524. .long 0
  525. .long 1075970048