Displaying 20 results from an estimated 21 matches for "_mm_mul_ps".
2013 Jun 07
2
Bug fix in celt_lpc.c and some xcorr_kernel optimizations
...t j;
__m128 xsum1 = _mm_loadu_ps(sum);
__m128 xsum2 = _mm_setzero_ps();
for (j = 0; j < len-3; j += 4) {
const __m128 x0 = _mm_loadu_ps(x+j);
const __m128 y0 = _mm_loadu_ps(y+j);
const __m128 y3 = _mm_loadu_ps(y+j+3);
xsum1 =
_mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x00),y0));
xsum2 =
_mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x55),_mm_shuffle_ps(y0,y3,0x49)));
xsum1 =
_mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xaa),_mm_shuffle_ps(y0,y3,0x9e)));
xsum2 =
_mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps...
2013 Jun 07
0
Bug fix in celt_lpc.c and some xcorr_kernel optimizations
...gt; __m128 xsum2 = _mm_setzero_ps();
>
> for (j = 0; j < len-3; j += 4) {
> const __m128 x0 = _mm_loadu_ps(x+j);
> const __m128 y0 = _mm_loadu_ps(y+j);
> const __m128 y3 = _mm_loadu_ps(y+j+3);
>
> xsum1 =
> _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x00),y0));
> xsum2 =
> _mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x55),_mm_shuffle_ps(y0,y3,0x49)));
> xsum1 =
> _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xaa),_mm_shuffle_ps(y0,y3,0x9e)));
> xsum2 =
> _mm_add_ps(x...
2004 Aug 06
3
[PATCH] Make SSE Run Time option.
...*/
xx = _mm_load_ps1(x+i);
yy = _mm_add_ss(xx, mem[0]);
_mm_store_ss(y+i, yy);
yy = _mm_shuffle_ps(yy, yy, 0);
/* Update memory */
mem[0] = _mm_move_ss(mem[0], mem[1]);
mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
mem[0] = _mm_sub_ps(mem[0], _mm_mul_ps(yy, den[0]));
mem[1] = _mm_move_ss(mem[1], mem[2]);
mem[1] = _mm_shuffle_ps(mem[1], mem[1], 0x39);
mem[1] = _mm_add_ps(mem[1], _mm_mul_ps(xx, num[1]));
mem[1] = _mm_sub_ps(mem[1], _mm_mul_ps(yy, den[1]));
me...
2004 Aug 06
5
[PATCH] Make SSE Run Time option.
> Personally, I don't think much of PNI. The complex arithmetic stuff they
> added sets you up for a lot of permute overhead that is inefficient --
> especially on a processor that is already weak on permute. In my opinion,
Actually, the new instructions make it possible to do complex multiplies
without the need to permute and separate the add and subtract. The
really useful
2015 Mar 13
1
[RFC PATCH v3] Intrinsics/RTCD related fixes. Mostly x86.
...en)
+{
+ int j;
+ __m128 xsum1, xsum2;
+ xsum1 = _mm_loadu_ps(sum);
+ xsum2 = _mm_setzero_ps();
+
+ for (j = 0; j < len-3; j += 4)
+ {
+ __m128 x0 = _mm_loadu_ps(x+j);
+ __m128 yj = _mm_loadu_ps(y+j);
+ __m128 y3 = _mm_loadu_ps(y+j+3);
+
+ xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x00),yj));
+ xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x55),
+ _mm_shuffle_ps(yj,y3,0x49)));
+ xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xaa),
+ _mm_shuf...
2015 Mar 12
1
[RFC PATCHv2] Intrinsics/RTCD related fixes. Mostly x86.
...en)
+{
+ int j;
+ __m128 xsum1, xsum2;
+ xsum1 = _mm_loadu_ps(sum);
+ xsum2 = _mm_setzero_ps();
+
+ for (j = 0; j < len-3; j += 4)
+ {
+ __m128 x0 = _mm_loadu_ps(x+j);
+ __m128 yj = _mm_loadu_ps(y+j);
+ __m128 y3 = _mm_loadu_ps(y+j+3);
+
+ xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x00),yj));
+ xsum2 = _mm_add_ps(xsum2,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0x55),
+ _mm_shuffle_ps(yj,y3,0x49)));
+ xsum1 = _mm_add_ps(xsum1,_mm_mul_ps(_mm_shuffle_ps(x0,x0,0xaa),
+ _mm_shuf...
2015 Mar 02
13
Patch cleaning up Opus x86 intrinsics configury
The attached patch cleans up Opus's x86 intrinsics configury.
It:
* Makes ?enable-intrinsics work with clang and other non-GCC compilers
* Enables RTCD for the floating-point-mode SSE code in Celt.
* Disables use of RTCD in cases where the compiler targets an instruction set by default.
* Enables the SSE4.1 Silk optimizations that apply to the common parts of Silk when Opus is built in
2008 May 03
2
Resampler (no api)
...GE.
+*/
+
+#include <xmmintrin.h>
+
+#define OVERRIDE_INNER_PRODUCT_SINGLE
+static inline float inner_product_single(const float *a, const float *b, unsigned int len)
+{
+ int i;
+ float ret;
+ __m128 sum = _mm_setzero_ps();
+ for (i=0;i<len;i+=8)
+ {
+ sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i)));
+ sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4)));
+ }
+ sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
+ sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
+ _mm_store_ss(&ret, sum);
+ return ret;
+}
+
+#de...
2008 May 03
0
Resampler, memory only variant
...GE.
+*/
+
+#include <xmmintrin.h>
+
+#define OVERRIDE_INNER_PRODUCT_SINGLE
+static inline float inner_product_single(const float *a, const float *b, unsigned int len)
+{
+ int i;
+ float ret;
+ __m128 sum = _mm_setzero_ps();
+ for (i=0;i<len;i+=8)
+ {
+ sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i), _mm_loadu_ps(b+i)));
+ sum = _mm_add_ps(sum, _mm_mul_ps(_mm_loadu_ps(a+i+4), _mm_loadu_ps(b+i+4)));
+ }
+ sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
+ sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
+ _mm_store_ss(&ret, sum);
+ return ret;
+}
+
+#de...
2016 May 31
2
[PATCH 1/2] Modify autoconf tests for intrinsics to stop clang from optimizing them away.
...86_PRESUME_SSE],
[[#include <xmmintrin.h>
+ #include <time.h>
]],
[[
- static __m128 mtest;
- mtest = _mm_setzero_ps();
+ __m128 mtest;
+ mtest = _mm_set1_ps((float)time(NULL));
+ mtest = _mm_mul_ps(mtest, mtest);
+ return _mm_cvtss_si32(mtest);
]]
)
AS_IF([test x"$OPUS_X86_MAY_HAVE_SSE" = x"1" && test x"$OPUS_X86_PRESUME_SSE" != x"1"],
@@ -539,10 +543,13 @@ AS_IF([test x"$enable_intrinsics" = x"...
2007 Mar 14
2
re: decoder issue in sb_celp
...or
xout2 that go to INF.
That is the main issue- I have also seen the IIR filter go wonky
occasionally, which is what is corrupting st->mem_sp. Usually
this is just because there are some odd values in st->interp_qlpc.
However it seems like it can also just happen sometimes as
output of the _mm_mul_ps multiply goes to INF (this can also
happen in the non-sse code). I am working on figuring out why
this is happening.
With the new changes also filter_ratio went to 0 in one of my
tests, in part because rh was INF. This is around the section
where I think you made changes to how you calculate st-...
2015 Mar 18
5
[RFC PATCH v1 0/4] Enable aarch64 intrinsics/Ne10
Hi All,
Since I continue to base my work on top of Jonathan's patch,
and my previous Ne10 fft/ifft/mdct_forward/backward patches,
I thought it would be better to just post all new patches
as a patch series. Please let me know if anyone disagrees
with this approach.
You can see wip branch of all latest patches at
https://git.linaro.org/people/viswanath.puttagunta/opus.git
Branch:
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]
2004 Aug 06
2
Notes on 1.1.4 Windows. Testing of SSE Intrinics Code and others
...0h],xmm1
266: mem[0] = _mm_shuffle_ps(mem[0], mem[0], 0x39);
004134E8 movaps xmm0,xmmword ptr [ebp-60h]
004134EC movaps xmm1,xmmword ptr [ebp-60h]
004134F0 shufps xmm1,xmm0,39h
004134F4 movaps xmmword ptr [ebp-60h],xmm1
267:
268: mem[0] = _mm_add_ps(mem[0], _mm_mul_ps(xx, num[0]));
004134F8 movaps xmm0,xmmword ptr [ebp-30h]
004134FC movaps xmm1,xmmword ptr [xx]
00413500 mulps xmm1,xmm0
00413503 movaps xmm0,xmmword ptr [ebp-60h]
00413507 addps xmm0,xmm1
0041350A movaps xmmword ptr [ebp-60h],xmm0
269:
270: mem[1]...
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
2009 Oct 26
1
[PATCH] Fix miscompile of SSE resampler
...at *b, unsigned int len, const spx_uint32_t oversample, float *frac) {
int i;
- float ret;
__m128 sum = _mm_setzero_ps();
__m128 f = _mm_loadu_ps(frac);
for(i=0;i<len;i+=2)
@@ -67,18 +64,16 @@ static inline float interpolate_product_single(const float *a, const float *b, u
sum = _mm_mul_ps(f, sum);
sum = _mm_add_ps(sum, _mm_movehl_ps(sum, sum));
sum = _mm_add_ss(sum, _mm_shuffle_ps(sum, sum, 0x55));
- _mm_store_ss(&ret, sum);
- return ret;
+ _mm_store_ss(ret, sum);
}
#ifdef _USE_SSE2
#include <emmintrin.h>
#define OVERRIDE_INNER_PRODUCT_DOUBLE
-static...
2007 Mar 14
0
re: decoder issue in sb_celp
...o wonky
> occasionally, which is what is corrupting st->mem_sp.
Well, they would if the filter is bad (read unstable).
> Usually
> this is just because there are some odd values in st->interp_qlpc.
> However it seems like it can also just happen sometimes as
> output of the _mm_mul_ps multiply goes to INF (this can also
> happen in the non-sse code). I am working on figuring out why
> this is happening.
Can you leave SSE out of that for now?
> With the new changes also filter_ratio went to 0 in one of my
> tests, in part because rh was INF. This is around the sec...
2007 Mar 13
3
re: decoder issue in sb_celp
A little more info on this:
I backtracked deeper into this and it looks like excBuf
is corrupted, which is corrupted by low_innov_alias
being invalid. However it is not entirely clear where
that gets initialized (in sb_celp it is set to out+st->frame_size)
Tom