|
1 | 1 | name: Windows build |
2 | 2 | on: [push, pull_request] |
3 | | -concurrency: |
4 | | - group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} |
5 | | - cancel-in-progress: true |
6 | 3 |
|
7 | 4 | jobs: |
8 | | - build-windows-x86: |
9 | | - name: 'MSVC ${{ matrix.os }}, ${{ matrix.target }} ${{ matrix.sys.set }}' |
10 | | - defaults: |
11 | | - run: |
12 | | - shell: bash {0} |
13 | | - strategy: |
14 | | - matrix: |
15 | | - os: |
16 | | - - 2022 |
17 | | - - 2025 |
18 | | - target: |
19 | | - - x86 |
20 | | - - x64 |
21 | | - sys: |
22 | | - - { set: SSE, flags: "/arch:SSE2" } |
23 | | - - { set: AVX, flags: "/arch:AVX" } |
24 | | - - { set: AVX2, flags: "/arch:AVX2" } |
25 | | - - { set: AVX512, flags: "/arch:AVX512" } |
26 | | - exclude: |
27 | | - # AVX on both platforms has a codegen error |
28 | | - # On 2019 in _mm256_rsqrt_ps, on 2022 in _mm256_blend_p* |
29 | | - - { sys: { set: AVX } } |
30 | | - # On both platforms x86 + AVX512 triggers a compiler crash |
31 | | - - { target: x86, sys: { set: AVX512 } } |
32 | | - # /arch:SSE2 is not available on x64 platforms (SSE2 is enabled by default) |
33 | | - - { target: x64, sys: { set: SSE} } |
34 | | - runs-on: windows-${{ matrix.os }} |
35 | | - steps: |
36 | | - - name: Setup compiler |
37 | | - uses: ilammy/msvc-dev-cmd@v1 |
38 | | - with: |
39 | | - arch: ${{ matrix.target }} |
40 | | - - name: Setup Ninja |
41 | | - run: | |
42 | | - python3 -m pip install --upgrade pip setuptools wheel |
43 | | - python3 -m pip install ninja |
44 | | - - name: Checkout xsimd |
45 | | - uses: actions/checkout@v6 |
46 | | - - name: Setup |
47 | | - run: cmake -B _build -DBUILD_TESTS=ON -DDOWNLOAD_DOCTEST=ON -DBUILD_BENCHMARK=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${{ matrix.sys.flags }}" -G Ninja |
48 | | - - name: Build |
49 | | - run: cmake --build _build |
50 | | - - name: Testing xsimd |
51 | | - if: ${{ !startsWith(matrix.sys.set, 'AVX512') }} |
52 | | - env: |
53 | | - # Set CPU feature test expectations |
54 | | - # Assuming the runner always has AVX2 (independent of compilation option) |
55 | | - XSIMD_TEST_CPU_ASSUME_NEON64: "0" |
56 | | - XSIMD_TEST_CPU_ASSUME_SSE4_2: "1" |
57 | | - XSIMD_TEST_CPU_ASSUME_AVX2: "1" |
58 | | - XSIMD_TEST_CPU_ASSUME_MANUFACTURER: "intel,amd" |
59 | | - run: ./_build/test/test_xsimd |
60 | | - |
61 | | - build-windows-mingw: |
62 | | - name: 'MSYS2 ${{ matrix.msystem }}' |
63 | | - runs-on: windows-2022 |
64 | | - defaults: |
65 | | - run: |
66 | | - shell: msys2 {0} |
67 | | - strategy: |
68 | | - matrix: |
69 | | - # Temporarily remove MINGW64 and UCRT64 builds because |
70 | | - # GCC 12 gives an unexpected overflow warning for __builtin_memmove |
71 | | - # see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106199 |
72 | | - msystem: [ MINGW32, CLANG64 ] |
73 | | - #msystem: [ MINGW32, MINGW64, UCRT64, CLANG32, CLANG64 ] |
74 | | - fail-fast: false |
75 | | - steps: |
76 | | - - name: Use MinGW from MSYS2 |
77 | | - uses: msys2/setup-msys2@v2 |
78 | | - with: |
79 | | - msystem: ${{ matrix.msystem }} |
80 | | - update: true |
81 | | - path-type: minimal |
82 | | - pacboy: >- |
83 | | - cc:p |
84 | | - cmake:p |
85 | | - ninja:p |
86 | | - - name: Checkout xsimd |
87 | | - uses: actions/checkout@v6 |
88 | | - - name: Configure |
89 | | - run: cmake -B _build -DBUILD_TESTS=ON -DBUILD_BENCHMARK=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release -DDOWNLOAD_DOCTEST=ON -G Ninja |
90 | | - - name: Build |
91 | | - run: cmake --build _build |
92 | | - - name: Test |
93 | | - run: ./_build/test/test_xsimd |
94 | | - |
95 | | - build-windows-clang-cl: |
96 | | - name: 'clang-cl x64 ${{ matrix.config.name }}' |
97 | | - defaults: |
98 | | - run: |
99 | | - shell: bash {0} |
100 | | - strategy: |
101 | | - matrix: |
102 | | - config: |
103 | | - - { name: "AVX2", flags: "/arch:AVX2", benchmark: "ON", examples: "ON" } |
104 | | - - { name: "/fp:fast", flags: "/fp:fast", benchmark: "OFF", examples: "OFF" } |
105 | | - runs-on: windows-2025 |
106 | | - steps: |
107 | | - - name: Setup compiler |
108 | | - uses: ilammy/msvc-dev-cmd@v1 |
109 | | - with: |
110 | | - arch: amd64 |
111 | | - - name: Check clang-cl |
112 | | - run: | |
113 | | - command -v clang-cl |
114 | | - clang-cl --version |
115 | | - - name: Setup Ninja |
116 | | - run: | |
117 | | - python3 -m pip install --upgrade pip setuptools wheel |
118 | | - python3 -m pip install ninja |
119 | | - - name: Checkout xsimd |
120 | | - uses: actions/checkout@v3 |
121 | | - - name: Setup |
122 | | - run: | |
123 | | - cmake -B _build \ |
124 | | - -DBUILD_TESTS=ON \ |
125 | | - -DDOWNLOAD_DOCTEST=ON \ |
126 | | - -DBUILD_BENCHMARK=${{ matrix.config.benchmark }} \ |
127 | | - -DBUILD_EXAMPLES=${{ matrix.config.examples }} \ |
128 | | - -DCMAKE_BUILD_TYPE=Release \ |
129 | | - -DCMAKE_C_COMPILER=clang-cl \ |
130 | | - -DCMAKE_CXX_COMPILER=clang-cl \ |
131 | | - -DCMAKE_CXX_FLAGS="${{ matrix.config.flags }} -DXSIMD_REASSOCIATIVE_MATH=1" \ |
132 | | - -G Ninja |
133 | | - - name: Build |
134 | | - run: cmake --build _build |
135 | | - - name: Testing xsimd |
136 | | - run: ./_build/test/test_xsimd |
137 | | - |
138 | 5 | build-windows-arm64: |
139 | 6 | name: 'MSVC arm64' |
140 | 7 | defaults: |
|
0 commit comments