| Index: source/libvpx/vp9/common/arm/neon/vp9_idct16x16_neon.c
|
| ===================================================================
|
| --- source/libvpx/vp9/common/arm/neon/vp9_idct16x16_neon.c (revision 293588)
|
| +++ source/libvpx/vp9/common/arm/neon/vp9_idct16x16_neon.c (working copy)
|
| @@ -30,18 +30,24 @@
|
| uint8_t *dest,
|
| int dest_stride);
|
|
|
| +#if HAVE_NEON_ASM
|
| /* For ARM NEON, d8-d15 are callee-saved registers, and need to be saved. */
|
| extern void vp9_push_neon(int64_t *store);
|
| extern void vp9_pop_neon(int64_t *store);
|
| +#endif // HAVE_NEON_ASM
|
|
|
| void vp9_idct16x16_256_add_neon(const int16_t *input,
|
| uint8_t *dest, int dest_stride) {
|
| +#if HAVE_NEON_ASM
|
| int64_t store_reg[8];
|
| +#endif
|
| int16_t pass1_output[16*16] = {0};
|
| int16_t row_idct_output[16*16] = {0};
|
|
|
| +#if HAVE_NEON_ASM
|
| // save d8-d15 register values.
|
| vp9_push_neon(store_reg);
|
| +#endif
|
|
|
| /* Parallel idct on the upper 8 rows */
|
| // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
|
| @@ -103,8 +109,10 @@
|
| dest+8,
|
| dest_stride);
|
|
|
| +#if HAVE_NEON_ASM
|
| // restore d8-d15 register values.
|
| vp9_pop_neon(store_reg);
|
| +#endif
|
|
|
| return;
|
| }
|
| @@ -111,12 +119,16 @@
|
|
|
| void vp9_idct16x16_10_add_neon(const int16_t *input,
|
| uint8_t *dest, int dest_stride) {
|
| +#if HAVE_NEON_ASM
|
| int64_t store_reg[8];
|
| +#endif
|
| int16_t pass1_output[16*16] = {0};
|
| int16_t row_idct_output[16*16] = {0};
|
|
|
| +#if HAVE_NEON_ASM
|
| // save d8-d15 register values.
|
| vp9_push_neon(store_reg);
|
| +#endif
|
|
|
| /* Parallel idct on the upper 8 rows */
|
| // First pass processes even elements 0, 2, 4, 6, 8, 10, 12, 14 and save the
|
| @@ -165,8 +177,10 @@
|
| dest+8,
|
| dest_stride);
|
|
|
| +#if HAVE_NEON_ASM
|
| // restore d8-d15 register values.
|
| vp9_pop_neon(store_reg);
|
| +#endif
|
|
|
| return;
|
| }
|
|
|