Skip to content

Commit 4872e7a

Browse files
mkannwischerhanno-becker
authored andcommitted
CI: Add emulated non-AVX2 x86_64 functional tests
Add a build_kat matrix row that builds the x86_64 C backend without AVX2 (--no-auto, so the native backend self-disables) and runs it under an emulated non-AVX2 CPU (qemu -cpu Snowridge), covering both opt and no_opt. This keeps the portable build runnable on pre-AVX2 x86_64. To wire this in cleanly, exec_wrapper is now plain matrix data instead of being computed from vlen: the riscv rows carry their exec_wrapper explicitly, and per-row build flags travel via a new extra_args field. Jobs are now identified by the matrix 'name' field, with the target descriptor baked into each name. Drop the "external" exclusion since none of the jobs is hosted on the pqcp runners anymore. Signed-off-by: Matthias J. Kannwischer <matthias@zerorisc.com>
1 parent 0ba906c commit 4872e7a

1 file changed

Lines changed: 33 additions & 77 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -13,136 +13,88 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
external:
17-
- ${{ github.repository_owner != 'pq-code-package' }}
1816
target:
1917
- runner: macos-latest
20-
name: 'MacOS (aarch64)'
18+
name: 'macOS (aarch64)'
2119
arch: mac
2220
mode: native
2321
nix_shell: ci
2422
- runner: macos-15-intel
25-
name: 'MacOS (x86_64)'
23+
name: 'macOS (x86_64)'
2624
arch: mac
2725
mode: native
2826
nix_shell: ci
2927
- runner: ubuntu-24.04-arm
30-
name: 'ubuntu-latest (aarch64)'
28+
name: 'aarch64'
3129
arch: aarch64
3230
mode: native
3331
nix_shell: ci
3432
- runner: ubuntu-24.04-arm
35-
name: 'ubuntu-latest (aarch64)'
33+
name: 'x86_64, cross'
3634
arch: x86_64
3735
mode: cross-x86_64
3836
nix_shell: cross-x86_64
3937
- runner: ubuntu-24.04-arm
40-
name: 'ubuntu-latest (aarch64)'
38+
name: 'x86_64, cross, no AVX2'
39+
arch: x86_64
40+
mode: cross-x86_64
41+
nix_shell: cross-x86_64
42+
exec_wrapper: 'qemu-x86_64 -cpu Snowridge'
43+
extra_args: '--no-auto'
44+
- runner: ubuntu-24.04-arm
45+
name: 'riscv64, cross, VLEN=128'
4146
arch: riscv64
4247
mode: cross-riscv64
4348
nix_shell: cross-riscv64
4449
vlen: 128
50+
exec_wrapper: 'qemu-riscv64 -cpu rv64,v=true,vlen=128'
4551
- runner: ubuntu-24.04-arm
46-
name: 'ubuntu-latest (aarch64)'
52+
name: 'riscv64, cross, VLEN=256'
4753
arch: riscv64
4854
mode: cross-riscv64
4955
nix_shell: cross-riscv64
5056
vlen: 256
57+
exec_wrapper: 'qemu-riscv64 -cpu rv64,v=true,vlen=256'
5158
- runner: ubuntu-24.04-arm
52-
name: 'ubuntu-latest (aarch64)'
59+
name: 'riscv64, cross, VLEN=512'
5360
arch: riscv64
5461
mode: cross-riscv64
5562
nix_shell: cross-riscv64
5663
vlen: 512
64+
exec_wrapper: 'qemu-riscv64 -cpu rv64,v=true,vlen=512'
5765
- runner: ubuntu-24.04-arm
58-
name: 'ubuntu-latest (aarch64)'
66+
name: 'riscv64, cross, VLEN=1024'
5967
arch: riscv64
6068
mode: cross-riscv64
6169
nix_shell: cross-riscv64
6270
vlen: 1024
71+
exec_wrapper: 'qemu-riscv64 -cpu rv64,v=true,vlen=1024'
6372
- runner: ubuntu-24.04-arm
64-
name: 'ubuntu-latest (aarch64)'
73+
name: 'riscv32, cross'
6574
arch: riscv32
6675
mode: cross-riscv32
6776
nix_shell: cross-riscv32
6877
- runner: ubuntu-24.04-arm
69-
name: 'ubuntu-latest (ppc64le)'
78+
name: 'ppc64le, cross'
7079
arch: ppc64le
7180
mode: cross-ppc64le
7281
nix_shell: cross-ppc64le
7382
- runner: ubuntu-latest
74-
name: 'ubuntu-latest (x86_64)'
83+
name: 'x86_64'
7584
arch: x86_64
7685
mode: native
7786
nix_shell: ci
7887
- runner: ubuntu-latest
79-
name: 'ubuntu-latest (x86_64)'
88+
name: 'aarch64, cross'
8089
arch: aarch64
8190
mode: cross-aarch64
8291
nix_shell: cross-aarch64
8392
- runner: ubuntu-latest
84-
name: 'ubuntu-latest (x86_64)'
93+
name: 'aarch64_be, cross'
8594
arch: aarch64_be
8695
mode: cross-aarch64_be
8796
nix_shell: cross-aarch64_be
88-
exclude:
89-
- {external: true,
90-
target: {
91-
runner: ubuntu-24.04-arm,
92-
name: 'ubuntu-latest (aarch64)',
93-
arch: aarch64,
94-
mode: native,
95-
nix_shell: ci
96-
}}
97-
- {external: true,
98-
target: {
99-
runner: ubuntu-24.04-arm,
100-
name: 'ubuntu-latest (aarch64)',
101-
arch: x86_64,
102-
mode: cross-x86_64,
103-
nix_shell: cross-x86_64
104-
}}
105-
- {external: true,
106-
target: {
107-
runner: ubuntu-24.04-arm,
108-
name: 'ubuntu-latest (aarch64)',
109-
arch: riscv32,
110-
mode: cross-riscv32,
111-
nix_shell: cross-riscv32
112-
}}
113-
- {external: true,
114-
target: {
115-
runner: ubuntu-24.04-arm,
116-
name: 'ubuntu-latest (ppc64le)',
117-
arch: ppc64le,
118-
mode: cross-ppc64le,
119-
nix_shell: cross-ppc64le
120-
}}
121-
- {external: true,
122-
target: {
123-
runner: ubuntu-latest,
124-
name: 'ubuntu-latest (x86_64)',
125-
arch: x86_64,
126-
mode: native,
127-
nix_shell: ci
128-
}}
129-
- {external: true,
130-
target: {
131-
runner: ubuntu-latest,
132-
name: 'ubuntu-latest (x86_64)',
133-
arch: aarch64,
134-
mode: cross-aarch64,
135-
nix_shell: cross-aarch64
136-
}}
137-
- {external: true,
138-
target: {
139-
runner: ubuntu-latest,
140-
name: 'ubuntu-latest (x86_64)',
141-
arch: aarch64_be,
142-
mode: cross-aarch64_be,
143-
nix_shell: cross-aarch64_be
144-
}}
145-
name: Functional tests (${{ matrix.target.arch }}${{ matrix.target.mode != 'native' && ', cross' || ''}}${{ matrix.target.vlen && format(', VLEN={0}', matrix.target.vlen) || '' }})
97+
name: Functional tests (${{ matrix.target.name }})
14698
runs-on: ${{ matrix.target.runner }}
14799
steps:
148100
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
@@ -155,7 +107,8 @@ jobs:
155107
nix-cache: ${{ matrix.target.mode == 'native' && 'false' || 'true' }}
156108
gh_token: ${{ secrets.GITHUB_TOKEN }}
157109
compile_mode: ${{ matrix.target.mode }}
158-
exec_wrapper: ${{ matrix.target.vlen && format('qemu-riscv64 -cpu rv64,v=true,vlen={0}', matrix.target.vlen) || '' }}
110+
extra_args: ${{ matrix.target.extra_args || '' }}
111+
exec_wrapper: ${{ matrix.target.exec_wrapper || '' }}
159112
opt: 'no_opt'
160113
- name: build + test (+debug+memsan+ubsan, native)
161114
uses: ./.github/actions/multi-functest
@@ -175,7 +128,8 @@ jobs:
175128
nix-cache: ${{ matrix.target.mode == 'native' && 'false' || 'true' }}
176129
gh_token: ${{ secrets.GITHUB_TOKEN }}
177130
compile_mode: ${{ matrix.target.mode }}
178-
exec_wrapper: ${{ matrix.target.vlen && format('qemu-riscv64 -cpu rv64,v=true,vlen={0}', matrix.target.vlen) || '' }}
131+
extra_args: ${{ matrix.target.extra_args || '' }}
132+
exec_wrapper: ${{ matrix.target.exec_wrapper || '' }}
179133
opt: 'opt'
180134
- name: build + test (cross, opt, +debug)
181135
uses: ./.github/actions/multi-functest
@@ -186,7 +140,8 @@ jobs:
186140
nix-cache: ${{ matrix.target.mode == 'native' && 'false' || 'true' }}
187141
gh_token: ${{ secrets.GITHUB_TOKEN }}
188142
compile_mode: ${{ matrix.target.mode }}
189-
exec_wrapper: ${{ matrix.target.vlen && format('qemu-riscv64 -cpu rv64,v=true,vlen={0}', matrix.target.vlen) || '' }}
143+
extra_args: ${{ matrix.target.extra_args || '' }}
144+
exec_wrapper: ${{ matrix.target.exec_wrapper || '' }}
190145
cflags: "-DMLKEM_DEBUG"
191146
opt: 'opt'
192147
- name: build + test (cross, opt, C90)
@@ -197,7 +152,8 @@ jobs:
197152
nix-cache: 'true'
198153
gh_token: ${{ secrets.GITHUB_TOKEN }}
199154
compile_mode: ${{ matrix.target.mode }}
200-
exec_wrapper: ${{ matrix.target.vlen && format('qemu-riscv64 -cpu rv64,v=true,vlen={0}', matrix.target.vlen) || '' }}
155+
extra_args: ${{ matrix.target.extra_args || '' }}
156+
exec_wrapper: ${{ matrix.target.exec_wrapper || '' }}
201157
cflags: "-std=c90"
202158
opt: 'opt'
203159
ppc64le_tests:

0 commit comments

Comments
 (0)