x86: move definition of 'value' to correct branch in _mm_loadl_epi64 #4238
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches-ignore: | |
- 'master' | |
- 'ci/**' | |
- '!ci/gha**' | |
pull_request: | |
branches: | |
- 'master' | |
jobs: | |
formatting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 2 | |
- name: Install pcre2grep | |
run: sudo apt-get update && sudo apt-get install -y pcre2-utils | |
# Check for trailing whitespace | |
- name: Trailing whitespace | |
run: find simde/ -name '*.c' -o -name '*.h' -exec grep -nP '\s+$' {} + && exit 1 || exit 0 | |
# We use spaces, not tabs. I don't want to start a holy war here; | |
# I don't actually have a strong preference between the two, but I | |
# do have a strong preference for consistency, so don't @ me. | |
- name: Tabs | |
run: find simde/ -name '*.c' -o -name '*.h' -exec grep -nP '\t' {} + && exit 1 || exit 0 | |
# s/8/16/ will result in this if the input is x86. | |
- name: Bad substitutions | |
run: git grep -i 'x''1''6''6' && exit 1 || exit 0 | |
- name: Incorrect assertions in test/ | |
run: grep -PR '(?<=[^a-zA-Z0-9_])simde_assert_u?int(8|16|32|64)(?>[^a-zA-Z0-9_])' test/ && exit 1 || exit 0 | |
# Check to make sure no source files have the executable bit set | |
- name: Executable sources | |
run: find \( -name '*.c' -o -name '*.h' \) -executable | grep -q '.' && exit 1 || exit 0 | |
# Make sure neon.h includes all the NEON headers. | |
- name: Missing NEON includes | |
run: for f in simde/arm/neon/*.h; do grep -q "include \"neon/$(basename "$f")\"" simde/arm/neon.h || (echo "Missing $f" && exit 1); done | |
# Make sure sve.h includes all the SVE headers. | |
- name: Missing SVE includes | |
run: for f in simde/arm/sve/*.h; do grep -q "include \"sve/$(basename "$f")\"" simde/arm/sve.h || (echo "Missing $f" && exit 1); done | |
# Make sure msa.h includes all the MSA headers. | |
- name: Missing MSA includes | |
run: for f in simde/mips/msa/*.h; do grep -q "include \"msa/$(basename "$f")\"" simde/mips/msa.h || (echo "Missing $f" && exit 1); done | |
# Make sure we can find the expected header guards. It's easy to miss this when doing C&P | |
- name: Header guards | |
run: for file in $(find simde/*/ -name '*.h'); do grep -q "$(echo "$file" | tr '[:lower:]' '[:upper:]' | tr '[:punct:]' '_')" "$file" || (echo "Missing or incorrect header guard in $file" && exit 1); done | |
# There should be an empty line at the end of every file | |
- name: Newline at EOF | |
run: for file in $(find simde -name '*.h'); do if [ ! -z "$(tail -c 1 "$file")" ]; then echo "No newline at end of $file" && exit 1; fi; done | |
# Don't #ifndef ; use !defined(...) instead. ifndef leads to annoying inconsistencies | |
- name: ifndef | |
run: for file in $(find simde -name '*.h'); do grep -qP '^ *# *ifndef ' "${file}" && exit 1 || exit 0; done | |
# List of headers we want Meson to install | |
- name: Meson install headers | |
run: for file in $(find simde -name '*.h'); do grep -qF "$(basename "${file}" .h)" meson.build || (echo "${file} missing from top-level meson.build" && exit 1); done | |
# Make sure we don't accidentally use `vector ...` instead of SIMDE_POWER_ALTIVEC_VECTOR(...) | |
- name: AltiVec raw vector keyword | |
run: find simde/ -name '*.c' -o -name '*.h' -exec grep -nP 'vector( +)((bool|signed|unsigned) +)?(double|float|long long|long|int|short|char)' {} + && exit 1 || exit 0 | |
# Check indentation of preprocessor directives. | |
- name: Preprocessor directive indentation | |
run: find simde/*/ -name 'avx*.h' -exec pcre2grep -M '{\n#' {} + && exit 1 || exit 0 | |
- name: Stray `&& 0` | |
run: git grep ' && 0' simde/ test/ && exit 1 || exit 0 | |
x86: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
isax: | |
- -mavx512bw -mavx512vl -mavx512cd -mavx512dq -mavx512vbmi -mavx512ifma -mavx512vpopcntdq -mavx512bitalg -mavx512vnni -mvpclmulqdq | |
- -mavx512bw -mavx512vl -DSIMDE_NATURAL_VECTOR_SIZE=256 | |
- -mavx512f | |
- -mavx512bw | |
- -mavx512vl | |
- -mavx512vl -mavx512dq | |
- -mavx512cd | |
- -mavx512dq | |
- -msse2 | |
- -msse3 | |
- -mssse3 | |
- -msse4.1 | |
- -msse4.2 | |
- -mavx | |
- -mfma | |
- -mavx2 | |
env: | |
CFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} | |
CXXFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel parallel gcovr | |
- name: Install pip Dependencies | |
run: pip3 install meson | |
- name: Configure | |
run: ~/.local/bin/meson setup build -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/test/check-flags.sh sde" | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v1 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
emscripten: | |
runs-on: ubuntu-latest | |
env: | |
CFLAGS: -Weverything -Werror -O2 -msimd128 | |
CXXFLAGS: -Weverything -Werror -O2 -msimd128 | |
LDFLAGS: -s ENVIRONMENT=shell -s ASSERTIONS=1 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install ninja-build ninja-build python3-pip python3-setuptools python3-wheel gcovr | |
- name: Install pip Dependencies | |
run: pip3 install meson | |
- name: Install emscripten | |
run: | | |
git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk | |
cd /opt/emsdk | |
./emsdk update-tags | |
./emsdk install tot | |
./emsdk activate tot | |
source emsdk_env.sh | |
- name: Install v8 | |
run: | | |
sudo npm install jsvu -g | |
jsvu --os=linux64 --engines=v8 | |
sudo ln -s $HOME/.jsvu/v8 /usr/bin/v8 | |
ls -l /usr/bin/v8 | |
ls -l ~/.jsvu || true | |
/usr/bin/v8 --help | |
- name: Configure | |
run: ~/.local/bin/meson setup build --optimization 2 --cross-file docker/cross-files/emscripten.cross | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test | |
native-aliases: | |
runs-on: ubuntu-latest | |
env: | |
CC: gcc-10 | |
CXX: g++-10 | |
CFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -march=native -Wall -Wextra -Werror | |
CXXFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -march=native -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install libxml2-utils ninja-build python3-pip python3-setuptools python3-wheel gcc-10 g++-10 parallel gcovr | |
- name: Install pip Dependencies | |
run: pip3 install meson | |
- name: Convert | |
run: ./test/native-aliases.sh | |
- name: Configure | |
run: ~/.local/bin/meson setup build -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v1 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
sleef: | |
runs-on: ubuntu-20.04 | |
env: | |
CFLAGS: -march=native -Wall -Wextra -Werror | |
CXXFLAGS: -march=native -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel parallel gcovr libsleef-dev | |
- name: Install pip Dependencies | |
run: pip3 install meson | |
- name: Configure | |
run: ~/.local/bin/meson setup build -Dsleef=enabled -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v1 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
gcc: | |
strategy: | |
matrix: | |
include: | |
# - version: 4.7 | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
# - version: 4.8 | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
# - version: 4.9 | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
- version: 5 | |
distro: ubuntu-18.04 | |
arch_flags: -mavx2 | |
# - version: 6 | |
# distro: ubuntu-18.04 | |
# arch_flags: -march=native | |
# - version: 7 | |
# distro: ubuntu-18.04 | |
# arch_flags: -march=native | |
- version: 8 | |
distro: ubuntu-18.04 | |
arch_flags: -march=native | |
# - version: 9 | |
# distro: ubuntu-20.04 | |
# arch_flags: -march=native | |
- version: 10 | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
runs-on: ${{ matrix.distro }} | |
env: | |
CC: gcc-${{ matrix.version }} | |
CXX: g++-${{ matrix.version }} | |
CFLAGS: ${{ matrix.arch_flags }} -Wall -Wextra -Werror | |
CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Wextra -Werror | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install ninja-build parallel "${CC}" "${CXX}" | |
- name: Configure | |
run: mkdir test/build && cd test/build && cmake -G Ninja .. | |
- name: Build | |
run: ninja -C test/build -v | |
- name: Test | |
run: ctest -C test/build ---output-on-failure | |
clang: | |
strategy: | |
matrix: | |
include: | |
# - version: "3.5" | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
# - version: "3.6" | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
# - version: "3.7" | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
# - version: "3.8" | |
# distro: ubuntu-16.04 | |
# arch_flags: -mavx2 | |
- version: "3.9" | |
distro: ubuntu-18.04 | |
arch_flags: -mavx2 | |
# - version: "4.0" | |
# distro: ubuntu-18.04 | |
# arch_flags: -mavx2 | |
- version: "5.0" | |
distro: ubuntu-18.04 | |
arch_flags: -mavx2 | |
# - version: "6.0" | |
# distro: ubuntu-20.04 | |
# arch_flags: -march=native | |
- version: "7" | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
# - version: "8" | |
# distro: ubuntu-20.04 | |
# arch_flags: -march=native | |
- version: "10" | |
distro: ubuntu-20.04 | |
arch_flags: -march=native | |
runs-on: ${{ matrix.distro }} | |
env: | |
CC: clang-${{ matrix.version }} | |
CXX: clang++-${{ matrix.version }} | |
CFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions | |
CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update && sudo apt-get -yq install ninja-build parallel clang-${{ matrix.version }} | |
- name: Configure | |
run: mkdir test/build && cd test/build && cmake -G Ninja .. | |
- name: Build | |
run: ninja -C test/build -v | |
- name: Test | |
run: ctest -C test/build ---output-on-failure | |
macos: | |
runs-on: macos-10.15 | |
strategy: | |
matrix: | |
# https://www.jessesquires.com/blog/2020/01/06/selecting-an-xcode-version-on-github-ci/ | |
# https://github.com/actions/virtual-environments/blob/master/images/macos/macos-10.15-Readme.md#xcode | |
xcode: ["11.3.1", "11.7", "12.3"] | |
# xcode: ["11.7", "12.4", "12.5.1"] # for macos-11 | |
env: | |
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: recursive | |
- name: System Information | |
run: system_profiler | |
- name: Compiler version | |
run: cc --version | |
- name: Install Homebrew Dependencies | |
run: brew install meson ninja gcovr | |
- name: Configure | |
run: meson setup build -Db_coverage=true | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test | |
- name: Coverage Report | |
run: ninja -C build -v coverage-xml | |
- name: CodeCov.io | |
uses: codecov/codecov-action@v1 | |
with: | |
file: ./build/meson-logs/coverage.xml | |
icc: | |
runs-on: ubuntu-latest | |
env: | |
CC: /home/runner/.local/bin/icc | |
CXX: /home/runner/.local/bin/icpc | |
CFLAGS: -Werror -wd13200 -wd13203 -wd16219 -Wall -Werror -march=native | |
CXXFLAGS: -wd13200 -wd13203 -wd16219 -Wall -Werror -march=native | |
steps: | |
- uses: actions/checkout@v2 | |
- name: CPU Information | |
run: cat /proc/cpuinfo | |
- name: Install APT Dependencies | |
run: sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel | |
- name: Install ICC | |
run: | | |
curl -s https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | sudo apt-key add - | |
sudo add-apt-repository 'deb https://apt.repos.intel.com/oneapi all main' | |
sudo apt-get update | |
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic ninja-build ninja-build python3-pip python3-setuptools python3-wheel | |
mkdir -p ~/.local/bin/ || true | |
for exe in icc icpc; do | |
printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > ~/.local/bin/"${exe}" | |
chmod 0755 ~/.local/bin/"${exe}"; | |
done | |
- name: Install pip Dependencies | |
run: pip3 install meson | |
- name: Configure | |
run: ~/.local/bin/meson setup build | |
- name: Build | |
run: ninja -C build -v | |
- name: Test | |
run: ninja -C build -v test |