| 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 |