Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,25 @@ GENERIC_SIMD256_LIBS = dft/simd/generic-simd256/libdft_generic_simd256_codelets.
rdft/simd/generic-simd256/librdft_generic_simd256_codelets.la
endif

if HAVE_R5V
R5V_LIBS = dft/simd/r5v128/libdft_r5v128_codelets.la \
rdft/simd/r5v128/librdft_r5v128_codelets.la \
dft/simd/r5v256/libdft_r5v256_codelets.la \
rdft/simd/r5v256/librdft_r5v256_codelets.la \
dft/simd/r5v512/libdft_r5v512_codelets.la \
rdft/simd/r5v512/librdft_r5v512_codelets.la \
dft/simd/r5v1024/libdft_r5v1024_codelets.la \
rdft/simd/r5v1024/librdft_r5v1024_codelets.la \
dft/simd/r5v2048/libdft_r5v2048_codelets.la \
rdft/simd/r5v2048/librdft_r5v2048_codelets.la \
dft/simd/r5v4096/libdft_r5v4096_codelets.la \
rdft/simd/r5v4096/librdft_r5v4096_codelets.la \
dft/simd/r5v8192/libdft_r5v8192_codelets.la \
rdft/simd/r5v8192/librdft_r5v8192_codelets.la \
dft/simd/r5v16384/libdft_r5v16384_codelets.la \
rdft/simd/r5v16384/librdft_r5v16384_codelets.la
endif

if THREADS
if COMBINED_THREADS
COMBINED_THREADLIBS=threads/libfftw3@PREC_SUFFIX@_threads.la
Expand All @@ -152,7 +171,7 @@ libfftw3@PREC_SUFFIX@_la_LIBADD = \
$(AVX2_LIBS) $(ALTIVEC_LIBS) \
$(VSX_LIBS) $(NEON_LIBS) $(SVE_LIBS) $(KCVI_LIBS) $(AVX512_LIBS) \
$(LSX_LIBS) $(LASX_LIBS) \
$(GENERIC_SIMD128_LIBS) $(GENERIC_SIMD256_LIBS) \
$(GENERIC_SIMD128_LIBS) $(GENERIC_SIMD256_LIBS) $(R5V_LIBS) \
$(COMBINED_THREADLIBS)

if QUAD
Expand Down
4 changes: 4 additions & 0 deletions api/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,8 @@ const char X(version)[] = PACKAGE "-" PACKAGE_VERSION
"-generic_simd256"
#endif

#if defined(HAVE_R5V)
"-r5v"
#endif

;
22 changes: 22 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@ if test "$have_sve" = "yes"; then
fi
AM_CONDITIONAL(HAVE_SVE, test "$have_sve" = "yes")

AC_ARG_ENABLE(r5v, [AC_HELP_STRING([--enable-r5v],[enable RISC-V V optimizations])], have_r5v=$enableval, have_r5v=no)
if test "$have_r5v" = "yes"; then
AC_DEFINE(HAVE_R5V,1,[Define to enable RISC-V V optimizations.])
fi
AM_CONDITIONAL(HAVE_R5V, test "$have_r5v" = "yes")

