OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The Android Open Source Project | 2 * Copyright 2014 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #if defined(__clang__) || (defined(__GNUC__) && !defined(SK_BUILD_FOR_MAC)) | 8 #if defined(__clang__) || (defined(__GNUC__) && !defined(SK_BUILD_FOR_MAC)) |
9 | 9 |
10 #define CFI_PUSH(REG) \ | 10 #define CFI_PUSH(REG) \ |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 * memory latency worse-case. | 53 * memory latency worse-case. |
54 */ | 54 */ |
55 | 55 |
56 #ifdef __clang__ | 56 #ifdef __clang__ |
57 .text | 57 .text |
58 #else | 58 #else |
59 .section .text.sse4.2,"ax",@progbits | 59 .section .text.sse4.2,"ax",@progbits |
60 .type S32A_Opaque_BlitRow32_SSE4_asm, @function | 60 .type S32A_Opaque_BlitRow32_SSE4_asm, @function |
61 #endif | 61 #endif |
62 .p2align 4 | 62 .p2align 4 |
63 #if defined(__clang__) && defined(SK_BUILD_FOR_MAC) | 63 #if defined(SK_BUILD_FOR_MAC) |
64 .global _S32A_Opaque_BlitRow32_SSE4_asm | 64 .global _S32A_Opaque_BlitRow32_SSE4_asm |
| 65 .private_extern _S32A_Opaque_BlitRow32_SSE4_asm |
65 _S32A_Opaque_BlitRow32_SSE4_asm: | 66 _S32A_Opaque_BlitRow32_SSE4_asm: |
66 #else | 67 #else |
67 .global S32A_Opaque_BlitRow32_SSE4_asm | 68 .global S32A_Opaque_BlitRow32_SSE4_asm |
| 69 .hidden S32A_Opaque_BlitRow32_SSE4_asm |
68 S32A_Opaque_BlitRow32_SSE4_asm: | 70 S32A_Opaque_BlitRow32_SSE4_asm: |
69 #endif | 71 #endif |
70 .cfi_startproc | 72 .cfi_startproc |
71 movl 8(%esp), %eax // Source pointer | 73 movl 8(%esp), %eax // Source pointer |
72 movl 12(%esp), %ecx // Pixel count | 74 movl 12(%esp), %ecx // Pixel count |
73 movl 4(%esp), %edx // Destination pointer | 75 movl 4(%esp), %edx // Destination pointer |
74 prefetcht0 (%eax) | 76 prefetcht0 (%eax) |
75 | 77 |
76 // Setup SSE constants | 78 // Setup SSE constants |
77 pcmpeqd %xmm7, %xmm7 // 0xFF000000 mask to check alpha | 79 pcmpeqd %xmm7, %xmm7 // 0xFF000000 mask to check alpha |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 paddb %xmm3, %xmm1 // Add source and destination pixels tog
ether | 462 paddb %xmm3, %xmm1 // Add source and destination pixels tog
ether |
461 movdqa %xmm1, -16(%edx, %edi) // Store four destination pixels | 463 movdqa %xmm1, -16(%edx, %edi) // Store four destination pixels |
462 js .LSmallRemaining // Reuse code from small loop | 464 js .LSmallRemaining // Reuse code from small loop |
463 jmp .LRemain1 | 465 jmp .LRemain1 |
464 | 466 |
465 .cfi_endproc | 467 .cfi_endproc |
466 #ifndef __clang__ | 468 #ifndef __clang__ |
467 .size S32A_Opaque_BlitRow32_SSE4_asm, .-S32A_Opaque_BlitRow32_SSE4_asm | 469 .size S32A_Opaque_BlitRow32_SSE4_asm, .-S32A_Opaque_BlitRow32_SSE4_asm |
468 #endif | 470 #endif |
469 #endif | 471 #endif |
OLD | NEW |