OLD | NEW |
1 // VERSION 2 | 1 // VERSION 2 |
2 /* | 2 /* |
3 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 3 * Copyright 2011 The LibYuv Project Authors. All rights reserved. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license | 5 * Use of this source code is governed by a BSD-style license |
6 * that can be found in the LICENSE file in the root of the source | 6 * that can be found in the LICENSE file in the root of the source |
7 * tree. An additional intellectual property rights grant can be found | 7 * tree. An additional intellectual property rights grant can be found |
8 * in the file PATENTS. All contributing project authors may | 8 * in the file PATENTS. All contributing project authors may |
9 * be found in the AUTHORS file in the root of the source tree. | 9 * be found in the AUTHORS file in the root of the source tree. |
10 */ | 10 */ |
(...skipping 4853 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4864 ); | 4864 ); |
4865 } | 4865 } |
4866 #endif // HAS_INTERPOLATEROW_SSSE3 | 4866 #endif // HAS_INTERPOLATEROW_SSSE3 |
4867 | 4867 |
4868 #ifdef HAS_INTERPOLATEROW_AVX2 | 4868 #ifdef HAS_INTERPOLATEROW_AVX2 |
4869 // Bilinear filter 32x2 -> 32x1 | 4869 // Bilinear filter 32x2 -> 32x1 |
4870 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, | 4870 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, |
4871 ptrdiff_t src_stride, int dst_width, | 4871 ptrdiff_t src_stride, int dst_width, |
4872 int source_y_fraction) { | 4872 int source_y_fraction) { |
4873 asm volatile ( | 4873 asm volatile ( |
4874 "shr %3 \n" | |
4875 "cmp $0x0,%3 \n" | 4874 "cmp $0x0,%3 \n" |
4876 "je 100f \n" | 4875 "je 100f \n" |
4877 "sub %1,%0 \n" | 4876 "sub %1,%0 \n" |
4878 "cmp $0x40,%3 \n" | 4877 "cmp $0x80,%3 \n" |
4879 "je 50f \n" | 4878 "je 50f \n" |
4880 | 4879 |
4881 "vmovd %3,%%xmm0 \n" | 4880 "vmovd %3,%%xmm0 \n" |
4882 "neg %3 \n" | 4881 "neg %3 \n" |
4883 "add $0x100,%3 \n" | 4882 "add $0x100,%3 \n" |
4884 "vmovd %3,%%xmm5 \n" | 4883 "vmovd %3,%%xmm5 \n" |
4885 "vpunpcklbw %%xmm0,%%xmm5,%%xmm5 \n" | 4884 "vpunpcklbw %%xmm0,%%xmm5,%%xmm5 \n" |
4886 "vpunpcklwd %%xmm5,%%xmm5,%%xmm5 \n" | 4885 "vpunpcklwd %%xmm5,%%xmm5,%%xmm5 \n" |
4887 "vbroadcastss %%xmm5,%%ymm5 \n" | 4886 "vbroadcastss %%xmm5,%%ymm5 \n" |
4888 "mov $0x80808080,%%eax \n" | 4887 "mov $0x80808080,%%eax \n" |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5444 ); | 5443 ); |
5445 } | 5444 } |
5446 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3 | 5445 #endif // HAS_ARGBLUMACOLORTABLEROW_SSSE3 |
5447 | 5446 |
5448 #endif // defined(__x86_64__) || defined(__i386__) | 5447 #endif // defined(__x86_64__) || defined(__i386__) |
5449 | 5448 |
5450 #ifdef __cplusplus | 5449 #ifdef __cplusplus |
5451 } // extern "C" | 5450 } // extern "C" |
5452 } // namespace libyuv | 5451 } // namespace libyuv |
5453 #endif | 5452 #endif |
OLD | NEW |