OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 3136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3147 vmovdqu [edx], ymm0 | 3147 vmovdqu [edx], ymm0 |
3148 lea edx, [edx + 32] | 3148 lea edx, [edx + 32] |
3149 sub ecx, 32 | 3149 sub ecx, 32 |
3150 jg convertloop | 3150 jg convertloop |
3151 vzeroupper | 3151 vzeroupper |
3152 ret | 3152 ret |
3153 } | 3153 } |
3154 } | 3154 } |
3155 #endif // HAS_MIRRORROW_AVX2 | 3155 #endif // HAS_MIRRORROW_AVX2 |
3156 | 3156 |
3157 #ifdef HAS_MIRRORROW_UV_SSSE3 | 3157 #ifdef HAS_MIRRORUVROW_SSSE3 |
3158 // Shuffle table for reversing the bytes of UV channels. | 3158 // Shuffle table for reversing the bytes of UV channels. |
3159 static const uvec8 kShuffleMirrorUV = { | 3159 static const uvec8 kShuffleMirrorUV = { |
3160 14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u | 3160 14u, 12u, 10u, 8u, 6u, 4u, 2u, 0u, 15u, 13u, 11u, 9u, 7u, 5u, 3u, 1u |
3161 }; | 3161 }; |
3162 | 3162 |
3163 __declspec(naked) | 3163 __declspec(naked) |
3164 void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, | 3164 void MirrorUVRow_SSSE3(const uint8* src, uint8* dst_u, uint8* dst_v, |
3165 int width) { | 3165 int width) { |
3166 __asm { | 3166 __asm { |
3167 push edi | 3167 push edi |
(...skipping 12 matching lines...) Expand all Loading... |
3180 movlpd qword ptr [edx], xmm0 | 3180 movlpd qword ptr [edx], xmm0 |
3181 movhpd qword ptr [edx + edi], xmm0 | 3181 movhpd qword ptr [edx + edi], xmm0 |
3182 lea edx, [edx + 8] | 3182 lea edx, [edx + 8] |
3183 sub ecx, 8 | 3183 sub ecx, 8 |
3184 jg convertloop | 3184 jg convertloop |
3185 | 3185 |
3186 pop edi | 3186 pop edi |
3187 ret | 3187 ret |
3188 } | 3188 } |
3189 } | 3189 } |
3190 #endif // HAS_MIRRORROW_UV_SSSE3 | 3190 #endif // HAS_MIRRORUVROW_SSSE3 |
3191 | 3191 |
3192 #ifdef HAS_ARGBMIRRORROW_SSE2 | 3192 #ifdef HAS_ARGBMIRRORROW_SSE2 |
3193 __declspec(naked) | 3193 __declspec(naked) |
3194 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width) { | 3194 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width) { |
3195 __asm { | 3195 __asm { |
3196 mov eax, [esp + 4] // src | 3196 mov eax, [esp + 4] // src |
3197 mov edx, [esp + 8] // dst | 3197 mov edx, [esp + 8] // dst |
3198 mov ecx, [esp + 12] // width | 3198 mov ecx, [esp + 12] // width |
3199 lea eax, [eax - 16 + ecx * 4] // last 4 pixels. | 3199 lea eax, [eax - 16 + ecx * 4] // last 4 pixels. |
3200 | 3200 |
(...skipping 3022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6223 } | 6223 } |
6224 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3 | 6224 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3 |
6225 | 6225 |
6226 #endif // defined(_M_X64) | 6226 #endif // defined(_M_X64) |
6227 #endif // !defined(LIBYUV_DISABLE_X86) && (defined(_M_IX86) || defined(_M_X64)) | 6227 #endif // !defined(LIBYUV_DISABLE_X86) && (defined(_M_IX86) || defined(_M_X64)) |
6228 | 6228 |
6229 #ifdef __cplusplus | 6229 #ifdef __cplusplus |
6230 } // extern "C" | 6230 } // extern "C" |
6231 } // namespace libyuv | 6231 } // namespace libyuv |
6232 #endif | 6232 #endif |
OLD | NEW |