summaryrefslogtreecommitdiff
path: root/simd/arm/common/jidctred-neon.c
diff options
context:
space:
mode:
Diffstat (limited to 'simd/arm/common/jidctred-neon.c')
-rw-r--r--simd/arm/common/jidctred-neon.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/simd/arm/common/jidctred-neon.c b/simd/arm/common/jidctred-neon.c
index 3c9393b..ed4232c 100644
--- a/simd/arm/common/jidctred-neon.c
+++ b/simd/arm/common/jidctred-neon.c
@@ -218,8 +218,8 @@ void jsimd_idct_4x4_neon(void *dct_table,
bitmap = vorrq_s16(bitmap, row6);
bitmap = vorrq_s16(bitmap, row7);
- int64_t left_ac_bitmap = vreinterpret_s64_s16(vget_low_s16(bitmap));
- int64_t right_ac_bitmap = vreinterpret_s64_s16(vget_high_s16(bitmap));
+ int64_t left_ac_bitmap = vgetq_lane_s64(vreinterpretq_s64_s16(bitmap), 0);
+ int64_t right_ac_bitmap = vgetq_lane_s64(vreinterpretq_s64_s16(bitmap), 1);
/* Load constants for IDCT computation. */
const int16x4x3_t consts = vld1_s16_x3(jsimd_idct_4x4_neon_consts);
@@ -453,7 +453,9 @@ void jsimd_idct_4x4_neon(void *dct_table,
/* Interleaving store completes the transpose. */
uint8x8x2_t output_0123 = vzip_u8(vqmovun_s16(output_cols_02),
vqmovun_s16(output_cols_13));
- uint16x4x2_t output_01_23 = { output_0123.val[0], output_0123.val[1] };
+ uint16x4x2_t output_01_23 = { vreinterpret_u16_u8(output_0123.val[0]),
+ vreinterpret_u16_u8(output_0123.val[1])
+ };
/* Store 4x4 block to memory. */
JSAMPROW outptr0 = output_buf[0] + output_col;