diff --git a/libavcodec/x86/sbrdsp.asm b/libavcodec/x86/sbrdsp.asm index 999e5af79e..2900469dbd 100644 --- a/libavcodec/x86/sbrdsp.asm +++ b/libavcodec/x86/sbrdsp.asm @@ -224,21 +224,21 @@ cglobal sbr_qmf_post_shuffle, 2,3,4,W,z INIT_XMM sse cglobal sbr_neg_odd_64, 1,2,4,z - lea r1q, [zq+256] + lea r1q, [zq+256] .loop: - mova m0, [zq+ 0] - mova m1, [zq+16] - mova m2, [zq+32] - mova m3, [zq+48] - xorps m0, [ps_mask2] - xorps m1, [ps_mask2] - xorps m2, [ps_mask2] - xorps m3, [ps_mask2] - mova [zq+ 0], m0 - mova [zq+16], m1 - mova [zq+32], m2 - mova [zq+48], m3 - add zq, 64 - cmp zq, r1q - jne .loop + mova m0, [zq+ 0] + mova m1, [zq+16] + mova m2, [zq+32] + mova m3, [zq+48] + xorps m0, [ps_mask2] + xorps m1, [ps_mask2] + xorps m2, [ps_mask2] + xorps m3, [ps_mask2] + mova [zq+ 0], m0 + mova [zq+16], m1 + mova [zq+32], m2 + mova [zq+48], m3 + add zq, 64 + cmp zq, r1q + jne .loop REP_RET diff --git a/libavcodec/x86/sbrdsp_init.c b/libavcodec/x86/sbrdsp_init.c index d8d6ae73e8..cb65a23f22 100644 --- a/libavcodec/x86/sbrdsp_init.c +++ b/libavcodec/x86/sbrdsp_init.c @@ -32,19 +32,19 @@ void ff_sbr_hf_g_filt_sse(float (*Y)[2], const float (*X_high)[40][2], void ff_sbr_hf_gen_sse(float (*X_high)[2], const float (*X_low)[2], const float alpha0[2], const float alpha1[2], float bw, int start, int end); -void ff_sbr_qmf_post_shuffle_sse(float W[32][2], const float *z); void ff_sbr_neg_odd_64_sse(float *z); +void ff_sbr_qmf_post_shuffle_sse(float W[32][2], const float *z); av_cold void ff_sbrdsp_init_x86(SBRDSPContext *s) { int mm_flags = av_get_cpu_flags(); if (EXTERNAL_SSE(mm_flags)) { + s->neg_odd_64 = ff_sbr_neg_odd_64_sse; s->sum_square = ff_sbr_sum_square_sse; s->sum64x5 = ff_sbr_sum64x5_sse; s->hf_g_filt = ff_sbr_hf_g_filt_sse; s->hf_gen = ff_sbr_hf_gen_sse; s->qmf_post_shuffle = ff_sbr_qmf_post_shuffle_sse; - s->neg_odd_64 = ff_sbr_neg_odd_64_sse; } }