Skip to content

Commit

Permalink
Archtectural overhaul
Browse files Browse the repository at this point in the history
+ Removing `supports_aarch64` by introducing `asimd_` as a valid SIMD extension discriminant, defined as a descendant of `neon_`
 + CI now uses more target/architectures for testing these scenarios
 + Doc and standalone updated accordingly
  • Loading branch information
jfalcou authored Jan 29, 2021
1 parent 931a667 commit 167339a
Show file tree
Hide file tree
Showing 44 changed files with 532 additions and 200 deletions.
288 changes: 206 additions & 82 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,109 +1,233 @@
##==================================================================================================
## SPY - C++ Informations Broker
## Copyright 2020 Joel FALCOU
## Copyright 2020-2021 Joel FALCOU
##
## Licensed under the MIT License <http://opensource.org/licenses/MIT>.
## SPDX-License-Identifier: MIT
##==================================================================================================
version: 2.1

##==================================================================================================
## Docker images
##==================================================================================================
docker_gcc: &docker_gcc
docker:
- image: compilaction/gcc-dev:latest
environment:
COMPILER: g++
docker_clang: &docker_clang
docker:
- image: compilaction/clang-dev:latest
environment:
COMPILER: clang++
docker_aarch64: &docker_aarch64
docker:
- image: compilaction/gcc-dev:latest
environment:
RUN_COMMAND: qemu-aarch64
COMPILER: aarch64-linux-gnu-g++

commands:
run_test:
description: "Configure and run tests from a CMake Toolchain"
parameters:
desc:
type: string
tool:
type: string
proc:
type: integer
default: 8
steps:
- run:
name: << parameters.desc >>
command: |
mkdir -p build && cd build &&
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=<< parameters.tool >> &&
ninja unit -j << parameters.proc >> && ctest -j << parameters.proc >>
##==================================================================================================
## Build configurations
##==================================================================================================
config_gcc_amd64: &config_gcc_amd64
<<: *docker_gcc
config_clang_amd64: &config_clang_amd64
<<: *docker_clang
config_clang_x86: &config_clang_x86
<<: *docker_clang
config_aarch64: &config_aarch64
<<: *docker_aarch64
##==================================================================================================
## Jobs list
##==================================================================================================
jobs:
##================================================================================================
## X86/AMD64 Tests
##================================================================================================
gcc_amd64:
<<: *config_gcc_amd64
x86_clang_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run:
name: Running Basic Tests - SSE2
command: VARIANT="sse2" OPTIONS="-O3 -msse2" . .circleci/run.sh
- run:
name: Running Basic Tests - SSE4
command: VARIANT="sse4" OPTIONS="-O3 -msse4" . .circleci/run.sh
- run:
name: Running Basic Tests - AVX
command: VARIANT="avx" OPTIONS="-O3 -mavx" . .circleci/run.sh
- run:
name: Running Basic Tests - FMA3
command: VARIANT="fma" OPTIONS="-O3 -mavx -mfma" . .circleci/run.sh
- run:
name: Running Basic Tests - AVX2
command: VARIANT="avx2" OPTIONS="-O3 -mavx2" . .circleci/run.sh
- run:
name: Running Basic Tests - AVX512
command: VARIANT="avx2" OPTIONS="-O3 -mavx512f" . .circleci/run.sh
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/clang.x86.debug.cmake"

clang_amd64:
<<: *config_clang_amd64
x86_clang_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/clang.x86.release.cmake"

ppc64le_clang_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/clang.ppc64le.debug.cmake"

ppc64le_clang_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/clang.ppc64le.release.cmake"

arm_clang_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run:
name: Running Basic Tests - SSE2
command: VARIANT="sse2" OPTIONS="-O3 -msse2" . .circleci/run.sh
- run:
name: Running Basic Tests - SSE4
command: VARIANT="sse4" OPTIONS="-O3 -msse4" . .circleci/run.sh
- run:
name: Running Basic Tests - AVX
command: VARIANT="avx" OPTIONS="-O3 -mavx" . .circleci/run.sh
name: Update ARM processor model to emulate
command: |
mkdir -p build && cd build &&
echo "qemu-arm -cpu cortex-a15 \$@" >> run_arm && chmod +x run_arm &&
cd ..
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/clang.arm.debug.cmake"

