]> granicus.if.org Git - libvpx/commitdiff
Update idct NEON optimization to not use narrowing saturating shift
authorLinfeng Zhang <linfengz@google.com>
Tue, 22 Nov 2016 22:21:36 +0000 (14:21 -0800)
committerLinfeng Zhang <linfengz@google.com>
Wed, 7 Dec 2016 18:25:09 +0000 (10:25 -0800)
Change-Id: Iae517017217dbacd638d40fcfeeb0f4bba7b8b8b

vp9/common/arm/neon/vp9_iht4x4_add_neon.c
vp9/common/arm/neon/vp9_iht8x8_add_neon.c
vpx_dsp/arm/idct16x16_add_neon.asm
vpx_dsp/arm/idct16x16_add_neon.c
vpx_dsp/arm/idct32x32_add_neon.c
vpx_dsp/arm/idct4x4_add_neon.asm
vpx_dsp/arm/idct8x8_add_neon.asm

index cbd61de90abd09ffc169ad4df33796543e926f77..45040d745bec5fc1c6ef0190b42992faae84bc98 100644 (file)
@@ -77,10 +77,10 @@ static INLINE void IDCT4x4_1D(int16x4_t *d0s16, int16x4_t *d1s16,
   q15s32 = vmlsl_s16(q15s32, d19s16, *d0s16);
   q10s32 = vmlal_s16(q10s32, d19s16, *d2s16);
 
-  d26s16 = vqrshrn_n_s32(q13s32, 14);
-  d27s16 = vqrshrn_n_s32(q14s32, 14);
-  d29s16 = vqrshrn_n_s32(q15s32, 14);
-  d28s16 = vqrshrn_n_s32(q10s32, 14);
+  d26s16 = vrshrn_n_s32(q13s32, 14);
+  d27s16 = vrshrn_n_s32(q14s32, 14);
+  d29s16 = vrshrn_n_s32(q15s32, 14);
+  d28s16 = vrshrn_n_s32(q10s32, 14);
 
   q13s16 = vcombine_s16(d26s16, d27s16);
   q14s16 = vcombine_s16(d28s16, d29s16);
@@ -125,10 +125,10 @@ static INLINE void IADST4x4_1D(int16x4_t *d3s16, int16x4_t *d4s16,
   q14s32 = vaddq_s32(q11s32, q12s32);
   q10s32 = vsubq_s32(q10s32, q12s32);
 
-  d16s16 = vqrshrn_n_s32(q13s32, 14);
-  d17s16 = vqrshrn_n_s32(q14s32, 14);
-  d18s16 = vqrshrn_n_s32(q15s32, 14);
-  d19s16 = vqrshrn_n_s32(q10s32, 14);
+  d16s16 = vrshrn_n_s32(q13s32, 14);
+  d17s16 = vrshrn_n_s32(q14s32, 14);
+  d18s16 = vrshrn_n_s32(q15s32, 14);
+  d19s16 = vrshrn_n_s32(q10s32, 14);
 
   *q8s16 = vcombine_s16(d16s16, d17s16);
   *q9s16 = vcombine_s16(d18s16, d19s16);
index f7e0a6d9817b4e067fca21f5d423fd05a6884497..5f54e6b90c495f9071e6c1058e7bee4a10524f7f 100644 (file)
@@ -76,10 +76,10 @@ static INLINE void IDCT8x8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q5s32 = vmlsl_s16(q5s32, d22s16, d3s16);
   q6s32 = vmlsl_s16(q6s32, d23s16, d3s16);
 
-  d8s16 = vqrshrn_n_s32(q2s32, 14);
-  d9s16 = vqrshrn_n_s32(q3s32, 14);
-  d10s16 = vqrshrn_n_s32(q5s32, 14);
-  d11s16 = vqrshrn_n_s32(q6s32, 14);
+  d8s16 = vrshrn_n_s32(q2s32, 14);
+  d9s16 = vrshrn_n_s32(q3s32, 14);
+  d10s16 = vrshrn_n_s32(q5s32, 14);
+  d11s16 = vrshrn_n_s32(q6s32, 14);
   q4s16 = vcombine_s16(d8s16, d9s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -93,10 +93,10 @@ static INLINE void IDCT8x8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q9s32 = vmlal_s16(q9s32, d22s16, d2s16);
   q13s32 = vmlal_s16(q13s32, d23s16, d2s16);
 
-  d14s16 = vqrshrn_n_s32(q2s32, 14);
-  d15s16 = vqrshrn_n_s32(q3s32, 14);
-  d12s16 = vqrshrn_n_s32(q9s32, 14);
-  d13s16 = vqrshrn_n_s32(q13s32, 14);
+  d14s16 = vrshrn_n_s32(q2s32, 14);
+  d15s16 = vrshrn_n_s32(q3s32, 14);
+  d12s16 = vrshrn_n_s32(q9s32, 14);
+  d13s16 = vrshrn_n_s32(q13s32, 14);
   q6s16 = vcombine_s16(d12s16, d13s16);
   q7s16 = vcombine_s16(d14s16, d15s16);
 
@@ -115,10 +115,10 @@ static INLINE void IDCT8x8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   d0s16 = vdup_n_s16(cospi_24_64);
   d1s16 = vdup_n_s16(cospi_8_64);
 
-  d18s16 = vqrshrn_n_s32(q2s32, 14);
-  d19s16 = vqrshrn_n_s32(q3s32, 14);
-  d22s16 = vqrshrn_n_s32(q13s32, 14);
-  d23s16 = vqrshrn_n_s32(q15s32, 14);
+  d18s16 = vrshrn_n_s32(q2s32, 14);
+  d19s16 = vrshrn_n_s32(q3s32, 14);
+  d22s16 = vrshrn_n_s32(q13s32, 14);
+  d23s16 = vrshrn_n_s32(q15s32, 14);
   *q9s16 = vcombine_s16(d18s16, d19s16);
   *q11s16 = vcombine_s16(d22s16, d23s16);
 
@@ -132,10 +132,10 @@ static INLINE void IDCT8x8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q8s32 = vmlal_s16(q8s32, d28s16, d0s16);
   q12s32 = vmlal_s16(q12s32, d29s16, d0s16);
 
-  d26s16 = vqrshrn_n_s32(q2s32, 14);
-  d27s16 = vqrshrn_n_s32(q3s32, 14);
-  d30s16 = vqrshrn_n_s32(q8s32, 14);
-  d31s16 = vqrshrn_n_s32(q12s32, 14);
+  d26s16 = vrshrn_n_s32(q2s32, 14);
+  d27s16 = vrshrn_n_s32(q3s32, 14);
+  d30s16 = vrshrn_n_s32(q8s32, 14);
+  d31s16 = vrshrn_n_s32(q12s32, 14);
   *q13s16 = vcombine_s16(d26s16, d27s16);
   *q15s16 = vcombine_s16(d30s16, d31s16);
 
@@ -165,10 +165,10 @@ static INLINE void IDCT8x8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q11s32 = vmlal_s16(q11s32, d26s16, d16s16);
   q12s32 = vmlal_s16(q12s32, d27s16, d16s16);
 
-  d10s16 = vqrshrn_n_s32(q9s32, 14);
-  d11s16 = vqrshrn_n_s32(q10s32, 14);
-  d12s16 = vqrshrn_n_s32(q11s32, 14);
-  d13s16 = vqrshrn_n_s32(q12s32, 14);
+  d10s16 = vrshrn_n_s32(q9s32, 14);
+  d11s16 = vrshrn_n_s32(q10s32, 14);
+  d12s16 = vrshrn_n_s32(q11s32, 14);
+  d13s16 = vrshrn_n_s32(q12s32, 14);
   q5s16 = vcombine_s16(d10s16, d11s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -242,8 +242,8 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q1s32 = vsubq_s32(q1s32, q5s32);
   q2s32 = vsubq_s32(q2s32, q6s32);
 
-  d22s16 = vqrshrn_n_s32(q11s32, 14);
-  d23s16 = vqrshrn_n_s32(q12s32, 14);
+  d22s16 = vrshrn_n_s32(q11s32, 14);
+  d23s16 = vrshrn_n_s32(q12s32, 14);
   *q11s16 = vcombine_s16(d22s16, d23s16);
 
   q12s32 = vaddq_s32(q3s32, q7s32);
@@ -251,12 +251,12 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q3s32 = vsubq_s32(q3s32, q7s32);
   q4s32 = vsubq_s32(q4s32, q8s32);
 
-  d2s16 = vqrshrn_n_s32(q1s32, 14);
-  d3s16 = vqrshrn_n_s32(q2s32, 14);
-  d24s16 = vqrshrn_n_s32(q12s32, 14);
-  d25s16 = vqrshrn_n_s32(q15s32, 14);
-  d6s16 = vqrshrn_n_s32(q3s32, 14);
-  d7s16 = vqrshrn_n_s32(q4s32, 14);
+  d2s16 = vrshrn_n_s32(q1s32, 14);
+  d3s16 = vrshrn_n_s32(q2s32, 14);
+  d24s16 = vrshrn_n_s32(q12s32, 14);
+  d25s16 = vrshrn_n_s32(q15s32, 14);
+  d6s16 = vrshrn_n_s32(q3s32, 14);
+  d7s16 = vrshrn_n_s32(q4s32, 14);
   *q12s16 = vcombine_s16(d24s16, d25s16);
 
   d0s16 = vdup_n_s16(cospi_10_64);
@@ -291,10 +291,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q2s32 = vsubq_s32(q2s32, q10s32);
   q6s32 = vsubq_s32(q6s32, q9s32);
 
-  d28s16 = vqrshrn_n_s32(q14s32, 14);
-  d29s16 = vqrshrn_n_s32(q15s32, 14);
-  d4s16 = vqrshrn_n_s32(q2s32, 14);
-  d5s16 = vqrshrn_n_s32(q6s32, 14);
+  d28s16 = vrshrn_n_s32(q14s32, 14);
+  d29s16 = vrshrn_n_s32(q15s32, 14);
+  d4s16 = vrshrn_n_s32(q2s32, 14);
+  d5s16 = vrshrn_n_s32(q6s32, 14);
   *q14s16 = vcombine_s16(d28s16, d29s16);
 
   q9s32 = vaddq_s32(q4s32, q0s32);
@@ -305,10 +305,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   d30s16 = vdup_n_s16(cospi_8_64);
   d31s16 = vdup_n_s16(cospi_24_64);
 
-  d18s16 = vqrshrn_n_s32(q9s32, 14);
-  d19s16 = vqrshrn_n_s32(q10s32, 14);
-  d8s16 = vqrshrn_n_s32(q4s32, 14);
-  d9s16 = vqrshrn_n_s32(q5s32, 14);
+  d18s16 = vrshrn_n_s32(q9s32, 14);
+  d19s16 = vrshrn_n_s32(q10s32, 14);
+  d8s16 = vrshrn_n_s32(q4s32, 14);
+  d9s16 = vrshrn_n_s32(q5s32, 14);
   *q9s16 = vcombine_s16(d18s16, d19s16);
 
   q5s32 = vmull_s16(d2s16, d30s16);
@@ -341,10 +341,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q5s32 = vsubq_s32(q5s32, q1s32);
   q6s32 = vsubq_s32(q6s32, q3s32);
 
-  d18s16 = vqrshrn_n_s32(q14s32, 14);
-  d19s16 = vqrshrn_n_s32(q15s32, 14);
-  d10s16 = vqrshrn_n_s32(q5s32, 14);
-  d11s16 = vqrshrn_n_s32(q6s32, 14);
+  d18s16 = vrshrn_n_s32(q14s32, 14);
+  d19s16 = vrshrn_n_s32(q15s32, 14);
+  d10s16 = vrshrn_n_s32(q5s32, 14);
+  d11s16 = vrshrn_n_s32(q6s32, 14);
   *q9s16 = vcombine_s16(d18s16, d19s16);
 
   q1s32 = vaddq_s32(q7s32, q10s32);
@@ -352,10 +352,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q7s32 = vsubq_s32(q7s32, q10s32);
   q0s32 = vsubq_s32(q0s32, q2s32);
 
-  d28s16 = vqrshrn_n_s32(q1s32, 14);
-  d29s16 = vqrshrn_n_s32(q3s32, 14);
-  d14s16 = vqrshrn_n_s32(q7s32, 14);
-  d15s16 = vqrshrn_n_s32(q0s32, 14);
+  d28s16 = vrshrn_n_s32(q1s32, 14);
+  d29s16 = vrshrn_n_s32(q3s32, 14);
+  d14s16 = vrshrn_n_s32(q7s32, 14);
+  d15s16 = vrshrn_n_s32(q0s32, 14);
   *q14s16 = vcombine_s16(d28s16, d29s16);
 
   d30s16 = vdup_n_s16(cospi_16_64);
@@ -374,10 +374,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q13s32 = vmlsl_s16(q13s32, d24s16, d30s16);
   q1s32 = vmlsl_s16(q1s32, d25s16, d30s16);
 
-  d4s16 = vqrshrn_n_s32(q2s32, 14);
-  d5s16 = vqrshrn_n_s32(q3s32, 14);
-  d24s16 = vqrshrn_n_s32(q13s32, 14);
-  d25s16 = vqrshrn_n_s32(q1s32, 14);
+  d4s16 = vrshrn_n_s32(q2s32, 14);
+  d5s16 = vrshrn_n_s32(q3s32, 14);
+  d24s16 = vrshrn_n_s32(q13s32, 14);
+  d25s16 = vrshrn_n_s32(q1s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   *q12s16 = vcombine_s16(d24s16, d25s16);
 
@@ -391,10 +391,10 @@ static INLINE void IADST8X8_1D(int16x8_t *q8s16, int16x8_t *q9s16,
   q11s32 = vmlsl_s16(q11s32, d14s16, d30s16);
   q0s32 = vmlsl_s16(q0s32, d15s16, d30s16);
 
-  d20s16 = vqrshrn_n_s32(q13s32, 14);
-  d21s16 = vqrshrn_n_s32(q1s32, 14);
-  d12s16 = vqrshrn_n_s32(q11s32, 14);
-  d13s16 = vqrshrn_n_s32(q0s32, 14);
+  d20s16 = vrshrn_n_s32(q13s32, 14);
+  d21s16 = vrshrn_n_s32(q1s32, 14);
+  d12s16 = vrshrn_n_s32(q11s32, 14);
+  d13s16 = vrshrn_n_s32(q0s32, 14);
   *q10s16 = vcombine_s16(d20s16, d21s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
index 05fce054c50973cceda06e59f7d6b8ac0edb5769..7e2161cf832c712df86a175c622bd403f3ce126d 100644 (file)
     vdup.16         d3, r12                   ; duplicate cospi_20_64
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d8, q2, #14               ; >> 14
-    vqrshrn.s32     d9, q3, #14               ; >> 14
+    vrshrn.s32      d8, q2, #14               ; >> 14
+    vrshrn.s32      d9, q3, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d14, q5, #14              ; >> 14
-    vqrshrn.s32     d15, q6, #14              ; >> 14
+    vrshrn.s32      d14, q5, #14              ; >> 14
+    vrshrn.s32      d15, q6, #14              ; >> 14
 
     ; preloading to avoid stall
     ; cospi_16_64 = 11585
     vmlal.s16       q15, d23, d2
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d10, q2, #14              ; >> 14
-    vqrshrn.s32     d11, q3, #14              ; >> 14
+    vrshrn.s32      d10, q2, #14              ; >> 14
+    vrshrn.s32      d11, q3, #14              ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q9, #14              ; >> 14
-    vqrshrn.s32     d13, q15, #14             ; >> 14
+    vrshrn.s32      d12, q9, #14              ; >> 14
+    vrshrn.s32      d13, q15, #14             ; >> 14
 
     ; stage 4
     vdup.16         d30, r3                   ; cospi_16_64
     vsub.s32        q1, q11, q1
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d16, q3, #14              ; >> 14
-    vqrshrn.s32     d17, q12, #14             ; >> 14
+    vrshrn.s32      d16, q3, #14              ; >> 14
+    vrshrn.s32      d17, q12, #14             ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d18, q13, #14             ; >> 14
-    vqrshrn.s32     d19, q1, #14              ; >> 14
+    vrshrn.s32      d18, q13, #14             ; >> 14
+    vrshrn.s32      d19, q1, #14              ; >> 14
 
     ; step1[2] * cospi_24_64 - step1[3] * cospi_8_64;
     ; step1[2] * cospi_8_64
     vmlsl.s16       q13, d29, d31
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d22, q0, #14              ; >> 14
-    vqrshrn.s32     d23, q1, #14              ; >> 14
+    vrshrn.s32      d22, q0, #14              ; >> 14
+    vrshrn.s32      d23, q1, #14              ; >> 14
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d20, q12, #14             ; >> 14
-    vqrshrn.s32     d21, q13, #14             ; >> 14
+    vrshrn.s32      d20, q12, #14             ; >> 14
+    vrshrn.s32      d21, q13, #14             ; >> 14
 
     vsub.s16        q13, q4, q5               ; step2[5] = step1[4] - step1[5];
     vadd.s16        q4, q4, q5                ; step2[4] = step1[4] + step1[5];
     vadd.s32        q10, q10, q12
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d10, q6, #14              ; >> 14
-    vqrshrn.s32     d11, q13, #14             ; >> 14
+    vrshrn.s32      d10, q6, #14              ; >> 14
+    vrshrn.s32      d11, q13, #14             ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q9, #14              ; >> 14
-    vqrshrn.s32     d13, q10, #14             ; >> 14
+    vrshrn.s32      d12, q9, #14              ; >> 14
+    vrshrn.s32      d13, q10, #14             ; >> 14
 
     ; stage 6
-    vadd.s16        q8, q0, q15                ; step2[0] = step1[0] + step1[7];
+    vadd.s16        q8, q0, q15               ; step2[0] = step1[0] + step1[7];
     vadd.s16        q9, q1, q6                ; step2[1] = step1[1] + step1[6];
     vadd.s16        q10, q2, q5               ; step2[2] = step1[2] + step1[5];
     vadd.s16        q11, q3, q4               ; step2[3] = step1[3] + step1[4];
     vdup.16         d31, r12                  ; duplicate cospi_18_64
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d0, q2, #14               ; >> 14
-    vqrshrn.s32     d1, q3, #14               ; >> 14
+    vrshrn.s32      d0, q2, #14               ; >> 14
+    vrshrn.s32      d1, q3, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d14, q1, #14              ; >> 14
-    vqrshrn.s32     d15, q4, #14              ; >> 14
+    vrshrn.s32      d14, q1, #14              ; >> 14
+    vrshrn.s32      d15, q4, #14              ; >> 14
 
     ; preloading to avoid stall
     ; cospi_22_64 = 7723
     vdup.16         d31, r12                  ; duplicate cospi_10_64
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d2, q2, #14               ; >> 14
-    vqrshrn.s32     d3, q3, #14               ; >> 14
+    vrshrn.s32      d2, q2, #14               ; >> 14
+    vrshrn.s32      d3, q3, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q4, #14              ; >> 14
-    vqrshrn.s32     d13, q5, #14              ; >> 14
+    vrshrn.s32      d12, q4, #14              ; >> 14
+    vrshrn.s32      d13, q5, #14              ; >> 14
 
     ; step1[10] * cospi_22_64
     vmull.s16       q11, d20, d30
     vdup.16         d31, r12                  ; duplicate cospi_26_64
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d4, q11, #14              ; >> 14
-    vqrshrn.s32     d5, q12, #14              ; >> 14
+    vrshrn.s32      d4, q11, #14              ; >> 14
+    vrshrn.s32      d5, q12, #14              ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d11, q5, #14              ; >> 14
-    vqrshrn.s32     d10, q4, #14              ; >> 14
+    vrshrn.s32      d11, q5, #14              ; >> 14
+    vrshrn.s32      d10, q4, #14              ; >> 14
 
     ; step1[11] * cospi_6_64
     vmull.s16       q10, d28, d30
     vadd.s16        q0, q0, q1                ; step1[8]=step2[8]+step2[9]
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d6, q10, #14              ; >> 14
-    vqrshrn.s32     d7, q11, #14              ; >> 14
+    vrshrn.s32      d6, q10, #14              ; >> 14
+    vrshrn.s32      d7, q11, #14              ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d8, q12, #14              ; >> 14
-    vqrshrn.s32     d9, q13, #14              ; >> 14
+    vrshrn.s32      d8, q12, #14              ; >> 14
+    vrshrn.s32      d9, q13, #14              ; >> 14
 
     ; stage 3
     vsub.s16        q10, q3, q2               ; step1[10]=-step2[10]+step2[11]
     vdup.16         d30, r12                  ; duplicate -cospi_8_64
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q2, #14              ; >> 14
-    vqrshrn.s32     d13, q3, #14              ; >> 14
+    vrshrn.s32      d12, q2, #14              ; >> 14
+    vrshrn.s32      d13, q3, #14              ; >> 14
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d2, q4, #14               ; >> 14
-    vqrshrn.s32     d3, q5, #14               ; >> 14
+    vrshrn.s32      d2, q4, #14               ; >> 14
+    vrshrn.s32      d3, q5, #14               ; >> 14
 
     vmov.s16        q3, q11
     vmov.s16        q4, q12
     vmlal.s16       q9, d27, d31
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d4, q11, #14              ; >> 14
-    vqrshrn.s32     d5, q12, #14              ; >> 14
+    vrshrn.s32      d4, q11, #14              ; >> 14
+    vrshrn.s32      d5, q12, #14              ; >> 14
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d10, q8, #14              ; >> 14
-    vqrshrn.s32     d11, q9, #14              ; >> 14
+    vrshrn.s32      d10, q8, #14              ; >> 14
+    vrshrn.s32      d11, q9, #14              ; >> 14
 
     ; stage 5
     vadd.s16        q8, q0, q3                ; step1[8] = step2[8]+step2[11];
     vadd.s32        q4, q4, q1
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d4, q5, #14               ; >> 14
-    vqrshrn.s32     d5, q6, #14               ; >> 14
+    vrshrn.s32      d4, q5, #14               ; >> 14
+    vrshrn.s32      d5, q6, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d10, q10, #14             ; >> 14
-    vqrshrn.s32     d11, q4, #14              ; >> 14
+    vrshrn.s32      d10, q10, #14             ; >> 14
+    vrshrn.s32      d11, q4, #14              ; >> 14
 
     ; step1[11] * cospi_16_64
     vmull.s16       q0, d22, d14
     vadd.s32        q6, q6, q1
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d6, q10, #14              ; >> 14
-    vqrshrn.s32     d7, q4, #14               ; >> 14
+    vrshrn.s32      d6, q10, #14              ; >> 14
+    vrshrn.s32      d7, q4, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d8, q13, #14              ; >> 14
-    vqrshrn.s32     d9, q6, #14               ; >> 14
+    vrshrn.s32      d8, q13, #14              ; >> 14
+    vrshrn.s32      d9, q6, #14               ; >> 14
 
     mov              r4, #16                  ; pass1_output stride
     ldr              r3, [sp]                 ; load skip_adding
@@ -833,12 +833,12 @@ end_idct16x16_pass2
     vadd.s32        q10, q10, q12
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d11, q15, #14             ; >> 14
-    vqrshrn.s32     d10, q6, #14              ; >> 14
+    vrshrn.s32      d11, q15, #14             ; >> 14
+    vrshrn.s32      d10, q6, #14              ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q9, #14              ; >> 14
-    vqrshrn.s32     d13, q10, #14             ; >> 14
+    vrshrn.s32      d12, q9, #14              ; >> 14
+    vrshrn.s32      d13, q10, #14             ; >> 14
 
     ; stage 6
     vadd.s16        q2, q8, q7                ; step2[0] = step1[0] + step1[7];
@@ -950,12 +950,12 @@ end_idct16x16_pass2
     vdup.16          d30, r12                 ; duplicate -cospi_8_64
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d2, q12, #14              ; >> 14
-    vqrshrn.s32     d3, q5, #14               ; >> 14
+    vrshrn.s32      d2, q12, #14              ; >> 14
+    vrshrn.s32      d3, q5, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d12, q2, #14              ; >> 14
-    vqrshrn.s32     d13, q11, #14             ; >> 14
+    vrshrn.s32      d12, q2, #14              ; >> 14
+    vrshrn.s32      d13, q11, #14             ; >> 14
 
     ; - step1[13] * cospi_8_64
     vmull.s16       q10, d8, d30
@@ -974,12 +974,12 @@ end_idct16x16_pass2
     vmlal.s16       q9, d9, d31
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d4, q10, #14              ; >> 14
-    vqrshrn.s32     d5, q13, #14              ; >> 14
+    vrshrn.s32      d4, q10, #14              ; >> 14
+    vrshrn.s32      d5, q13, #14              ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d10, q8, #14              ; >> 14
-    vqrshrn.s32     d11, q9, #14              ; >> 14
+    vrshrn.s32      d10, q8, #14              ; >> 14
+    vrshrn.s32      d11, q9, #14              ; >> 14
 
     ; stage 5
     vadd.s16        q8, q0, q3                ; step1[8] = step2[8]+step2[11];
@@ -1014,12 +1014,12 @@ end_idct16x16_pass2
     vadd.s32        q1, q4, q1
 
     ; dct_const_round_shift(temp1)
-    vqrshrn.s32     d4, q5, #14               ; >> 14
-    vqrshrn.s32     d5, q6, #14               ; >> 14
+    vrshrn.s32      d4, q5, #14               ; >> 14
+    vrshrn.s32      d5, q6, #14               ; >> 14
 
     ; dct_const_round_shift(temp2)
-    vqrshrn.s32     d10, q0, #14              ; >> 14
-    vqrshrn.s32     d11, q1, #14              ; >> 14
+    vrshrn.s32      d10, q0, #14              ; >> 14
+    vrshrn.s32      d11, q1, #14              ; >> 14
 
     ; step1[11] * cospi_16_64
     vmull.s16       q0, d22, d14
@@ -1038,12 +1038,12 @@ end_idct16x16_pass2
     vadd.s32        q6, q6, q1
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d6, q10, #14              ; >> 14
-    vqrshrn.s32     d7, q4, #14               ; >> 14
+    vrshrn.s32      d6, q10, #14              ; >> 14
+    vrshrn.s32      d7, q4, #14               ; >> 14
 
     ; dct_const_round_shift((step1[11] + step1[12]) * cospi_16_64);
-    vqrshrn.s32     d8, q13, #14              ; >> 14
-    vqrshrn.s32     d9, q6, #14               ; >> 14
+    vrshrn.s32      d8, q13, #14              ; >> 14
+    vrshrn.s32      d9, q6, #14               ; >> 14
 
     mov              r4, #16                  ; pass1_output stride
     ldr              r3, [sp]                 ; load skip_adding
index d101bba41563b5d8c29be6c6492eb0d40900f744..08e82a15cb425c5c67505b2977ffbc5fa0eb3a76 100644 (file)
@@ -85,10 +85,10 @@ void vpx_idct16x16_256_add_neon_pass1(const int16_t *in, int16_t *out) {
   d2s16 = vdup_n_s16((int16_t)cospi_12_64);
   d3s16 = vdup_n_s16((int16_t)cospi_20_64);
 
-  d8s16 = vqrshrn_n_s32(q2s32, 14);
-  d9s16 = vqrshrn_n_s32(q3s32, 14);
-  d14s16 = vqrshrn_n_s32(q5s32, 14);
-  d15s16 = vqrshrn_n_s32(q6s32, 14);
+  d8s16 = vrshrn_n_s32(q2s32, 14);
+  d9s16 = vrshrn_n_s32(q3s32, 14);
+  d14s16 = vrshrn_n_s32(q5s32, 14);
+  d15s16 = vrshrn_n_s32(q6s32, 14);
   q4s16 = vcombine_s16(d8s16, d9s16);
   q7s16 = vcombine_s16(d14s16, d15s16);
 
@@ -102,10 +102,10 @@ void vpx_idct16x16_256_add_neon_pass1(const int16_t *in, int16_t *out) {
   q9s32 = vmlal_s16(q9s32, d22s16, d2s16);
   q15s32 = vmlal_s16(q15s32, d23s16, d2s16);
 
-  d10s16 = vqrshrn_n_s32(q2s32, 14);
-  d11s16 = vqrshrn_n_s32(q3s32, 14);
-  d12s16 = vqrshrn_n_s32(q9s32, 14);
-  d13s16 = vqrshrn_n_s32(q15s32, 14);
+  d10s16 = vrshrn_n_s32(q2s32, 14);
+  d11s16 = vrshrn_n_s32(q3s32, 14);
+  d12s16 = vrshrn_n_s32(q9s32, 14);
+  d13s16 = vrshrn_n_s32(q15s32, 14);
   q5s16 = vcombine_s16(d10s16, d11s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -125,10 +125,10 @@ void vpx_idct16x16_256_add_neon_pass1(const int16_t *in, int16_t *out) {
   q13s32 = vsubq_s32(q2s32, q0s32);
   q1s32 = vsubq_s32(q11s32, q1s32);
 
-  d16s16 = vqrshrn_n_s32(q3s32, 14);
-  d17s16 = vqrshrn_n_s32(q12s32, 14);
-  d18s16 = vqrshrn_n_s32(q13s32, 14);
-  d19s16 = vqrshrn_n_s32(q1s32, 14);
+  d16s16 = vrshrn_n_s32(q3s32, 14);
+  d17s16 = vrshrn_n_s32(q12s32, 14);
+  d18s16 = vrshrn_n_s32(q13s32, 14);
+  d19s16 = vrshrn_n_s32(q1s32, 14);
   q8s16 = vcombine_s16(d16s16, d17s16);
   q9s16 = vcombine_s16(d18s16, d19s16);
 
@@ -142,10 +142,10 @@ void vpx_idct16x16_256_add_neon_pass1(const int16_t *in, int16_t *out) {
   q12s32 = vmlsl_s16(q12s32, d28s16, d31s16);
   q13s32 = vmlsl_s16(q13s32, d29s16, d31s16);
 
-  d22s16 = vqrshrn_n_s32(q0s32, 14);
-  d23s16 = vqrshrn_n_s32(q1s32, 14);
-  d20s16 = vqrshrn_n_s32(q12s32, 14);
-  d21s16 = vqrshrn_n_s32(q13s32, 14);
+  d22s16 = vrshrn_n_s32(q0s32, 14);
+  d23s16 = vrshrn_n_s32(q1s32, 14);
+  d20s16 = vrshrn_n_s32(q12s32, 14);
+  d21s16 = vrshrn_n_s32(q13s32, 14);
   q10s16 = vcombine_s16(d20s16, d21s16);
   q11s16 = vcombine_s16(d22s16, d23s16);
 
@@ -176,10 +176,10 @@ void vpx_idct16x16_256_add_neon_pass1(const int16_t *in, int16_t *out) {
   q9s32 = vaddq_s32(q9s32, q11s32);
   q10s32 = vaddq_s32(q10s32, q12s32);
 
-  d10s16 = vqrshrn_n_s32(q6s32, 14);
-  d11s16 = vqrshrn_n_s32(q13s32, 14);
-  d12s16 = vqrshrn_n_s32(q9s32, 14);
-  d13s16 = vqrshrn_n_s32(q10s32, 14);
+  d10s16 = vrshrn_n_s32(q6s32, 14);
+  d11s16 = vrshrn_n_s32(q13s32, 14);
+  d12s16 = vrshrn_n_s32(q9s32, 14);
+  d13s16 = vrshrn_n_s32(q10s32, 14);
   q5s16 = vcombine_s16(d10s16, d11s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -289,10 +289,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q1s32 = vmlal_s16(q1s32, d30s16, d12s16);
   q4s32 = vmlal_s16(q4s32, d31s16, d12s16);
 
-  d0s16 = vqrshrn_n_s32(q2s32, 14);
-  d1s16 = vqrshrn_n_s32(q3s32, 14);
-  d14s16 = vqrshrn_n_s32(q1s32, 14);
-  d15s16 = vqrshrn_n_s32(q4s32, 14);
+  d0s16 = vrshrn_n_s32(q2s32, 14);
+  d1s16 = vrshrn_n_s32(q3s32, 14);
+  d14s16 = vrshrn_n_s32(q1s32, 14);
+  d15s16 = vrshrn_n_s32(q4s32, 14);
   q0s16 = vcombine_s16(d0s16, d1s16);
   q7s16 = vcombine_s16(d14s16, d15s16);
 
@@ -309,10 +309,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q4s32 = vmlal_s16(q4s32, d22s16, d30s16);
   q5s32 = vmlal_s16(q5s32, d23s16, d30s16);
 
-  d2s16 = vqrshrn_n_s32(q2s32, 14);
-  d3s16 = vqrshrn_n_s32(q3s32, 14);
-  d12s16 = vqrshrn_n_s32(q4s32, 14);
-  d13s16 = vqrshrn_n_s32(q5s32, 14);
+  d2s16 = vrshrn_n_s32(q2s32, 14);
+  d3s16 = vrshrn_n_s32(q3s32, 14);
+  d12s16 = vrshrn_n_s32(q4s32, 14);
+  d13s16 = vrshrn_n_s32(q5s32, 14);
   q1s16 = vcombine_s16(d2s16, d3s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -329,10 +329,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q4s32 = vmlal_s16(q4s32, d26s16, d30s16);
   q5s32 = vmlal_s16(q5s32, d27s16, d30s16);
 
-  d4s16 = vqrshrn_n_s32(q11s32, 14);
-  d5s16 = vqrshrn_n_s32(q12s32, 14);
-  d11s16 = vqrshrn_n_s32(q5s32, 14);
-  d10s16 = vqrshrn_n_s32(q4s32, 14);
+  d4s16 = vrshrn_n_s32(q11s32, 14);
+  d5s16 = vrshrn_n_s32(q12s32, 14);
+  d11s16 = vrshrn_n_s32(q5s32, 14);
+  d10s16 = vrshrn_n_s32(q4s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -349,10 +349,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q12s32 = vmlal_s16(q12s32, d18s16, d30s16);
   q13s32 = vmlal_s16(q13s32, d19s16, d30s16);
 
-  d6s16 = vqrshrn_n_s32(q10s32, 14);
-  d7s16 = vqrshrn_n_s32(q11s32, 14);
-  d8s16 = vqrshrn_n_s32(q12s32, 14);
-  d9s16 = vqrshrn_n_s32(q13s32, 14);
+  d6s16 = vrshrn_n_s32(q10s32, 14);
+  d7s16 = vrshrn_n_s32(q11s32, 14);
+  d8s16 = vrshrn_n_s32(q12s32, 14);
+  d9s16 = vrshrn_n_s32(q13s32, 14);
   q3s16 = vcombine_s16(d6s16, d7s16);
   q4s16 = vcombine_s16(d8s16, d9s16);
 
@@ -389,10 +389,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q4s32 = vmlsl_s16(q4s32, d18s16, d30s16);
   q5s32 = vmlsl_s16(q5s32, d19s16, d30s16);
 
-  d12s16 = vqrshrn_n_s32(q2s32, 14);
-  d13s16 = vqrshrn_n_s32(q3s32, 14);
-  d2s16 = vqrshrn_n_s32(q4s32, 14);
-  d3s16 = vqrshrn_n_s32(q5s32, 14);
+  d12s16 = vrshrn_n_s32(q2s32, 14);
+  d13s16 = vrshrn_n_s32(q3s32, 14);
+  d2s16 = vrshrn_n_s32(q4s32, 14);
+  d3s16 = vrshrn_n_s32(q5s32, 14);
   q1s16 = vcombine_s16(d2s16, d3s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -410,10 +410,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q8s32 = vmlal_s16(q8s32, d26s16, d31s16);
   q9s32 = vmlal_s16(q9s32, d27s16, d31s16);
 
-  d4s16 = vqrshrn_n_s32(q11s32, 14);
-  d5s16 = vqrshrn_n_s32(q12s32, 14);
-  d10s16 = vqrshrn_n_s32(q8s32, 14);
-  d11s16 = vqrshrn_n_s32(q9s32, 14);
+  d4s16 = vrshrn_n_s32(q11s32, 14);
+  d5s16 = vrshrn_n_s32(q12s32, 14);
+  d10s16 = vrshrn_n_s32(q8s32, 14);
+  d11s16 = vrshrn_n_s32(q9s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -449,10 +449,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q10s32 = vaddq_s32(q3s32, q0s32);
   q4s32 = vaddq_s32(q4s32, q1s32);
 
-  d4s16 = vqrshrn_n_s32(q5s32, 14);
-  d5s16 = vqrshrn_n_s32(q6s32, 14);
-  d10s16 = vqrshrn_n_s32(q10s32, 14);
-  d11s16 = vqrshrn_n_s32(q4s32, 14);
+  d4s16 = vrshrn_n_s32(q5s32, 14);
+  d5s16 = vrshrn_n_s32(q6s32, 14);
+  d10s16 = vrshrn_n_s32(q10s32, 14);
+  d11s16 = vrshrn_n_s32(q4s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -466,10 +466,10 @@ void vpx_idct16x16_256_add_neon_pass2(const int16_t *src, int16_t *out,
   q13s32 = vaddq_s32(q13s32, q0s32);
   q6s32 = vaddq_s32(q6s32, q1s32);
 
-  d6s16 = vqrshrn_n_s32(q10s32, 14);
-  d7s16 = vqrshrn_n_s32(q4s32, 14);
-  d8s16 = vqrshrn_n_s32(q13s32, 14);
-  d9s16 = vqrshrn_n_s32(q6s32, 14);
+  d6s16 = vrshrn_n_s32(q10s32, 14);
+  d7s16 = vrshrn_n_s32(q4s32, 14);
+  d8s16 = vrshrn_n_s32(q13s32, 14);
+  d9s16 = vrshrn_n_s32(q6s32, 14);
   q3s16 = vcombine_s16(d6s16, d7s16);
   q4s16 = vcombine_s16(d8s16, d9s16);
 
@@ -823,10 +823,10 @@ void vpx_idct16x16_10_add_neon_pass1(const tran_low_t *in, int16_t *out) {
   q9s32 = vaddq_s32(q9s32, q11s32);
   q10s32 = vaddq_s32(q10s32, q12s32);
 
-  d11s16 = vqrshrn_n_s32(q15s32, 14);
-  d10s16 = vqrshrn_n_s32(q6s32, 14);
-  d12s16 = vqrshrn_n_s32(q9s32, 14);
-  d13s16 = vqrshrn_n_s32(q10s32, 14);
+  d11s16 = vrshrn_n_s32(q15s32, 14);
+  d10s16 = vrshrn_n_s32(q6s32, 14);
+  d12s16 = vrshrn_n_s32(q9s32, 14);
+  d13s16 = vrshrn_n_s32(q10s32, 14);
   q5s16 = vcombine_s16(d10s16, d11s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -934,10 +934,10 @@ void vpx_idct16x16_10_add_neon_pass2(const tran_low_t *src, int16_t *out,
   q2s32 = vmlal_s16(q2s32, d14s16, d30s16);
   q11s32 = vmlal_s16(q11s32, d15s16, d30s16);
 
-  d2s16 = vqrshrn_n_s32(q12s32, 14);
-  d3s16 = vqrshrn_n_s32(q5s32, 14);
-  d12s16 = vqrshrn_n_s32(q2s32, 14);
-  d13s16 = vqrshrn_n_s32(q11s32, 14);
+  d2s16 = vrshrn_n_s32(q12s32, 14);
+  d3s16 = vrshrn_n_s32(q5s32, 14);
+  d12s16 = vrshrn_n_s32(q2s32, 14);
+  d13s16 = vrshrn_n_s32(q11s32, 14);
   q1s16 = vcombine_s16(d2s16, d3s16);
   q6s16 = vcombine_s16(d12s16, d13s16);
 
@@ -952,10 +952,10 @@ void vpx_idct16x16_10_add_neon_pass2(const tran_low_t *src, int16_t *out,
   q8s32 = vmlal_s16(q8s32, d8s16, d31s16);
   q9s32 = vmlal_s16(q9s32, d9s16, d31s16);
 
-  d4s16 = vqrshrn_n_s32(q10s32, 14);
-  d5s16 = vqrshrn_n_s32(q13s32, 14);
-  d10s16 = vqrshrn_n_s32(q8s32, 14);
-  d11s16 = vqrshrn_n_s32(q9s32, 14);
+  d4s16 = vrshrn_n_s32(q10s32, 14);
+  d5s16 = vrshrn_n_s32(q13s32, 14);
+  d10s16 = vrshrn_n_s32(q8s32, 14);
+  d11s16 = vrshrn_n_s32(q9s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -990,10 +990,10 @@ void vpx_idct16x16_10_add_neon_pass2(const tran_low_t *src, int16_t *out,
   q0s32 = vaddq_s32(q3s32, q0s32);
   q4s32 = vaddq_s32(q4s32, q1s32);
 
-  d4s16 = vqrshrn_n_s32(q5s32, 14);
-  d5s16 = vqrshrn_n_s32(q6s32, 14);
-  d10s16 = vqrshrn_n_s32(q0s32, 14);
-  d11s16 = vqrshrn_n_s32(q4s32, 14);
+  d4s16 = vrshrn_n_s32(q5s32, 14);
+  d5s16 = vrshrn_n_s32(q6s32, 14);
+  d10s16 = vrshrn_n_s32(q0s32, 14);
+  d11s16 = vrshrn_n_s32(q4s32, 14);
   q2s16 = vcombine_s16(d4s16, d5s16);
   q5s16 = vcombine_s16(d10s16, d11s16);
 
@@ -1007,10 +1007,10 @@ void vpx_idct16x16_10_add_neon_pass2(const tran_low_t *src, int16_t *out,
   q13s32 = vaddq_s32(q13s32, q0s32);
   q6s32 = vaddq_s32(q6s32, q1s32);
 
-  d6s16 = vqrshrn_n_s32(q10s32, 14);
-  d7s16 = vqrshrn_n_s32(q4s32, 14);
-  d8s16 = vqrshrn_n_s32(q13s32, 14);
-  d9s16 = vqrshrn_n_s32(q6s32, 14);
+  d6s16 = vrshrn_n_s32(q10s32, 14);
+  d7s16 = vrshrn_n_s32(q4s32, 14);
+  d8s16 = vrshrn_n_s32(q13s32, 14);
+  d9s16 = vrshrn_n_s32(q6s32, 14);
   q3s16 = vcombine_s16(d6s16, d7s16);
   q4s16 = vcombine_s16(d8s16, d9s16);
 
index 4eff9b970d91e64d793a6019c7627cfde93eabb8..c3a765101bdd69bd7e57f7bd4e8ce73ca6b84529 100644 (file)
@@ -146,8 +146,8 @@ static INLINE void DO_BUTTERFLY(int16x8_t q14s16, int16x8_t q13s16,
   q11s32 = vaddq_s32(q12s32, q11s32);
   q10s32 = vaddq_s32(q10s32, q15s32);
 
-  *qAs16 = vcombine_s16(vqrshrn_n_s32(q8s32, 14), vqrshrn_n_s32(q9s32, 14));
-  *qBs16 = vcombine_s16(vqrshrn_n_s32(q11s32, 14), vqrshrn_n_s32(q10s32, 14));
+  *qAs16 = vcombine_s16(vrshrn_n_s32(q8s32, 14), vrshrn_n_s32(q9s32, 14));
+  *qBs16 = vcombine_s16(vrshrn_n_s32(q11s32, 14), vrshrn_n_s32(q10s32, 14));
 }
 
 static INLINE void idct32_transpose_pair(const int16_t *input, int16_t *t_buf) {
index cb96d4f94e546f6c71accdbc72bc7a883462b472..1550785a96fc4a576fff2993320e9a5dbb4086c1 100644 (file)
     vmlal.s16 q1,  d19, d22
 
     ; dct_const_round_shift
-    vqrshrn.s32 d26, q13, #14
-    vqrshrn.s32 d27, q14, #14
-    vqrshrn.s32 d29, q15, #14
-    vqrshrn.s32 d28, q1,  #14
+    vrshrn.s32 d26, q13, #14
+    vrshrn.s32 d27, q14, #14
+    vrshrn.s32 d29, q15, #14
+    vrshrn.s32 d28, q1,  #14
 
     ; stage 2
     ; output[0] = step[0] + step[3];
     vmlal.s16 q1,  d19, d22
 
     ; dct_const_round_shift
-    vqrshrn.s32 d26, q13, #14
-    vqrshrn.s32 d27, q14, #14
-    vqrshrn.s32 d29, q15, #14
-    vqrshrn.s32 d28, q1,  #14
+    vrshrn.s32 d26, q13, #14
+    vrshrn.s32 d27, q14, #14
+    vrshrn.s32 d29, q15, #14
+    vrshrn.s32 d28, q1,  #14
 
     ; stage 2
     ; output[0] = step[0] + step[3];
index a5c9c927d67ebdebda6afc4d2814359a6e3818e4..b58bf0ccd52928b97bddb347a1bb914b4b8c502f 100644 (file)
     vmlsl.s16       q6, d23, d3
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d8, q2, #14               ; >> 14
-    vqrshrn.s32     d9, q3, #14               ; >> 14
+    vrshrn.s32      d8, q2, #14               ; >> 14
+    vrshrn.s32      d9, q3, #14               ; >> 14
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d10, q5, #14              ; >> 14
-    vqrshrn.s32     d11, q6, #14              ; >> 14
+    vrshrn.s32      d10, q5, #14              ; >> 14
+    vrshrn.s32      d11, q6, #14              ; >> 14
 
     ; input[1] * cospi_4_64
     vmull.s16       q2, d18, d1
     vmlal.s16       q13, d23, d2
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d14, q2, #14              ; >> 14
-    vqrshrn.s32     d15, q3, #14              ; >> 14
+    vrshrn.s32      d14, q2, #14              ; >> 14
+    vrshrn.s32      d15, q3, #14              ; >> 14
 
     ; stage 2 & stage 3 - even half
     vdup.16         d0, r7                    ; duplicate cospi_16_64
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d12, q9, #14              ; >> 14
-    vqrshrn.s32     d13, q13, #14              ; >> 14
+    vrshrn.s32      d12, q9, #14              ; >> 14
+    vrshrn.s32      d13, q13, #14             ; >> 14
 
     ; input[0] * cospi_16_64
     vmull.s16       q2, d16, d0
     vdup.16         d1, r9                    ; duplicate cospi_8_64
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d18, q2, #14              ; >> 14
-    vqrshrn.s32     d19, q3, #14              ; >> 14
+    vrshrn.s32      d18, q2, #14              ; >> 14
+    vrshrn.s32      d19, q3, #14              ; >> 14
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d22, q13, #14              ; >> 14
-    vqrshrn.s32     d23, q15, #14              ; >> 14
+    vrshrn.s32      d22, q13, #14             ; >> 14
+    vrshrn.s32      d23, q15, #14             ; >> 14
 
     ; input[1] * cospi_24_64 - input[3] * cospi_8_64
     ; input[1] * cospi_24_64
     vmlal.s16       q12, d29, d0
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d26, q2, #14              ; >> 14
-    vqrshrn.s32     d27, q3, #14              ; >> 14
+    vrshrn.s32      d26, q2, #14              ; >> 14
+    vrshrn.s32      d27, q3, #14              ; >> 14
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d30, q8, #14              ; >> 14
-    vqrshrn.s32     d31, q12, #14              ; >> 14
+    vrshrn.s32      d30, q8, #14              ; >> 14
+    vrshrn.s32      d31, q12, #14             ; >> 14
 
     vadd.s16        q0, q9, q15               ; output[0] = step[0] + step[3]
     vadd.s16        q1, q11, q13              ; output[1] = step[1] + step[2]
     vmlal.s16       q12, d27, d16
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d10, q9, #14              ; >> 14
-    vqrshrn.s32     d11, q10, #14             ; >> 14
+    vrshrn.s32      d10, q9, #14              ; >> 14
+    vrshrn.s32      d11, q10, #14             ; >> 14
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d12, q11, #14              ; >> 14
-    vqrshrn.s32     d13, q12, #14             ; >> 14
+    vrshrn.s32      d12, q11, #14             ; >> 14
+    vrshrn.s32      d13, q12, #14             ; >> 14
 
     ; stage 4
     vadd.s16        q8, q0, q7                ; output[0] = step1[0] + step1[7];
     vmlal.s16       q12, d27, d16
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d10, q9, #14              ; >> 14
-    vqrshrn.s32     d11, q10, #14             ; >> 14
+    vrshrn.s32      d10, q9, #14              ; >> 14
+    vrshrn.s32      d11, q10, #14             ; >> 14
 
     ; dct_const_round_shift(input_dc * cospi_16_64)
-    vqrshrn.s32     d12, q11, #14              ; >> 14
-    vqrshrn.s32     d13, q12, #14             ; >> 14
+    vrshrn.s32      d12, q11, #14             ; >> 14
+    vrshrn.s32      d13, q12, #14             ; >> 14
 
     ; stage 4
     vadd.s16        q8, q0, q7                ; output[0] = step1[0] + step1[7];