| 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 |
| 11 #include "libyuv/row.h" | 11 #include "libyuv/row.h" |
| 12 #include "libyuv/rotate_row.h" |
| 12 | 13 |
| 13 #include "libyuv/basic_types.h" | 14 #include "libyuv/basic_types.h" |
| 14 | 15 |
| 15 #ifdef __cplusplus | 16 #ifdef __cplusplus |
| 16 namespace libyuv { | 17 namespace libyuv { |
| 17 extern "C" { | 18 extern "C" { |
| 18 #endif | 19 #endif |
| 19 | 20 |
| 20 #if !defined(LIBYUV_DISABLE_MIPS) && \ | 21 #if !defined(LIBYUV_DISABLE_MIPS) && \ |
| 21 defined(__mips_dsp) && (__mips_dsp_rev >= 2) && \ | 22 defined(__mips_dsp) && (__mips_dsp_rev >= 2) && \ |
| 22 (_MIPS_SIM == _MIPS_SIM_ABI32) | 23 (_MIPS_SIM == _MIPS_SIM_ABI32) |
| 23 | 24 |
| 24 void TransposeWx8_MIPS_DSPR2(const uint8* src, int src_stride, | 25 void TransposeWx8_MIPS_DSPR2(const uint8* src, int src_stride, |
| 25 uint8* dst, int dst_stride, | 26 uint8* dst, int dst_stride, int width) { |
| 26 int width) { | |
| 27 __asm__ __volatile__ ( | 27 __asm__ __volatile__ ( |
| 28 ".set push \n" | 28 ".set push \n" |
| 29 ".set noreorder \n" | 29 ".set noreorder \n" |
| 30 "sll $t2, %[src_stride], 0x1 \n" // src_stride x 2 | 30 "sll $t2, %[src_stride], 0x1 \n" // src_stride x 2 |
| 31 "sll $t4, %[src_stride], 0x2 \n" // src_stride x 4 | 31 "sll $t4, %[src_stride], 0x2 \n" // src_stride x 4 |
| 32 "sll $t9, %[src_stride], 0x3 \n" // src_stride x 8 | 32 "sll $t9, %[src_stride], 0x3 \n" // src_stride x 8 |
| 33 "addu $t3, $t2, %[src_stride] \n" | 33 "addu $t3, $t2, %[src_stride] \n" |
| 34 "addu $t5, $t4, %[src_stride] \n" | 34 "addu $t5, $t4, %[src_stride] \n" |
| 35 "addu $t6, $t2, $t4 \n" | 35 "addu $t6, $t2, $t4 \n" |
| 36 "andi $t0, %[dst], 0x3 \n" | 36 "andi $t0, %[dst], 0x3 \n" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 [dst] "+r" (dst), | 99 [dst] "+r" (dst), |
| 100 [width] "+r" (width) | 100 [width] "+r" (width) |
| 101 :[src_stride] "r" (src_stride), | 101 :[src_stride] "r" (src_stride), |
| 102 [dst_stride] "r" (dst_stride) | 102 [dst_stride] "r" (dst_stride) |
| 103 : "t0", "t1", "t2", "t3", "t4", "t5", | 103 : "t0", "t1", "t2", "t3", "t4", "t5", |
| 104 "t6", "t7", "t8", "t9", | 104 "t6", "t7", "t8", "t9", |
| 105 "s0", "s1" | 105 "s0", "s1" |
| 106 ); | 106 ); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void TransposeWx8_FAST_MIPS_DSPR2(const uint8* src, int src_stride, | 109 void TransposeWx8_Fast_MIPS_DSPR2(const uint8* src, int src_stride, |
| 110 uint8* dst, int dst_stride, | 110 uint8* dst, int dst_stride, int width) { |
| 111 int width) { | |
| 112 __asm__ __volatile__ ( | 111 __asm__ __volatile__ ( |
| 113 ".set noat \n" | 112 ".set noat \n" |
| 114 ".set push \n" | 113 ".set push \n" |
| 115 ".set noreorder \n" | 114 ".set noreorder \n" |
| 116 "beqz %[width], 2f \n" | 115 "beqz %[width], 2f \n" |
| 117 " sll $t2, %[src_stride], 0x1 \n" // src_stride x 2 | 116 " sll $t2, %[src_stride], 0x1 \n" // src_stride x 2 |
| 118 "sll $t4, %[src_stride], 0x2 \n" // src_stride x 4 | 117 "sll $t4, %[src_stride], 0x2 \n" // src_stride x 4 |
| 119 "sll $t9, %[src_stride], 0x3 \n" // src_stride x 8 | 118 "sll $t9, %[src_stride], 0x3 \n" // src_stride x 8 |
| 120 "addu $t3, $t2, %[src_stride] \n" | 119 "addu $t3, $t2, %[src_stride] \n" |
| 121 "addu $t5, $t4, %[src_stride] \n" | 120 "addu $t5, $t4, %[src_stride] \n" |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 "s4", "s5", "s6" | 475 "s4", "s5", "s6" |
| 477 ); | 476 ); |
| 478 } | 477 } |
| 479 | 478 |
| 480 #endif // defined(__mips_dsp) && (__mips_dsp_rev >= 2) | 479 #endif // defined(__mips_dsp) && (__mips_dsp_rev >= 2) |
| 481 | 480 |
| 482 #ifdef __cplusplus | 481 #ifdef __cplusplus |
| 483 } // extern "C" | 482 } // extern "C" |
| 484 } // namespace libyuv | 483 } // namespace libyuv |
| 485 #endif | 484 #endif |
| OLD | NEW |