arm_clang_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run:
name: Running Basic Tests - FMA3
command: VARIANT="fma" OPTIONS="-O3 -mavx -mfma" . .circleci/run.sh
name: Update ARM processor model to emulate
command: |
mkdir -p build && cd build &&
echo "qemu-arm -cpu cortex-a15 \$@" >> run_arm && chmod +x run_arm &&
cd ..
- run_test:
desc: Running Release tests
tool: "../test/toolchain/clang.arm.release.cmake"

aarch64_clang_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/clang.aarch64.debug.cmake"

aarch64_clang_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/clang.aarch64.release.cmake"

x86_gcc_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/gcc.x86.debug.cmake"

x86_gcc_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/gcc.x86.release.cmake"

ppc64_gcc_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/gcc.ppc64.debug.cmake"

ppc64_gcc_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/gcc.ppc64.release.cmake"

arm_gcc_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run:
name: Running Basic Tests - AVX2
command: VARIANT="avx2" OPTIONS="-O3 -mavx2" . .circleci/run.sh
name: Update ARM processor model to emulate
command: |
mkdir -p build && cd build &&
echo "qemu-arm -cpu cortex-a15 \$@" >> run_arm && chmod +x run_arm &&
cd ..
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/gcc.arm.debug.cmake"

arm_aarch64:
<<: *config_aarch64
arm_gcc_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run:
name: Running Basic Tests - AARCH64 NEON
command: VARIANT="aarch64" OPTIONS="-O3 -Wno-psabi" . .circleci/run.sh
name: Update ARM processor model to emulate
command: |
mkdir -p build && cd build &&
echo "qemu-arm -cpu cortex-a15 \$@" >> run_arm && chmod +x run_arm &&
cd ..
- run_test:
desc: Running Release tests
tool: "../test/toolchain/gcc.arm.release.cmake"

aarch64_gcc_debug:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Debug tests
tool: "../test/toolchain/gcc.aarch64.debug.cmake"

aarch64_gcc_release:
docker:
- image: jfalcou/compilers:latest
steps:
- checkout
- run_test:
desc: Running Release tests
tool: "../test/toolchain/gcc.aarch64.release.cmake"

workflows:
version: 2
build_and_test:
jobs:
##==============================================================================================
## All tests
##==============================================================================================
- gcc_amd64
- clang_amd64
- arm_aarch64
- x86_clang_debug
- ppc64le_clang_debug
- arm_clang_debug
- aarch64_clang_debug
- x86_gcc_debug
- ppc64_gcc_debug
- arm_gcc_debug
- aarch64_gcc_debug
- x86_clang_release:
requires:
- x86_clang_debug
- ppc64le_clang_release:
requires:
- ppc64le_clang_debug
- arm_clang_release:
requires:
- arm_clang_debug
- aarch64_clang_release:
requires:
- aarch64_clang_debug
- x86_gcc_release:
requires:
- x86_gcc_debug
- ppc64_gcc_release:
requires:
- ppc64_gcc_debug
- arm_gcc_release:
requires:
- arm_gcc_debug
- aarch64_gcc_release:
requires:
- aarch64_gcc_debug
31 changes: 0 additions & 31 deletions .circleci/run.sh

This file was deleted.

2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## -------------------------------------------------------------------------------------------------
## SPY - C++ Informations Broker
## Copyright 2020 Joel FALCOU
## Copyright 2020-2021 Joel FALCOU
##
## Licensed under the MIT License <http://opensource.org/licenses/MIT>.
## SPDX-License-Identifier: MIT
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ advertise it here.
```
The MIT License (MIT)
Copyright (c) 2018-2020 Joel FALCOU
Copyright (c) 2018-2021 Joel FALCOU
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## -------------------------------------------------------------------------------------------------
## SPY - C++ Informations Broker
## Copyright 2020 Joel FALCOU
## Copyright 2020-2021 Joel FALCOU
##
## Licensed under the MIT License <http://opensource.org/licenses/MIT>.
## SPDX-License-Identifier: MIT
Expand Down
Loading

0 comments on commit 167339a

Please sign in to comment.