rsimd

Make SIMD instruction sets easier to use
git clone git://git.meso-star.fr/rsimd.git
Log | Files | Refs | README | LICENSE

commit 0d10245b1a9c056c79459d38518eb0034ad038a1
parent 2757db8fe466d8de414526d46317b397356f4ba8
Author: vaplv <vaplv@free.fr>
Date:   Tue, 13 May 2025 16:09:09 +0200

Merge branch 'release_0.6'

Diffstat:
M.gitignore | 2++
MMakefile | 150+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
MREADME.md | 14+++++++++++++-
Mconfig.mk | 20+++++++++-----------
Dmake.sh | 117-------------------------------------------------------------------------------
Msrc/aosf33.h | 2+-
Msrc/aosf44.c | 2+-
Msrc/aosf44.h | 2+-
Msrc/aosq.c | 2+-
Msrc/aosq.h | 2+-
Msrc/avx/avx.h | 2+-
Msrc/avx/avxf.h | 2+-
Msrc/avx/avxi.h | 2+-
Dsrc/math.h | 29-----------------------------
Asrc/math.h.in | 24++++++++++++++++++++++++
Msrc/math4.c | 2+-
Msrc/math4.h | 2+-
Msrc/math8.c | 2+-
Msrc/math8.h | 2+-
Msrc/mathX.h | 2+-
Msrc/mathX_c.h | 2+-
Dsrc/rsimd.h | 36------------------------------------
Asrc/rsimd.h.in | 32++++++++++++++++++++++++++++++++
Msrc/soa4f2.h | 2+-
Msrc/soa4f3.h | 2+-
Msrc/soa4f4.h | 2+-
Msrc/soa8f2.h | 2+-
Msrc/soa8f3.h | 2+-
Msrc/soa8f4.h | 2+-
Msrc/soaXf2.h | 2+-
Msrc/soaXf3.h | 2+-
Msrc/soaXfY.h | 2+-
Msrc/soaXfY_begin.h | 2+-
Msrc/soaXfY_end.h | 2+-
Msrc/sse/sse.h | 2+-
Msrc/sse/sse_swz.h | 2+-
Msrc/sse/ssef.h | 2+-
Msrc/sse/ssei.h | 2+-
Msrc/test_aosf33.c | 2+-
Msrc/test_aosf44.c | 2+-
Msrc/test_aosq.c | 2+-
Msrc/test_soa4f2.c | 2+-
Msrc/test_soa4f3.c | 2+-
Msrc/test_soa4f4.c | 2+-
Msrc/test_soa8f2.c | 2+-
Msrc/test_soa8f3.c | 2+-
Msrc/test_soa8f4.c | 2+-
Msrc/test_soaXfY.h | 2+-
Msrc/test_v4f.c | 2+-
Msrc/test_v4i.c | 2+-
Msrc/test_v8f.c | 2+-
Msrc/test_v8i.c | 2+-
Msrc/vXf_begin.h | 2+-
Msrc/vXf_end.h | 2+-
54 files changed, 214 insertions(+), 300 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -11,3 +11,5 @@ test* .simd .config rsimd*.pc +src/math.h +src/rsimd.h diff --git a/Makefile b/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +# Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,6 +22,9 @@ LIBNAME_STATIC = librsimd.a LIBNAME_SHARED = librsimd.so LIBNAME = $(LIBNAME_$(LIB_TYPE)) +default: library +all: library tests + ################################################################################ # Library building ################################################################################ @@ -31,9 +34,10 @@ SRC = $(SRC_SIMD$(SIMD_WIDTH)) OBJ = $(SRC:.c=.o) DEP = $(SRC:.c=.d) -build_library: +CFLAGS_LIB = -std=c99 $(CFLAGS_SO) $(INCS) -DRSIMD_SHARED_BUILD +LDFLAGS_LIB = $(LDFLAGS_SO) $(LIBS) -build_library__: .config $(DEP) +library: .config $(DEP) @$(MAKE) -f.simd -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) \ $$(if [ -n "$(LIBNAME)" ]; then\ echo "$(LIBNAME)";\ @@ -41,10 +45,26 @@ build_library__: .config $(DEP) echo "$(LIBNAME_SHARED)";\ fi) -$(DEP) $(OBJ): config.mk +src/rsimd.h: src/rsimd.h.in config.mk + if [ "$(SIMD_WIDTH)" = "128" ]; then \ + sed '/#include[[:space:]]\{0,\}"avx\/avx\.h"/d' src/rsimd.h.in > $@; \ + fi + if [ "$(SIMD_WIDTH)" = "256" ]; then \ + cp src/rsimd.h.in $@; \ + fi + +src/math.h: src/math.h.in config.mk + if [ "$(SIMD_WIDTH)" = "128" ]; then \ + sed '/#include[[:space:]]\{0,\}"math8\.h"/d' src/math.h.in > $@; \ + fi + if [ "$(SIMD_WIDTH)" = "256" ]; then \ + cp src/math.h.in $@; \ + fi + +$(DEP) $(OBJ): config.mk src/math.h src/rsimd.h $(LIBNAME_SHARED): $(OBJ) - $(CC) -std=c99 $(CFLAGS_SO) $(DPDC_CFLAGS) -o $@ $(OBJ) $(LDFLAGS_SO) $(DPDC_LIBS) + $(CC) $(CFLAGS_LIB) -o $@ $(OBJ) $(LDFLAGS_LIB) $(LIBNAME_STATIC): librsimd.o $(AR) -rc $@ $? @@ -54,40 +74,17 @@ librsimd.o: $(OBJ) $(LD) -r $(OBJ) -o $@ $(OBJCOPY) $(OCPFLAGS) $@ -.config: make.sh config.mk - @if ! $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys; then \ - echo "rsys $(RSYS_VERSION) not found"; exit 1; fi - @if ! $(PKG_CONFIG) --atleast-version $(SLEEF_VERSION) sleef; then \ - echo "sleef $(SLEEF_VERSION) not found"; exit 1; fi - @echo "config done" > $@ - -.simd: make.sh config.mk - @$(SHELL) make.sh config_simd $(MAKE) > $@ +.config: config.mk + $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys + $(PKG_CONFIG) --atleast-version $(SLEEF_VERSION) sleef + echo "config done" > $@ .SUFFIXES: .c .d .o .c.d: - @$(CC) -std=c99 $(CFLAGS_SO) $(DPDC_CFLAGS) -MM -MT "$(@:.d=.o) $@" $< -MF $@ + @$(CC) $(CFLAGS_LIB) -MM -MT "$(@:.d=.o) $@" $< -MF $@ .c.o: - $(CC) -std=c99 $(CFLAGS_SO) $(DPDC_CFLAGS) -DRSIMD_SHARED_BUILD -c $< -o $@ - -################################################################################ -# Miscellaneous targets -################################################################################ -all: build_library build_tests - -clean__: clean_test - rm -f $(OBJ) $(TEST_OBJ) $(LIBNAME) - rm -f .config .simd .test librsimd.o rsimd.pc rsimd-local.pc - -distclean__: clean__ - rm -f $(DEP) $(TEST_DEP) .test - -lint: - shellcheck -o all make.sh - -build_library build_tests clean distclean install .test test uninstall: .simd - @$(MAKE) -f.simd -fMakefile $@__ + $(CC) $(CFLAGS_LIB) -c $< -o $@ ################################################################################ # Installation @@ -151,18 +148,28 @@ rsimd-local.pc: rsimd.pc.in -e 's#-I$${includedir}##g'\ rsimd.pc.in > $@ -install__: build_library pkg - @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/lib" $(LIBNAME) - @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/lib/pkgconfig" rsimd.pc - @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/include/rsimd" $(API) - @$(SHELL) make.sh install "$(DESTDIR)$(PREFIX)/share/doc/rsimd" COPYING README.md - -uninstall__: - rm -f $(DESTDIR)$(PREFIX)/lib/$(LIBNAME) - rm -f $(DESTDIR)$(PREFIX)/lib/pkgconfig/rsimd.pc +install: library pkg + install() { mode="$$1"; prefix="$$2"; shift 2; \ + mkdir -p "$${prefix}"; \ + cp "$$@" "$${prefix}"; \ + chmod "$${mode}" "$$@"; \ + }; \ + install 755 "$(DESTDIR)$(LIBPREFIX)" $(LIBNAME); \ + install 644 "$(DESTDIR)$(LIBPREFIX)/pkgconfig" rsimd.pc; \ + install 644 "$(DESTDIR)$(INCPREFIX)/rsimd" $(API); \ + install 644 "$(DESTDIR)$(PREFIX)/share/doc/rsimd" COPYING README.md + +uninstall: + rm -f $(DESTDIR)$(LIBPREFIX)/$(LIBNAME) + rm -f $(DESTDIR)$(LIBPREFIX)/pkgconfig/rsimd.pc rm -f $(DESTDIR)$(PREFIX)/share/doc/rsimd/COPYING rm -f $(DESTDIR)$(PREFIX)/share/doc/rsimd/README.md - rm -f $$(echo $(API) | sed 's,src\/,$(DESTDIR)$(PREFIX)\/include\/rsimd\/,g') + rm -f $$(echo $(API) | sed 's,src\/,$(DESTDIR)$(INCPREFIX)\/rsimd\/,g') + +clean: clean_test + rm -f $(OBJ) $(DEP) $(LIBNAME) + rm -f .config librsimd.o rsimd.pc rsimd-local.pc + rm -f src/math.h src/rsimd.h ################################################################################ # Tests @@ -186,30 +193,33 @@ TEST_SIMD256=\ TEST_SRC = $(TEST_SIMD$(SIMD_WIDTH)) TEST_OBJ = $(TEST_SRC:.c=.o) TEST_DEP = $(TEST_SRC:.c=.d) +TEST_TGT = $(TEST_SRC:.c=.t) PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG) -RSIMD_CFLAGS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rsimd-local.pc) -RSIMD_LIBS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rsimd-local.pc) +INCS_TEST = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rsimd-local rsys) +LIBS_TEST = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rsimd-local rsys) -build_tests__: build_library $(TEST_DEP) .test .simd - @$(MAKE) -f.simd -fMakefile -f.test \ - $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) test_bin +CFLAGS_TEST = -std=c89 $(CFLAGS_EXE) $(INCS_TEST) +LDFLAGS_TEST = $(LDFLAGS_EXE) $(LIBS_TEST) -test__: build_tests__ - @$(SHELL) make.sh run_test $(TEST_SRC) +tests: library $(TEST_DEP) $(TEST_TGT) + @$(MAKE) -fMakefile \ + $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) \ + $$(for i in $(TEST_TGT); do echo -f"$${i}"; done) \ + test_list -.test__: Makefile make.sh - @$(SHELL) make.sh config_test $(TEST_SRC) > .test - -clean_test: - @$(SHELL) make.sh clean_test $(TEST_SRC) +$(TEST_TGT): + @{ \ + exe="$$(basename "$@" ".t")"; \ + printf '%s: %s\n' "$${exe}" $(@:.t=.o); \ + printf 'test_list: %s\n' "$${exe}"; \ + } > $@ $(TEST_DEP): config.mk rsimd-local.pc - @$(CC) -std=c89 $(CFLAGS_EXE) $(RSIMD_CFLAGS) $(RSYS_CFLAGS) \ - -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@ + @$(CC) $(CFLAGS_TEST) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@ $(TEST_OBJ): config.mk rsimd-local.pc - $(CC) -std=c89 $(CFLAGS_EXE) $(RSIMD_CFLAGS) $(RSYS_CFLAGS) -c $(@:.o=.c) -o $@ + $(CC) $(CFLAGS_TEST) -c $(@:.o=.c) -o $@ test_aosf33 \ test_aosf44 \ @@ -223,9 +233,27 @@ test_soa8f4 \ test_v4f \ test_v4i \ : config.mk rsimd-local.pc $(LIBNAME) - $(CC) $(CFLAGS_EXE) -o $@ src/$@.o $(LDFLAGS_EXE) $(RSIMD_LIBS) $(RSYS_LIBS) + $(CC) -std=c89 $(CFLAGS_TEST) -o $@ src/$@.o $(LDFLAGS_TEST) test_math4 \ test_math8 \ : config.mk rsimd-local.pc $(LIBNAME) - $(CC) $(CFLAGS_EXE) -o $@ src/$@.o $(LDFLAGS_EXE) $(RSIMD_LIBS) $(RSYS_LIBS) -lm + $(CC) -std=c89 $(CFLAGS_TEST) -o $@ src/$@.o $(LDFLAGS_TEST) -lm + +clean_test: + rm -f $(TEST_DEP) $(TEST_OBJ) $(TEST_TGT) + for i in $(TEST_SRC); do rm -f "$$(basename "$${i}" ".c")"; done + +test: tests + @err=0; \ + for i in $(TEST_SRC); do \ + test="$$(basename "$${i}" ".c")"; \ + printf '%s' "$${test}"; \ + if "./$${test}" > /dev/null 2>&1; then \ + printf '\n'; \ + else \ + printf ': error %s\n' "$$?"; \ + err=$$((err+1)); \ + fi \ + done; \ + [ "$${err}" -eq 0 ] diff --git a/README.md b/README.md @@ -22,6 +22,18 @@ Edit config.mk as needed, then run: ## Release notes +### Version 0.6 + +- Fix API headers. Do not include headers (even conditionaly) that + depend on SIMD instructions disabled when compiling the library. The + client application could activate compilation options that enabled + their inclusion, while they were not installed. +- Improves the construction system. Simplifies it by doing everything in + one place (the Makefile). Provides additional macros to control + installation subdirectories. Do not detect SIMD instructions to be + activated at the time of compilation: let them be explicitly defined + by the configuration file. + ### Version 0.5 - Replace CMake by Makefile as build system. @@ -58,7 +70,7 @@ Edit config.mk as needed, then run: ## License -Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) RSIMD is free software released under the GPL v3+ license: GNU GPL version 3 or later. You are welcome to redistribute it under certain diff --git a/config.mk b/config.mk @@ -1,4 +1,4 @@ -VERSION = 0.5.0 # Library version +VERSION = 0.6.0 # Library version PREFIX = /usr/local LIB_TYPE = SHARED @@ -7,9 +7,12 @@ LIB_TYPE = SHARED BUILD_TYPE = RELEASE #BUILD_TYPE = DEBUG -# If not set, SIMD WIDTH is retrieved from host CPU -#SIMD_WIDTH = 128 -#SIMD_WIDTH = 256 +# Instruction sets to be used +# SIMD_WIDTH = 128 +SIMD_WIDTH = 256 + +LIBPREFIX = $(PREFIX)/lib +INCPREFIX = $(PREFIX)/include ################################################################################ # Tools @@ -29,15 +32,10 @@ PCFLAGS_STATIC = --static PCFLAGS = $(PCFLAGS_$(LIB_TYPE)) RSYS_VERSION = 0.14 -RSYS_CFLAGS = $$($(PKG_CONFIG) $(PCFLAGS) --cflags rsys) -RSYS_LIBS = $$($(PKG_CONFIG) $(PCFLAGS) --libs rsys) - SLEEF_VERSION = 3.6 -SLEEF_CFLAGS = $$($(PKG_CONFIG) $(PCFLAGS) --cflags sleef) -SLEEF_LIBS = $$($(PKG_CONFIG) $(PCFLAGS) --libs sleef) -DPDC_CFLAGS = $(RSYS_CFLAGS) $(SLEEF_CFLAGS) -DPDC_LIBS = $(RSYS_LIBS) $(SLEEF_LIBS) +INCS = $$($(PKG_CONFIG) $(PCFLAGS) --cflags rsys sleef) +LIBS = $$($(PKG_CONFIG) $(PCFLAGS) --libs rsys sleef) ################################################################################ # Compilation options diff --git a/make.sh b/make.sh @@ -1,117 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -set -e - -################################################################################ -# Helper functions -################################################################################ -# Print the value of a variable in config.mk -showvar() -{ - var="$1" - shift 1 - - # To avoid messages from Make being displayed instead of the value of the - # queried variable, we redirect its output to /dev/null and open a new file - # descriptor to stdout to print the variable -<< EOF "$@" -f 3>&1 1>/dev/null 2>&1 - || kill -HUP $$ -.POSIX: -include config.mk -showvar: - @1>&3 echo \$(${var}) -EOF - exec 3<&- # Close file descriptor 3 -} - -check_cpuflag() -{ - sed -n "/^flags[[:blank:]]\{1,\}:/{p;q}" /proc/cpuinfo \ -| sed "s/.*[[:blank:]]\{1,\}\($1\)[[:blank:]]\{1,\}.*/\1/" -} - -################################################################################ -# Main functions -################################################################################ -config_simd() -{ - simd_width="$(showvar SIMD_WIDTH "$@")" - avx="$(check_cpuflag avx)" - if [ -z "${simd_width}" ] \ - && [ -n "${avx}" ]; then - simd_width=256 - fi - printf "SIMD_WIDTH = %s\n" "${simd_width}" -} - -config_test() -{ - for i in "$@"; do - test=$(basename "${i}" ".c") - test_list="${test_list} ${test}" - printf "%s: src/%s.o\n" "${test}" "${test}" - done - printf "test_bin: %s\n" "${test_list}" -} - -run_test() -{ - for i in "$@"; do - test=$(basename "${i}" ".c") - - printf "%s " "${test}" - if ./"${test}" > /dev/null 2>&1; then - printf "\033[1;32mOK\033[m\n" - else - printf "\033[1;31mError\033[m\n" - n=$((n+1)) - fi - done 2> /dev/null -} - -clean_test() -{ - for i in "$@"; do - rm -f "$(basename "${i}" ".c")" - done -} - -install() -{ - prefix=$1 - shift 1 - - for i in "$@"; do - # Remove the "src" directory and append the "prefix" - dst="${prefix}/${i#*/}" - - # Create the Install directory if required - dir="${dst%/*}" - if [ ! -d "${dir}" ]; then - mkdir -p "${dir}" - fi - - if cmp -s "${i}" "${dst}"; then - printf "Up to date %s\n" "${dst}" - else - printf "Installing %s\n" "${dst}" - cp "${i}" "${dst}" - fi - done -} - -"$@" diff --git a/src/aosf33.h b/src/aosf33.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/aosf44.c b/src/aosf44.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/aosf44.h b/src/aosf44.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/aosq.c b/src/aosq.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/aosq.h b/src/aosq.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/avx/avx.h b/src/avx/avx.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/avx/avxf.h b/src/avx/avxf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/avx/avxi.h b/src/avx/avxi.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/math.h b/src/math.h @@ -1,29 +0,0 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) - * - * The RSIMD library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * The RSIMD library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the RSIMD library. If not, see <http://www.gnu.org/licenses/>. */ - -#ifndef RSIMD_MATH_H -#define RSIMD_MATH_H - -#include <rsys/rsys.h> - -#ifdef SIMD_SSE2 - #include "math4.h" -#endif -#ifdef SIMD_AVX - #include "math8.h" -#endif - -#endif /* RSIMD_MATH_H */ - diff --git a/src/math.h.in b/src/math.h.in @@ -0,0 +1,24 @@ +/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) + * + * The RSIMD library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The RSIMD library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the RSIMD library. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef RSIMD_MATH_H +#define RSIMD_MATH_H + +#include <rsys/rsys.h> + +#include "math4.h" +#include "math8.h" + +#endif /* RSIMD_MATH_H */ diff --git a/src/math4.c b/src/math4.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/math4.h b/src/math4.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/math8.c b/src/math8.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/math8.h b/src/math8.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/mathX.h b/src/mathX.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/mathX_c.h b/src/mathX_c.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/rsimd.h b/src/rsimd.h @@ -1,36 +0,0 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) - * - * The RSIMD library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * The RSIMD library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the RSIMD library. If not, see <http://www.gnu.org/licenses/>. */ - -#ifndef RSIMD_H -#define RSIMD_H - -#include <rsys/rsys.h> - -#if defined(RSIMD_SHARED_BUILD) - #define RSIMD_API extern EXPORT_SYM -#elif defined(RSIMD_STATIC_BUILD) - #define RSIMD_API extern LOCAL_SYM -#else - #define RSIMD_API extern IMPORT_SYM -#endif - -#ifdef SIMD_SSE2 - #include "sse/sse.h" -#endif -#ifdef SIMD_AVX - #include "avx/avx.h" -#endif - -#endif /* RSIMD_H */ diff --git a/src/rsimd.h.in b/src/rsimd.h.in @@ -0,0 +1,32 @@ +/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) + * + * The RSIMD library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The RSIMD library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the RSIMD library. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef RSIMD_H +#define RSIMD_H + +#include <rsys/rsys.h> + +#if defined(RSIMD_SHARED_BUILD) + #define RSIMD_API extern EXPORT_SYM +#elif defined(RSIMD_STATIC_BUILD) + #define RSIMD_API extern LOCAL_SYM +#else + #define RSIMD_API extern IMPORT_SYM +#endif + +#include "sse/sse.h" +#include "avx/avx.h" + +#endif /* RSIMD_H */ diff --git a/src/soa4f2.h b/src/soa4f2.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soa4f3.h b/src/soa4f3.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soa4f4.h b/src/soa4f4.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soa8f2.h b/src/soa8f2.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soa8f3.h b/src/soa8f3.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soa8f4.h b/src/soa8f4.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soaXf2.h b/src/soaXf2.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soaXf3.h b/src/soaXf3.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soaXfY.h b/src/soaXfY.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soaXfY_begin.h b/src/soaXfY_begin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/soaXfY_end.h b/src/soaXfY_end.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/sse/sse.h b/src/sse/sse.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/sse/sse_swz.h b/src/sse/sse_swz.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/sse/ssef.h b/src/sse/ssef.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/sse/ssei.h b/src/sse/ssei.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_aosf33.c b/src/test_aosf33.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_aosf44.c b/src/test_aosf44.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_aosq.c b/src/test_aosq.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa4f2.c b/src/test_soa4f2.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa4f3.c b/src/test_soa4f3.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa4f4.c b/src/test_soa4f4.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa8f2.c b/src/test_soa8f2.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa8f3.c b/src/test_soa8f3.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soa8f4.c b/src/test_soa8f4.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_soaXfY.h b/src/test_soaXfY.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_v4f.c b/src/test_v4f.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_v4i.c b/src/test_v4i.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_v8f.c b/src/test_v8f.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/test_v8i.c b/src/test_v8i.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/vXf_begin.h b/src/vXf_begin.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published diff --git a/src/vXf_end.h b/src/vXf_end.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2014-2019, 2021, 2023 Vincent Forest (vaplv@free.fr) +/* Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr) * * The RSIMD library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published