OLD | NEW |
1 ; | 1 ; |
2 ; jdsamss2-64.asm - upsampling (64-bit SSE2) | 2 ; jdsamss2-64.asm - upsampling (64-bit SSE2) |
3 ; | 3 ; |
4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB | 4 ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB |
5 ; Copyright 2009 D. R. Commander | 5 ; Copyright 2009 D. R. Commander |
6 ; | 6 ; |
7 ; Based on | 7 ; Based on |
8 ; x86 SIMD extension for IJG JPEG library | 8 ; x86 SIMD extension for IJG JPEG library |
9 ; Copyright (C) 1999-2006, MIYASAKA Masaru. | 9 ; Copyright (C) 1999-2006, MIYASAKA Masaru. |
10 ; For conditions of distribution and use, see copyright notice in jsimdext.inc | 10 ; For conditions of distribution and use, see copyright notice in jsimdext.inc |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 align 16 | 61 align 16 |
62 global EXTN(jsimd_h2v1_fancy_upsample_sse2) PRIVATE | 62 global EXTN(jsimd_h2v1_fancy_upsample_sse2) PRIVATE |
63 | 63 |
64 EXTN(jsimd_h2v1_fancy_upsample_sse2): | 64 EXTN(jsimd_h2v1_fancy_upsample_sse2): |
65 push rbp | 65 push rbp |
66 mov rax,rsp | 66 mov rax,rsp |
67 mov rbp,rsp | 67 mov rbp,rsp |
68 collect_args | 68 collect_args |
69 | 69 |
70 » mov» rax, r11 ; colctr | 70 » mov» eax, r11d ; colctr |
71 test rax,rax | 71 test rax,rax |
72 jz near .return | 72 jz near .return |
73 | 73 |
74 » mov» rcx, r10» ; rowctr | 74 » mov» ecx, r10d» ; rowctr |
75 test rcx,rcx | 75 test rcx,rcx |
76 jz near .return | 76 jz near .return |
77 | 77 |
78 mov rsi, r12 ; input_data | 78 mov rsi, r12 ; input_data |
79 mov rdi, r13 | 79 mov rdi, r13 |
80 mov rdi, JSAMPARRAY [rdi] ; output_data | 80 mov rdi, JSAMPARRAY [rdi] ; output_data |
81 .rowloop: | 81 .rowloop: |
82 push rax ; colctr | 82 push rax ; colctr |
83 push rdi | 83 push rdi |
84 push rsi | 84 push rsi |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 | 499 |
500 align 16 | 500 align 16 |
501 global EXTN(jsimd_h2v1_upsample_sse2) PRIVATE | 501 global EXTN(jsimd_h2v1_upsample_sse2) PRIVATE |
502 | 502 |
503 EXTN(jsimd_h2v1_upsample_sse2): | 503 EXTN(jsimd_h2v1_upsample_sse2): |
504 push rbp | 504 push rbp |
505 mov rax,rsp | 505 mov rax,rsp |
506 mov rbp,rsp | 506 mov rbp,rsp |
507 collect_args | 507 collect_args |
508 | 508 |
509 » mov» rdx, r11 | 509 » mov» edx, r11d |
510 add rdx, byte (2*SIZEOF_XMMWORD)-1 | 510 add rdx, byte (2*SIZEOF_XMMWORD)-1 |
511 and rdx, byte -(2*SIZEOF_XMMWORD) | 511 and rdx, byte -(2*SIZEOF_XMMWORD) |
512 jz near .return | 512 jz near .return |
513 | 513 |
514 mov rcx, r10 ; rowctr | 514 mov rcx, r10 ; rowctr |
515 test rcx,rcx | 515 test rcx,rcx |
516 jz short .return | 516 jz short .return |
517 | 517 |
518 mov rsi, r12 ; input_data | 518 mov rsi, r12 ; input_data |
519 mov rdi, r13 | 519 mov rdi, r13 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 align 16 | 589 align 16 |
590 global EXTN(jsimd_h2v2_upsample_sse2) PRIVATE | 590 global EXTN(jsimd_h2v2_upsample_sse2) PRIVATE |
591 | 591 |
592 EXTN(jsimd_h2v2_upsample_sse2): | 592 EXTN(jsimd_h2v2_upsample_sse2): |
593 push rbp | 593 push rbp |
594 mov rax,rsp | 594 mov rax,rsp |
595 mov rbp,rsp | 595 mov rbp,rsp |
596 collect_args | 596 collect_args |
597 push rbx | 597 push rbx |
598 | 598 |
599 » mov» rdx, r11 | 599 » mov» edx, r11d |
600 add rdx, byte (2*SIZEOF_XMMWORD)-1 | 600 add rdx, byte (2*SIZEOF_XMMWORD)-1 |
601 and rdx, byte -(2*SIZEOF_XMMWORD) | 601 and rdx, byte -(2*SIZEOF_XMMWORD) |
602 jz near .return | 602 jz near .return |
603 | 603 |
604 mov rcx, r10 ; rowctr | 604 mov rcx, r10 ; rowctr |
605 test rcx,rcx | 605 test rcx,rcx |
606 jz near .return | 606 jz near .return |
607 | 607 |
608 mov rsi, r12 ; input_data | 608 mov rsi, r12 ; input_data |
609 mov rdi, r13 | 609 mov rdi, r13 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 | 662 |
663 .return: | 663 .return: |
664 pop rbx | 664 pop rbx |
665 uncollect_args | 665 uncollect_args |
666 pop rbp | 666 pop rbp |
667 ret | 667 ret |
668 | 668 |
669 ; For some reason, the OS X linker does not honor the request to align the | 669 ; For some reason, the OS X linker does not honor the request to align the |
670 ; segment unless we do this. | 670 ; segment unless we do this. |
671 align 16 | 671 align 16 |
OLD | NEW |