dnl FIXME:
dnl AC_ARG_ENABLE(mips-ps, [AS_HELP_STRING([--enable-mips-ps],[enable MIPS pair-single optimizations])], have_mips_ps=$enableval, have_mips_ps=no)
dnl if test "$have_mips_ps" = "yes"; then
Expand Down Expand Up @@ -825,6 +831,14 @@ AC_CONFIG_FILES([
dft/simd/lasx/Makefile
dft/simd/generic-simd128/Makefile
dft/simd/generic-simd256/Makefile
dft/simd/r5v128/Makefile
dft/simd/r5v256/Makefile
dft/simd/r5v512/Makefile
dft/simd/r5v1024/Makefile
dft/simd/r5v2048/Makefile
dft/simd/r5v4096/Makefile
dft/simd/r5v8192/Makefile
dft/simd/r5v16384/Makefile

rdft/Makefile
rdft/scalar/Makefile
Expand Down Expand Up @@ -852,6 +866,14 @@ AC_CONFIG_FILES([
rdft/simd/lasx/Makefile
rdft/simd/generic-simd128/Makefile
rdft/simd/generic-simd256/Makefile
rdft/simd/r5v128/Makefile
rdft/simd/r5v256/Makefile
rdft/simd/r5v512/Makefile
rdft/simd/r5v1024/Makefile
rdft/simd/r5v2048/Makefile
rdft/simd/r5v4096/Makefile
rdft/simd/r5v8192/Makefile
rdft/simd/r5v16384/Makefile

reodft/Makefile

Expand Down
9 changes: 8 additions & 1 deletion dft/codelet-dft.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,12 @@ extern const solvtab X(solvtab_dft_lsx);
extern const solvtab X(solvtab_dft_lasx);
extern const solvtab X(solvtab_dft_generic_simd128);
extern const solvtab X(solvtab_dft_generic_simd256);

extern const solvtab X(solvtab_dft_r5v128);
extern const solvtab X(solvtab_dft_r5v256);
extern const solvtab X(solvtab_dft_r5v512);
extern const solvtab X(solvtab_dft_r5v1024);
extern const solvtab X(solvtab_dft_r5v2048);
extern const solvtab X(solvtab_dft_r5v4096);
extern const solvtab X(solvtab_dft_r5v8192);
extern const solvtab X(solvtab_dft_r5v16384);
#endif /* __DFT_CODELET_H__ */
18 changes: 18 additions & 0 deletions dft/conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,22 @@ void X(dft_conf_standard)(planner *p)
#if HAVE_GENERIC_SIMD256
X(solvtab_exec)(X(solvtab_dft_generic_simd256), p);
#endif
#if HAVE_R5V
if (X(have_simd_r5v)(128))
X(solvtab_exec)(X(solvtab_dft_r5v128), p);
if (X(have_simd_r5v)(256))
X(solvtab_exec)(X(solvtab_dft_r5v256), p);
if (X(have_simd_r5v)(512))
X(solvtab_exec)(X(solvtab_dft_r5v512), p);
if (X(have_simd_r5v)(1024))
X(solvtab_exec)(X(solvtab_dft_r5v1024), p);
if (X(have_simd_r5v)(2048))
X(solvtab_exec)(X(solvtab_dft_r5v2048), p);
if (X(have_simd_r5v)(4096))
X(solvtab_exec)(X(solvtab_dft_r5v4096), p);
if (X(have_simd_r5v)(8192))
X(solvtab_exec)(X(solvtab_dft_r5v8192), p);
if (X(have_simd_r5v)(16384))
X(solvtab_exec)(X(solvtab_dft_r5v16384), p);
#endif
}
2 changes: 1 addition & 1 deletion dft/simd/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
AM_CPPFLAGS = -I $(top_srcdir)
SUBDIRS = common sse2 avx avx-128-fma avx2 avx2-128 avx512 kcvi altivec vsx neon sve128 sve256 sve512 sve1024 sve2048 lsx lasx generic-simd128 generic-simd256
SUBDIRS = common sse2 avx avx-128-fma avx2 avx2-128 avx512 kcvi altivec vsx neon sve128 sve256 sve512 sve1024 sve2048 lsx lasx generic-simd128 generic-simd256 r5v128 r5v256 r5v512 r5v1024 r5v2048 r5v4096 r5v8192 r5v16384
EXTRA_DIST = n1b.h n1f.h n2b.h n2f.h n2s.h q1b.h q1f.h t1b.h t1bu.h \
t1f.h t1fu.h t2b.h t2f.h t3b.h t3f.h ts.h codlist.mk simd.mk
12 changes: 12 additions & 0 deletions dft/simd/r5v1024/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v1024.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v1024_codelets.la
libdft_r5v1024_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v128/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v128.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v128_codelets.la
libdft_r5v128_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v16384/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v16384.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v16384_codelets.la
libdft_r5v16384_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v2048/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v2048.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v2048_codelets.la
libdft_r5v2048_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v256/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v256.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v256_codelets.la
libdft_r5v256_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v4096/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v4096.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v4096_codelets.la
libdft_r5v4096_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v512/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v512.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v512_codelets.la
libdft_r5v512_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
12 changes: 12 additions & 0 deletions dft/simd/r5v8192/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
SIMD_HEADER=simd-support/simd-r5v8192.h

include $(top_srcdir)/dft/simd/codlist.mk
include $(top_srcdir)/dft/simd/simd.mk

if HAVE_R5V

BUILT_SOURCES = $(EXTRA_DIST)
noinst_LTLIBRARIES = libdft_r5v8192_codelets.la
libdft_r5v8192_codelets_la_SOURCES = $(BUILT_SOURCES)

endif
6 changes: 4 additions & 2 deletions kernel/ifftw.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ extern void X(extract_reim)(int sign, R *c, R **r, R **i);
defined(HAVE_ALTIVEC) || defined(HAVE_VSX) || \
defined(HAVE_MIPS_PS) || \
defined(HAVE_LSX) || defined(HAVE_LASX) || \
defined(HAVE_GENERIC_SIMD128) || defined(HAVE_GENERIC_SIMD256)
defined(HAVE_GENERIC_SIMD128) || defined(HAVE_GENERIC_SIMD256) || \
defined(HAVE_R5V)
#define HAVE_SIMD 1
#else
#define HAVE_SIMD 0
Expand All @@ -127,6 +128,7 @@ extern int X(have_simd_neon)(void);
extern int X(have_simd_lsx)(void);
extern int X(have_simd_lasx)(void);
extern int X(have_simd_sve)(int minwidth);
extern int X(have_simd_r5v)(int);

/* forward declarations */
typedef struct problem_s problem;
Expand Down Expand Up @@ -884,7 +886,7 @@ enum { TW_COS = 0, TW_SIN = 1, TW_CEXP = 2, TW_NEXT = 3,

typedef struct {
unsigned char op;
signed char v;
short v;
short i;
} tw_instr;

Expand Down
8 changes: 8 additions & 0 deletions rdft/codelet-rdft.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,14 @@ extern const solvtab X(solvtab_rdft_lsx);
extern const solvtab X(solvtab_rdft_lasx);
extern const solvtab X(solvtab_rdft_generic_simd128);
extern const solvtab X(solvtab_rdft_generic_simd256);
extern const solvtab X(solvtab_rdft_r5v128);
extern const solvtab X(solvtab_rdft_r5v256);
extern const solvtab X(solvtab_rdft_r5v512);
extern const solvtab X(solvtab_rdft_r5v1024);
extern const solvtab X(solvtab_rdft_r5v2048);
extern const solvtab X(solvtab_rdft_r5v4096);
extern const solvtab X(solvtab_rdft_r5v8192);
extern const solvtab X(solvtab_rdft_r5v16384);

/* real-input & output DFT-like codelets (DHT, etc.) */
typedef struct kr2r_desc_s kr2r_desc;
Expand Down
18 changes: 18 additions & 0 deletions rdft/conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,22 @@ void X(rdft_conf_standard)(planner *p)
#if HAVE_GENERIC_SIMD256
X(solvtab_exec)(X(solvtab_rdft_generic_simd256), p);
#endif
#if HAVE_R5V
if (X(have_simd_r5v)(128))
X(solvtab_exec)(X(solvtab_rdft_r5v128), p);
if (X(have_simd_r5v)(256))
X(solvtab_exec)(X(solvtab_rdft_r5v256), p);
if (X(have_simd_r5v)(512))
X(solvtab_exec)(X(solvtab_rdft_r5v512), p);
if (X(have_simd_r5v)(1024))
X(solvtab_exec)(X(solvtab_rdft_r5v1024), p);
if (X(have_simd_r5v)(2048))
X(solvtab_exec)(X(solvtab_rdft_r5v2048), p);
if (X(have_simd_r5v)(4096))
X(solvtab_exec)(X(solvtab_rdft_r5v4096), p);
if (X(have_simd_r5v)(8192))
X(solvtab_exec)(X(solvtab_rdft_r5v8192), p);
if (X(have_simd_r5v)(16384))
X(solvtab_exec)(X(solvtab_rdft_r5v16384), p);
#endif
}
2 changes: 1 addition & 1 deletion rdft/simd/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

AM_CPPFLAGS = -I $(top_srcdir)
SUBDIRS = common sse2 avx avx-128-fma avx2 avx2-128 avx512 kcvi altivec vsx neon sve128 sve256 sve512 sve1024 sve2048 lsx lasx generic-simd128 generic-simd256
SUBDIRS = common sse2 avx avx-128-fma avx2 avx2-128 avx512 kcvi altivec vsx neon sve128 sve256 sve512 sve1024 sve2048 lsx lasx generic-simd128 generic-simd256 r5v128 r5v256 r5v512 r5v1024 r5v2048 r5v4096 r5v8192 r5v16384
EXTRA_DIST = hc2cbv.h hc2cfv.h codlist.mk simd.mk
14 changes: 14 additions & 0 deletions rdft/simd/r5v1024/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v1024.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v1024_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v1024_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


14 changes: 14 additions & 0 deletions rdft/simd/r5v128/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v128.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v128_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v128_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


14 changes: 14 additions & 0 deletions rdft/simd/r5v16384/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v16384.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v16384_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v16384_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


14 changes: 14 additions & 0 deletions rdft/simd/r5v2048/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v2048.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v2048_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v2048_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


14 changes: 14 additions & 0 deletions rdft/simd/r5v256/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v256.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v256_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v256_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


14 changes: 14 additions & 0 deletions rdft/simd/r5v4096/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
SIMD_HEADER=simd-support/simd-r5v4096.h

include $(top_srcdir)/rdft/simd/codlist.mk
include $(top_srcdir)/rdft/simd/simd.mk

if HAVE_R5V

noinst_LTLIBRARIES = librdft_r5v4096_codelets.la
BUILT_SOURCES = $(EXTRA_DIST)
librdft_r5v4096_codelets_la_SOURCES = $(BUILT_SOURCES)

endif


Loading