Displaying 20 results from an estimated 20 matches for "xx_2".
2015 May 15
0
[RFC V3 5/8] aarch64: celt_pitch_xcorr: Fixed point intrinsics
...------------------
+ * Computes 8 correlation values and stores them in sum[8]
+ */
+static void xcorr_kernel_neon_fixed(const int16_t *x, const int16_t *y,
+ int32_t sum[4], int len) {
+ int16x8_t YY[3];
+ int16x4_t YEXT[3];
+ int16x8_t XX[2];
+ int16x4_t XX_2, YY_2;
+ int32x4_t SUMM;
+ const int16_t *xi = x;
+ const int16_t *yi = y;
+
+ celt_assert(len>4);
+
+ YY[0] = vld1q_s16(yi);
+ YY_2 = vget_low_s16(YY[0]);
+
+ SUMM = vdupq_n_s32(0);
+
+ /* Consume 16 elements in x vector and 20 elements in y
+ * vector. However, the y[19] and...
2015 May 08
0
[[RFC PATCH v2]: Ne10 fft fixed and previous 5/8] aarch64: celt_pitch_xcorr: Fixed point intrinsics
...------------------
+ * Computes 8 correlation values and stores them in sum[8]
+ */
+static void xcorr_kernel_neon_fixed(const int16_t *x, const int16_t *y,
+ int32_t sum[4], int len) {
+ int16x8_t YY[3];
+ int16x4_t YEXT[3];
+ int16x8_t XX[2];
+ int16x4_t XX_2, YY_2;
+ int32x4_t SUMM;
+ const int16_t *xi = x;
+ const int16_t *yi = y;
+
+ celt_assert(len>4);
+
+ YY[0] = vld1q_s16(yi);
+ YY_2 = vget_low_s16(YY[0]);
+
+ SUMM = vdupq_n_s32(0);
+
+ /* Consume 16 elements in x vector and 20 elements in y
+ * vector. However, the y[19] and...
2014 Dec 09
1
[RFC PATCH v2] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...e gcc is
smart enough to figure that out).
> + /* Just unroll the rest of the loop */
If you're not going to special case the last 2+1+1 samples, is there a
measurable performance difference compared to simply looping?
> + yi++;
> + switch(len) {
> + case 4:
> + XX_2 = vld1_dup_f32(xi++);
> + SUMM = vmlaq_lane_f32(SUMM, YY[0], XX_2, 0);
> + YY[0] = vld1q_f32(yi++);
> + case 3:
> + XX_2 = vld1_dup_f32(xi++);
> + SUMM = vmlaq_lane_f32(SUMM, YY[0], XX_2, 0);
> + YY[0] = vld1q_f32(yi++);
> + case 2:
> + XX_2...
2014 Dec 19
2
[PATCH v1] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...tes 4 correlation values and stores them in sum[4]
> + */
> +static void xcorr_kernel_neon_float(const float *x, const float *y,
> + float sum[4], int len) {
> + float32x4_t YY[3];
> + float32x4_t YEXT[3];
> + float32x4_t XX[2];
> + float32x2_t XX_2;
> + float32x4_t SUMM;
> + const float *xi = x;
> + const float *yi = y;
> +
> + celt_assert(len>0);
> +
> + YY[0] = vld1q_f32(yi);
> + SUMM = vdupq_n_f32(0);
> +
> + /* Consume 8 elements in x vector and 12 elements in y
> + * vector. However, t...
2014 Dec 19
2
[PATCH v1] cover: armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
Hi,
Optimizes celt_pitch_xcorr for ARM NEON floating point.
Changes from RFCv3:
- celt_neon_intr.c
- removed warnings due to not having constant pointers
- Put simpler loop to take care of corner cases. Unrolling using
intrinsics was not really mapping well to what was done
in celt_pitch_xcorr_arm.s
- Makefile.am
Removed explicit -O3 optimization
- test_unit_mathops.c,
2014 Dec 10
0
[RFC PATCH v3] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...-------------------------
+ * Computes 4 correlation values and stores them in sum[4]
+ */
+static void xcorr_kernel_neon_float(const float *x, const float *y,
+ float sum[4], int len) {
+ float32x4_t YY[3];
+ float32x4_t YEXT[3];
+ float32x4_t XX[2];
+ float32x2_t XX_2;
+ float32x4_t SUMM;
+ float *xi = x;
+ float *yi = y;
+
+ celt_assert(len>0);
+
+ YY[0] = vld1q_f32(yi);
+ SUMM = vdupq_n_f32(0);
+
+ /* Consume 8 elements in x vector and 12 elements in y
+ * vector. However, the 12'th element never really gets
+ * touched in this loop....
2014 Dec 07
2
[RFC PATCH v2] cover: armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
Hi,
Optimizes celt_pitch_xcorr for floating point.
Changes from RFCv1:
- Rebased on top of commit
aad281878: Fix celt_pitch_xcorr_c signature.
which got rid of ugly code around CELT_PITCH_XCORR_IMPL
passing of "arch" parameter.
- Unified with --enable-intrinsics used by x86
- Modified algorithm to be more in-line with algorithm in
celt_pitch_xcorr_arm.s
Viswanath Puttagunta
2014 Dec 10
2
[RFC PATCH v3] cover: armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
Hi,
Optimizes celt_pitch_xcorr for floating point.
Changes from RFCv2:
- Changes recommended by Timothy for celt_neon_intr.c
everything except, left the unrolled loop still unrolled
- configure.ac
- use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE
- Moved compile flags into Makefile.am
- OPUS_ARM_NEON_INR --> typo --> OPUS_ARM_NEON_INTR
Viswanath Puttagunta (1):
armv7:
2014 Dec 19
0
[PATCH v1] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...-------------------------
+ * Computes 4 correlation values and stores them in sum[4]
+ */
+static void xcorr_kernel_neon_float(const float *x, const float *y,
+ float sum[4], int len) {
+ float32x4_t YY[3];
+ float32x4_t YEXT[3];
+ float32x4_t XX[2];
+ float32x2_t XX_2;
+ float32x4_t SUMM;
+ const float *xi = x;
+ const float *yi = y;
+
+ celt_assert(len>0);
+
+ YY[0] = vld1q_f32(yi);
+ SUMM = vdupq_n_f32(0);
+
+ /* Consume 8 elements in x vector and 12 elements in y
+ * vector. However, the 12'th element never really gets
+ * touched i...
2014 Dec 07
0
[RFC PATCH v2] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...--------------------------------
+ * Computes 4 correlation values and stores them in sum[4]
+ */
+void xcorr_kernel_neon_float(const float *x, const float *y,
+ float sum[4], int len) {
+ float32x4_t YY[3];
+ float32x4_t YEXT[3];
+ float32x4_t XX[2];
+ float32x2_t XX_2;
+ float32x4_t SUMM;
+ float *xi = x;
+ float *yi = y;
+
+ celt_assert(len>0);
+
+ YY[0] = vld1q_f32(yi);
+ SUMM = vdupq_n_f32(0);
+
+ /* Consume 8 elements in x vector and 12 elements in y
+ * vector. However, the 12'th element never really gets
+ * touched in this loop....
2014 Dec 07
3
[RFC PATCH v2] cover: armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
From: Viswanath Puttagunta <viswanath.puttagunta at linaro.org>
Hi,
Optimizes celt_pitch_xcorr for floating point.
Changes from RFCv1:
- Rebased on top of commit
aad281878: Fix celt_pitch_xcorr_c signature.
which got rid of ugly code around CELT_PITCH_XCORR_IMPL
passing of "arch" parameter.
- Unified with --enable-intrinsics used by x86
- Modified algorithm to be more
2014 Nov 28
2
[RFC PATCHv1] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...here and everywhere
below). Even with the tabs expanded in context, the comments here do not
line up properly.
> +static void xcorr_kernel_neon_float(float *x, float *y, float sum[4], int len) {
x and y should be const.
> + float32x4_t YY[5];
> + float32x4_t XX[4];
> + float32x2_t XX_2;
> + float32x4_t SUMM[4];
> + float *xi = x;
> + float *yi = y;
> + int cd = len/4;
> + int cr = len%4;
len is signed, so / and % are NOT equivalent to the corresponding >> and
& (they are much slower).
> + int j;
> +
> + celt_assert(len>=3);
> +
> + /*...
2014 Dec 01
0
[RFC PATCHv1] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...t, the comments here do not
> line up properly.
Will do. Thanks.
>
>> +static void xcorr_kernel_neon_float(float *x, float *y, float sum[4], int len) {
>
> x and y should be const.
>
>> + float32x4_t YY[5];
>> + float32x4_t XX[4];
>> + float32x2_t XX_2;
>> + float32x4_t SUMM[4];
>> + float *xi = x;
>> + float *yi = y;
>> + int cd = len/4;
>> + int cr = len%4;
>
> len is signed, so / and % are NOT equivalent to the corresponding >> and
> & (they are much slower).
>
>> +...
2014 Nov 21
4
[RFC PATCHv1] cover: celt_pitch_xcorr: Introduce ARM neon intrinsics
Hello,
I received feedback from engineers working on NE10 [1] that
it would be better to use NE10 [1] for FFT optimizations for
opus use cases. However, these FFT patches are currently in review
and haven't been integrated into NE10 yet.
While the FFT functions in NE10 are getting baked, I wanted
to optimize the celt_pitch_xcorr (floating point only) and use
it to introduce ARM NEON
2014 Nov 21
0
[RFC PATCHv1] armv7: celt_pitch_xcorr: Introduce ARM neon intrinsics
...mode 100644
index 0000000..88954fb
--- /dev/null
+++ b/celt/arm/celt_neon_intr.c
@@ -0,0 +1,81 @@
+#include <arm_neon.h>
+#include "../arch.h"
+
+static void xcorr_kernel_neon_float(float *x, float *y, float sum[4], int len) {
+ float32x4_t YY[5];
+ float32x4_t XX[4];
+ float32x2_t XX_2;
+ float32x4_t SUMM[4];
+ float *xi = x;
+ float *yi = y;
+ int cd = len/4;
+ int cr = len%4;
+ int j;
+
+ celt_assert(len>=3);
+
+ /* Initialize sums to 0 */
+ SUMM[0] = vdupq_n_f32(0);
+ SUMM[1] = vdupq_n_f32(0);
+ SUMM[2] = vdupq_n_f32(0);
+ SUMM[3] = vdupq_n_f32(0);
+
+ YY[0] = vld1q_f32(yi)...
2016 Sep 13
4
[PATCH 12/15] Replace call of celt_inner_prod_c() (step 1)
Should call celt_inner_prod().
---
celt/bands.c | 7 ++++---
celt/bands.h | 2 +-
celt/celt_encoder.c | 6 +++---
celt/pitch.c | 2 +-
src/opus_multistream_encoder.c | 2 +-
5 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/celt/bands.c b/celt/bands.c
index bbe8a4c..1ab24aa 100644
--- a/celt/bands.c
+++ b/celt/bands.c
2015 Mar 31
6
[RFC PATCH v1 0/5] aarch64: celt_pitch_xcorr: Fixed point series
Hi Timothy,
As I mentioned earlier [1], I now fixed compile issues
with fixed point and resubmitting the patch.
I also have new patch that does intrinsics optimizations
for celt_pitch_xcorr targetting aarch64.
You can find my latest work-in-progress branch at [2]
For reference, you can use the Ne10 pre-built libraries
at [3]
Note that I am working with Phil at ARM to get my patch at [4]
2015 May 08
8
[RFC PATCH v2]: Ne10 fft fixed and previous 0/8]
Hi All,
As per Timothy's suggestion, disabling mdct_forward
for fixed point. Only effects
armv7,armv8: Extend fixed fft NE10 optimizations to mdct
Rest of patches are same as in [1]
For reference, latest wip code for opus is at [2]
Still working with NE10 team at ARM to get corner cases of
mdct_forward. Will update with another patch
when issue in NE10 gets fixed.
Regards,
Vish
[1]:
2015 May 15
11
[RFC V3 0/8] Ne10 fft fixed and previous
Hi All,
Changes from RFC v2 [1]
armv7,armv8: Extend fixed fft NE10 optimizations to mdct
- Overflow issue fixed by Phil at ARM. Ne10 wip at [2]. Should be upstream soon.
- So, re-enabled using fixed fft for mdct_forward which was disabled in RFCv2
armv7,armv8: Optimize fixed point fft using NE10 library
- Thanks to Jonathan Lennox, fixed some build fixes on iOS and some copy-paste errors
Rest
2015 Apr 28
10
[RFC PATCH v1 0/8] Ne10 fft fixed and previous
Hello Timothy / Jean-Marc / opus-dev,
This patch series is follow up on work I posted on [1].
In addition to what was posted on [1], this patch series mainly
integrates Fixed point FFT implementations in NE10 library into opus.
You can view my opus wip code at [2].
Note that while I found some issues both with the NE10 library(fixed fft)
and with Linaro toolchain (armv8 intrinsics), the work