History

avfilter/x86/af_afir: add FMA3 SIMD

Paul B Mahol committed 3 years ago

Commit c5effe71 parent 5f810432 files · +32 −0Browse files

Showing the changes to libavfilter (2 of 2 files). Show all

Unified · Split

2 files
  1. libavfilter/x86/af_afir.asm +27 −0
  2. libavfilter/x86/af_afir_init.c +5 −0
libavfilter/x86/af_afir.asm+27−0
@@ -67,3 +67,30 @@ INIT_XMM sse3 · 66 unmodified lines
67FCMUL_ADD67FCMUL_ADD
68INIT_YMM avx68INIT_YMM avx
69FCMUL_ADD69FCMUL_ADD
70
71%if HAVE_FMA3_EXTERNAL
72INIT_YMM fma3
73cglobal fcmul_add, 4,4,4, sum, t, c, len
74 shl lend, 3
75 add tq, lenq
76 add cq, lenq
77 add sumq, lenq
78 neg lenq
79.loop:
80 movaps m0, [tq + lenq]
81 movaps m1, [cq + lenq]
82 vpermilps m3, m0, 177
83 vpermilps m2, m1, 160
84 vpermilps m1, m1, 245
85 mulps m1, m1, m3
86 vfmaddsub132ps m0, m1, m2
87 addps m0, m0, [sumq + lenq]
88 movaps [sumq + lenq], m0
89 add lenq, mmsize
90 jl .loop
91 movss xm0, [tq + lenq]
92 mulss xm0, [cq + lenq]
93 addss xm0, [sumq + lenq]
94 movss [sumq + lenq], xm0
95 RET
96%endif
libavfilter/x86/af_afir_init.c+5−0
@@ -26,6 +26,8 @@ void ff_fcmul_add_sse3(float *sum, const float *t, const float *c, · 25 unmodified lines
26 ptrdiff_t len);26 ptrdiff_t len);
27void ff_fcmul_add_avx(float *sum, const float *t, const float *c,27void ff_fcmul_add_avx(float *sum, const float *t, const float *c,
28 ptrdiff_t len);28 ptrdiff_t len);
29void ff_fcmul_add_fma3(float *sum, const float *t, const float *c,
30 ptrdiff_t len);
29 31
30av_cold void ff_afir_init_x86(AudioFIRDSPContext *s)32av_cold void ff_afir_init_x86(AudioFIRDSPContext *s)
31{33{
@@ -37,4 +39,7 @@ av_cold void ff_afir_init_x86(AudioFIRDSPContext *s) · 5 unmodified lines
37 if (EXTERNAL_AVX_FAST(cpu_flags)) {39 if (EXTERNAL_AVX_FAST(cpu_flags)) {
38 s->fcmul_add = ff_fcmul_add_avx;40 s->fcmul_add = ff_fcmul_add_avx;
39 }41 }
42 if (EXTERNAL_FMA3_FAST(cpu_flags)) {
43 s->fcmul_add = ff_fcmul_add_fma3;
44 }
40}45}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t