authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-08 14:52:21+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-08 14:52:21+02:00
log8d97f05662dcae88bde353224d97a2c72b93bac5
tree6d2a8850cac5dd5ad32fb35cf7365733d9a3cb9e
parent2b924667780402de0241c4d60c769cb497f45c0b
parent3a383661efd7d8b1dda4893d6ed26a046648ed6e
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

Merge branch 'riscv-ci'


8 files changed, 135 insertions(+), 39 deletions(-)

.forgejo/workflows/ci.yaml+21
...@@ -161,6 +161,27 @@ jobs:...@@ -161,6 +161,27 @@ jobs:
161 run: sh ci/powerpc64le-linux-release.sh161 run: sh ci/powerpc64le-linux-release.sh
162 timeout-minutes: 240162 timeout-minutes: 240
163163
164 riscv64-linux-debug:
165 runs-on: [self-hosted, riscv64-linux]
166 steps:
167 - name: Checkout
168 uses: https://codeberg.org/ziglang/checkout@19af6bac491e2534a4687a50ee84fa7f13258d28
169 with:
170 fetch-depth: 0
171 - name: Build and Test
172 run: sh ci/riscv64-linux-debug.sh
173 timeout-minutes: 420
174 riscv64-linux-release:
175 runs-on: [self-hosted, riscv64-linux]
176 steps:
177 - name: Checkout
178 uses: https://codeberg.org/ziglang/checkout@19af6bac491e2534a4687a50ee84fa7f13258d28
179 with:
180 fetch-depth: 0
181 - name: Build and Test
182 run: sh ci/riscv64-linux-release.sh
183 timeout-minutes: 360
184
164 s390x-linux-debug:185 s390x-linux-debug:
165 runs-on: [self-hosted, s390x-linux]186 runs-on: [self-hosted, s390x-linux]
166 steps:187 steps:
ci/aarch64-openbsd-debug.sh+3-1
...@@ -50,6 +50,8 @@ stage3-debug/bin/zig build install test docs \...@@ -50,6 +50,8 @@ stage3-debug/bin/zig build install test docs \
50 -Duse-zig-libcxx \50 -Duse-zig-libcxx \
51 -Denable-llvm \51 -Denable-llvm \
52 -Dno-lib \52 -Dno-lib \
53 -Dskip-non-native53 -Dskip-non-native \
54 -Dskip-compile-errors \
55 -Dskip-single-threaded
5456
55stage4-debug/bin/zig test ../test/behavior.zig57stage4-debug/bin/zig test ../test/behavior.zig
ci/aarch64-openbsd-release.sh+3-1
...@@ -52,7 +52,9 @@ stage3-release/bin/zig build install test docs \...@@ -52,7 +52,9 @@ stage3-release/bin/zig build install test docs \
52 -Duse-zig-libcxx \52 -Duse-zig-libcxx \
53 -Denable-llvm \53 -Denable-llvm \
54 -Dno-lib \54 -Dno-lib \
55 -Dskip-non-native55 -Dskip-non-native \
56 -Dskip-compile-errors \
57 -Dskip-single-threaded
5658
57# Ensure that the fuzzer at least compiles.59# Ensure that the fuzzer at least compiles.
58# https://codeberg.org/ziglang/zig/issues/3072860# https://codeberg.org/ziglang/zig/issues/30728
ci/riscv64-linux-debug.sh+3-1
...@@ -50,6 +50,8 @@ stage3-debug/bin/zig build install test docs \...@@ -50,6 +50,8 @@ stage3-debug/bin/zig build install test docs \
50 -Duse-zig-libcxx \50 -Duse-zig-libcxx \
51 -Denable-llvm \51 -Denable-llvm \
52 -Dno-lib \52 -Dno-lib \
53 -Dskip-non-native53 -Dskip-non-native \
54 -Dskip-compile-errors \
55 -Dskip-single-threaded
5456
55stage4-debug/bin/zig test ../test/behavior.zig57stage4-debug/bin/zig test ../test/behavior.zig
ci/riscv64-linux-release.sh+3-1
...@@ -52,7 +52,9 @@ stage3-release/bin/zig build install test docs \...@@ -52,7 +52,9 @@ stage3-release/bin/zig build install test docs \
52 -Duse-zig-libcxx \52 -Duse-zig-libcxx \
53 -Denable-llvm \53 -Denable-llvm \
54 -Dno-lib \54 -Dno-lib \
55 -Dskip-non-native55 -Dskip-non-native \
56 -Dskip-compile-errors \
57 -Dskip-single-threaded
5658
57# Ensure that the fuzzer at least compiles.59# Ensure that the fuzzer at least compiles.
58stage3-release/bin/zig build test-std --fuzz=1K -Dno-lib -Dfuzz-only -Doptimize=ReleaseSafe60stage3-release/bin/zig build test-std --fuzz=1K -Dno-lib -Dfuzz-only -Doptimize=ReleaseSafe
lib/std/crypto/hybrid_kem.zig+61
...@@ -13,6 +13,7 @@...@@ -13,6 +13,7 @@
13//! The combiner uses the C2PRI construction to derive the final shared secret13//! The combiner uses the C2PRI construction to derive the final shared secret
14//! from the component shared secrets, ciphertext, and public key.14//! from the component shared secrets, ciphertext, and public key.
1515
16const builtin = @import("builtin");
16const std = @import("std");17const std = @import("std");
17const crypto = std.crypto;18const crypto = std.crypto;
18const fmt = std.fmt;19const fmt = std.fmt;
...@@ -370,6 +371,8 @@ test "MLKEM768-X25519 basic round trip" {...@@ -370,6 +371,8 @@ test "MLKEM768-X25519 basic round trip" {
370}371}
371372
372test "MLKEM768-X25519 test vector 0" {373test "MLKEM768-X25519 test vector 0" {
374 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
375
373 var seed: [32]u8 = undefined;376 var seed: [32]u8 = undefined;
374 var expected_ek: [1216]u8 = undefined;377 var expected_ek: [1216]u8 = undefined;
375 var randomness: [64]u8 = undefined;378 var randomness: [64]u8 = undefined;
...@@ -394,6 +397,8 @@ test "MLKEM768-X25519 test vector 0" {...@@ -394,6 +397,8 @@ test "MLKEM768-X25519 test vector 0" {
394}397}
395398
396test "MLKEM768-X25519 test vector 1" {399test "MLKEM768-X25519 test vector 1" {
400 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
401
397 var seed: [32]u8 = undefined;402 var seed: [32]u8 = undefined;
398 var expected_ek: [1216]u8 = undefined;403 var expected_ek: [1216]u8 = undefined;
399 var randomness: [64]u8 = undefined;404 var randomness: [64]u8 = undefined;
...@@ -418,6 +423,8 @@ test "MLKEM768-X25519 test vector 1" {...@@ -418,6 +423,8 @@ test "MLKEM768-X25519 test vector 1" {
418}423}
419424
420test "MLKEM768-X25519 test vector 2" {425test "MLKEM768-X25519 test vector 2" {
426 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
427
421 var seed: [32]u8 = undefined;428 var seed: [32]u8 = undefined;
422 var expected_ek: [1216]u8 = undefined;429 var expected_ek: [1216]u8 = undefined;
423 var randomness: [64]u8 = undefined;430 var randomness: [64]u8 = undefined;
...@@ -442,6 +449,8 @@ test "MLKEM768-X25519 test vector 2" {...@@ -442,6 +449,8 @@ test "MLKEM768-X25519 test vector 2" {
442}449}
443450
444test "MLKEM768-X25519 test vector 3" {451test "MLKEM768-X25519 test vector 3" {
452 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
453
445 var seed: [32]u8 = undefined;454 var seed: [32]u8 = undefined;
446 var expected_ek: [1216]u8 = undefined;455 var expected_ek: [1216]u8 = undefined;
447 var randomness: [64]u8 = undefined;456 var randomness: [64]u8 = undefined;
...@@ -466,6 +475,8 @@ test "MLKEM768-X25519 test vector 3" {...@@ -466,6 +475,8 @@ test "MLKEM768-X25519 test vector 3" {
466}475}
467476
468test "MLKEM768-X25519 test vector 4" {477test "MLKEM768-X25519 test vector 4" {
478 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
479
469 var seed: [32]u8 = undefined;480 var seed: [32]u8 = undefined;
470 var expected_ek: [1216]u8 = undefined;481 var expected_ek: [1216]u8 = undefined;
471 var randomness: [64]u8 = undefined;482 var randomness: [64]u8 = undefined;
...@@ -490,6 +501,8 @@ test "MLKEM768-X25519 test vector 4" {...@@ -490,6 +501,8 @@ test "MLKEM768-X25519 test vector 4" {
490}501}
491502
492test "MLKEM768-X25519 test vector 5" {503test "MLKEM768-X25519 test vector 5" {
504 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
505
493 var seed: [32]u8 = undefined;506 var seed: [32]u8 = undefined;
494 var expected_ek: [1216]u8 = undefined;507 var expected_ek: [1216]u8 = undefined;
495 var randomness: [64]u8 = undefined;508 var randomness: [64]u8 = undefined;
...@@ -514,6 +527,8 @@ test "MLKEM768-X25519 test vector 5" {...@@ -514,6 +527,8 @@ test "MLKEM768-X25519 test vector 5" {
514}527}
515528
516test "MLKEM768-X25519 test vector 6" {529test "MLKEM768-X25519 test vector 6" {
530 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
531
517 var seed: [32]u8 = undefined;532 var seed: [32]u8 = undefined;
518 var expected_ek: [1216]u8 = undefined;533 var expected_ek: [1216]u8 = undefined;
519 var randomness: [64]u8 = undefined;534 var randomness: [64]u8 = undefined;
...@@ -538,6 +553,8 @@ test "MLKEM768-X25519 test vector 6" {...@@ -538,6 +553,8 @@ test "MLKEM768-X25519 test vector 6" {
538}553}
539554
540test "MLKEM768-X25519 test vector 7" {555test "MLKEM768-X25519 test vector 7" {
556 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
557
541 var seed: [32]u8 = undefined;558 var seed: [32]u8 = undefined;
542 var expected_ek: [1216]u8 = undefined;559 var expected_ek: [1216]u8 = undefined;
543 var randomness: [64]u8 = undefined;560 var randomness: [64]u8 = undefined;
...@@ -562,6 +579,8 @@ test "MLKEM768-X25519 test vector 7" {...@@ -562,6 +579,8 @@ test "MLKEM768-X25519 test vector 7" {
562}579}
563580
564test "MLKEM768-X25519 test vector 8" {581test "MLKEM768-X25519 test vector 8" {
582 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
583
565 var seed: [32]u8 = undefined;584 var seed: [32]u8 = undefined;
566 var expected_ek: [1216]u8 = undefined;585 var expected_ek: [1216]u8 = undefined;
567 var randomness: [64]u8 = undefined;586 var randomness: [64]u8 = undefined;
...@@ -586,6 +605,8 @@ test "MLKEM768-X25519 test vector 8" {...@@ -586,6 +605,8 @@ test "MLKEM768-X25519 test vector 8" {
586}605}
587606
588test "MLKEM768-X25519 test vector 9" {607test "MLKEM768-X25519 test vector 9" {
608 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
609
589 var seed: [32]u8 = undefined;610 var seed: [32]u8 = undefined;
590 var expected_ek: [1216]u8 = undefined;611 var expected_ek: [1216]u8 = undefined;
591 var randomness: [64]u8 = undefined;612 var randomness: [64]u8 = undefined;
...@@ -610,6 +631,8 @@ test "MLKEM768-X25519 test vector 9" {...@@ -610,6 +631,8 @@ test "MLKEM768-X25519 test vector 9" {
610}631}
611632
612test "MLKEM768-P256 test vector 0" {633test "MLKEM768-P256 test vector 0" {
634 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
635
613 var seed: [32]u8 = undefined;636 var seed: [32]u8 = undefined;
614 var expected_ek: [1249]u8 = undefined;637 var expected_ek: [1249]u8 = undefined;
615 var randomness: [160]u8 = undefined;638 var randomness: [160]u8 = undefined;
...@@ -634,6 +657,8 @@ test "MLKEM768-P256 test vector 0" {...@@ -634,6 +657,8 @@ test "MLKEM768-P256 test vector 0" {
634}657}
635658
636test "MLKEM768-P256 test vector 1" {659test "MLKEM768-P256 test vector 1" {
660 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
661
637 var seed: [32]u8 = undefined;662 var seed: [32]u8 = undefined;
638 var expected_ek: [1249]u8 = undefined;663 var expected_ek: [1249]u8 = undefined;
639 var randomness: [160]u8 = undefined;664 var randomness: [160]u8 = undefined;
...@@ -658,6 +683,8 @@ test "MLKEM768-P256 test vector 1" {...@@ -658,6 +683,8 @@ test "MLKEM768-P256 test vector 1" {
658}683}
659684
660test "MLKEM768-P256 test vector 2" {685test "MLKEM768-P256 test vector 2" {
686 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
687
661 var seed: [32]u8 = undefined;688 var seed: [32]u8 = undefined;
662 var expected_ek: [1249]u8 = undefined;689 var expected_ek: [1249]u8 = undefined;
663 var randomness: [160]u8 = undefined;690 var randomness: [160]u8 = undefined;
...@@ -682,6 +709,8 @@ test "MLKEM768-P256 test vector 2" {...@@ -682,6 +709,8 @@ test "MLKEM768-P256 test vector 2" {
682}709}
683710
684test "MLKEM768-P256 test vector 3" {711test "MLKEM768-P256 test vector 3" {
712 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
713
685 var seed: [32]u8 = undefined;714 var seed: [32]u8 = undefined;
686 var expected_ek: [1249]u8 = undefined;715 var expected_ek: [1249]u8 = undefined;
687 var randomness: [160]u8 = undefined;716 var randomness: [160]u8 = undefined;
...@@ -706,6 +735,8 @@ test "MLKEM768-P256 test vector 3" {...@@ -706,6 +735,8 @@ test "MLKEM768-P256 test vector 3" {
706}735}
707736
708test "MLKEM768-P256 test vector 4" {737test "MLKEM768-P256 test vector 4" {
738 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
739
709 var seed: [32]u8 = undefined;740 var seed: [32]u8 = undefined;
710 var expected_ek: [1249]u8 = undefined;741 var expected_ek: [1249]u8 = undefined;
711 var randomness: [160]u8 = undefined;742 var randomness: [160]u8 = undefined;
...@@ -730,6 +761,8 @@ test "MLKEM768-P256 test vector 4" {...@@ -730,6 +761,8 @@ test "MLKEM768-P256 test vector 4" {
730}761}
731762
732test "MLKEM768-P256 test vector 5" {763test "MLKEM768-P256 test vector 5" {
764 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
765
733 var seed: [32]u8 = undefined;766 var seed: [32]u8 = undefined;
734 var expected_ek: [1249]u8 = undefined;767 var expected_ek: [1249]u8 = undefined;
735 var randomness: [160]u8 = undefined;768 var randomness: [160]u8 = undefined;
...@@ -754,6 +787,8 @@ test "MLKEM768-P256 test vector 5" {...@@ -754,6 +787,8 @@ test "MLKEM768-P256 test vector 5" {
754}787}
755788
756test "MLKEM768-P256 test vector 6" {789test "MLKEM768-P256 test vector 6" {
790 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
791
757 var seed: [32]u8 = undefined;792 var seed: [32]u8 = undefined;
758 var expected_ek: [1249]u8 = undefined;793 var expected_ek: [1249]u8 = undefined;
759 var randomness: [160]u8 = undefined;794 var randomness: [160]u8 = undefined;
...@@ -778,6 +813,8 @@ test "MLKEM768-P256 test vector 6" {...@@ -778,6 +813,8 @@ test "MLKEM768-P256 test vector 6" {
778}813}
779814
780test "MLKEM768-P256 test vector 7" {815test "MLKEM768-P256 test vector 7" {
816 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
817
781 var seed: [32]u8 = undefined;818 var seed: [32]u8 = undefined;
782 var expected_ek: [1249]u8 = undefined;819 var expected_ek: [1249]u8 = undefined;
783 var randomness: [160]u8 = undefined;820 var randomness: [160]u8 = undefined;
...@@ -802,6 +839,8 @@ test "MLKEM768-P256 test vector 7" {...@@ -802,6 +839,8 @@ test "MLKEM768-P256 test vector 7" {
802}839}
803840
804test "MLKEM768-P256 test vector 8" {841test "MLKEM768-P256 test vector 8" {
842 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
843
805 var seed: [32]u8 = undefined;844 var seed: [32]u8 = undefined;
806 var expected_ek: [1249]u8 = undefined;845 var expected_ek: [1249]u8 = undefined;
807 var randomness: [160]u8 = undefined;846 var randomness: [160]u8 = undefined;
...@@ -826,6 +865,8 @@ test "MLKEM768-P256 test vector 8" {...@@ -826,6 +865,8 @@ test "MLKEM768-P256 test vector 8" {
826}865}
827866
828test "MLKEM768-P256 test vector 9" {867test "MLKEM768-P256 test vector 9" {
868 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
869
829 var seed: [32]u8 = undefined;870 var seed: [32]u8 = undefined;
830 var expected_ek: [1249]u8 = undefined;871 var expected_ek: [1249]u8 = undefined;
831 var randomness: [160]u8 = undefined;872 var randomness: [160]u8 = undefined;
...@@ -850,6 +891,8 @@ test "MLKEM768-P256 test vector 9" {...@@ -850,6 +891,8 @@ test "MLKEM768-P256 test vector 9" {
850}891}
851892
852test "MLKEM1024-P384 test vector 0" {893test "MLKEM1024-P384 test vector 0" {
894 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
895
853 var seed: [32]u8 = undefined;896 var seed: [32]u8 = undefined;
854 var expected_ek: [1665]u8 = undefined;897 var expected_ek: [1665]u8 = undefined;
855 var randomness: [80]u8 = undefined;898 var randomness: [80]u8 = undefined;
...@@ -874,6 +917,8 @@ test "MLKEM1024-P384 test vector 0" {...@@ -874,6 +917,8 @@ test "MLKEM1024-P384 test vector 0" {
874}917}
875918
876test "MLKEM1024-P384 test vector 1" {919test "MLKEM1024-P384 test vector 1" {
920 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
921
877 var seed: [32]u8 = undefined;922 var seed: [32]u8 = undefined;
878 var expected_ek: [1665]u8 = undefined;923 var expected_ek: [1665]u8 = undefined;
879 var randomness: [80]u8 = undefined;924 var randomness: [80]u8 = undefined;
...@@ -898,6 +943,8 @@ test "MLKEM1024-P384 test vector 1" {...@@ -898,6 +943,8 @@ test "MLKEM1024-P384 test vector 1" {
898}943}
899944
900test "MLKEM1024-P384 test vector 2" {945test "MLKEM1024-P384 test vector 2" {
946 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
947
901 var seed: [32]u8 = undefined;948 var seed: [32]u8 = undefined;
902 var expected_ek: [1665]u8 = undefined;949 var expected_ek: [1665]u8 = undefined;
903 var randomness: [80]u8 = undefined;950 var randomness: [80]u8 = undefined;
...@@ -922,6 +969,8 @@ test "MLKEM1024-P384 test vector 2" {...@@ -922,6 +969,8 @@ test "MLKEM1024-P384 test vector 2" {
922}969}
923970
924test "MLKEM1024-P384 test vector 3" {971test "MLKEM1024-P384 test vector 3" {
972 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
973
925 var seed: [32]u8 = undefined;974 var seed: [32]u8 = undefined;
926 var expected_ek: [1665]u8 = undefined;975 var expected_ek: [1665]u8 = undefined;
927 var randomness: [80]u8 = undefined;976 var randomness: [80]u8 = undefined;
...@@ -946,6 +995,8 @@ test "MLKEM1024-P384 test vector 3" {...@@ -946,6 +995,8 @@ test "MLKEM1024-P384 test vector 3" {
946}995}
947996
948test "MLKEM1024-P384 test vector 4" {997test "MLKEM1024-P384 test vector 4" {
998 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
999
949 var seed: [32]u8 = undefined;1000 var seed: [32]u8 = undefined;
950 var expected_ek: [1665]u8 = undefined;1001 var expected_ek: [1665]u8 = undefined;
951 var randomness: [80]u8 = undefined;1002 var randomness: [80]u8 = undefined;
...@@ -970,6 +1021,8 @@ test "MLKEM1024-P384 test vector 4" {...@@ -970,6 +1021,8 @@ test "MLKEM1024-P384 test vector 4" {
970}1021}
9711022
972test "MLKEM1024-P384 test vector 5" {1023test "MLKEM1024-P384 test vector 5" {
1024 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1025
973 var seed: [32]u8 = undefined;1026 var seed: [32]u8 = undefined;
974 var expected_ek: [1665]u8 = undefined;1027 var expected_ek: [1665]u8 = undefined;
975 var randomness: [80]u8 = undefined;1028 var randomness: [80]u8 = undefined;
...@@ -994,6 +1047,8 @@ test "MLKEM1024-P384 test vector 5" {...@@ -994,6 +1047,8 @@ test "MLKEM1024-P384 test vector 5" {
994}1047}
9951048
996test "MLKEM1024-P384 test vector 6" {1049test "MLKEM1024-P384 test vector 6" {
1050 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1051
997 var seed: [32]u8 = undefined;1052 var seed: [32]u8 = undefined;
998 var expected_ek: [1665]u8 = undefined;1053 var expected_ek: [1665]u8 = undefined;
999 var randomness: [80]u8 = undefined;1054 var randomness: [80]u8 = undefined;
...@@ -1018,6 +1073,8 @@ test "MLKEM1024-P384 test vector 6" {...@@ -1018,6 +1073,8 @@ test "MLKEM1024-P384 test vector 6" {
1018}1073}
10191074
1020test "MLKEM1024-P384 test vector 7" {1075test "MLKEM1024-P384 test vector 7" {
1076 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1077
1021 var seed: [32]u8 = undefined;1078 var seed: [32]u8 = undefined;
1022 var expected_ek: [1665]u8 = undefined;1079 var expected_ek: [1665]u8 = undefined;
1023 var randomness: [80]u8 = undefined;1080 var randomness: [80]u8 = undefined;
...@@ -1042,6 +1099,8 @@ test "MLKEM1024-P384 test vector 7" {...@@ -1042,6 +1099,8 @@ test "MLKEM1024-P384 test vector 7" {
1042}1099}
10431100
1044test "MLKEM1024-P384 test vector 8" {1101test "MLKEM1024-P384 test vector 8" {
1102 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1103
1045 var seed: [32]u8 = undefined;1104 var seed: [32]u8 = undefined;
1046 var expected_ek: [1665]u8 = undefined;1105 var expected_ek: [1665]u8 = undefined;
1047 var randomness: [80]u8 = undefined;1106 var randomness: [80]u8 = undefined;
...@@ -1066,6 +1125,8 @@ test "MLKEM1024-P384 test vector 8" {...@@ -1066,6 +1125,8 @@ test "MLKEM1024-P384 test vector 8" {
1066}1125}
10671126
1068test "MLKEM1024-P384 test vector 9" {1127test "MLKEM1024-P384 test vector 9" {
1128 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1129
1069 var seed: [32]u8 = undefined;1130 var seed: [32]u8 = undefined;
1070 var expected_ek: [1665]u8 = undefined;1131 var expected_ek: [1665]u8 = undefined;
1071 var randomness: [80]u8 = undefined;1132 var randomness: [80]u8 = undefined;
lib/std/crypto/ml_kem.zig+8
...@@ -1522,6 +1522,8 @@ test "Compression" {...@@ -1522,6 +1522,8 @@ test "Compression" {
1522}1522}
15231523
1524test "noise" {1524test "noise" {
1525 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1526
1525 var seed: [32]u8 = undefined;1527 var seed: [32]u8 = undefined;
1526 for (&seed, 0..) |*s, i| {1528 for (&seed, 0..) |*s, i| {
1527 s.* = @as(u8, @intCast(i));1529 s.* = @as(u8, @intCast(i));
...@@ -1655,14 +1657,20 @@ test "Test happy flow" {...@@ -1655,14 +1657,20 @@ test "Test happy flow" {
1655// Code to test NIST Known Answer Tests (KAT), see PQCgenKAT.c.1657// Code to test NIST Known Answer Tests (KAT), see PQCgenKAT.c.
16561658
1657test "NIST KAT test d00.Kyber512" {1659test "NIST KAT test d00.Kyber512" {
1660 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1661
1658 try testNistKat(d00.Kyber512, "e9c2bd37133fcb40772f81559f14b1f58dccd1c816701be9ba6214d43baf4547");1662 try testNistKat(d00.Kyber512, "e9c2bd37133fcb40772f81559f14b1f58dccd1c816701be9ba6214d43baf4547");
1659}1663}
16601664
1661test "NIST KAT test d00.Kyber1024" {1665test "NIST KAT test d00.Kyber1024" {
1666 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1667
1662 try testNistKat(d00.Kyber1024, "89248f2f33f7f4f7051729111f3049c409a933ec904aedadf035f30fa5646cd5");1668 try testNistKat(d00.Kyber1024, "89248f2f33f7f4f7051729111f3049c409a933ec904aedadf035f30fa5646cd5");
1663}1669}
16641670
1665test "NIST KAT test d00.Kyber768" {1671test "NIST KAT test d00.Kyber768" {
1672 if (builtin.zig_backend == .stage2_llvm and builtin.target.cpu.arch.isRiscv64()) return error.SkipZigTest; // https://codeberg.org/ziglang/zig/issues/37128
1673
1666 try testNistKat(d00.Kyber768, "a1e122cad3c24bc51622e4c242d8b8acbcd3f618fee4220400605ca8f9ea02c2");1674 try testNistKat(d00.Kyber768, "a1e122cad3c24bc51622e4c242d8b8acbcd3f618fee4220400605ca8f9ea02c2");
1667}1675}
16681676
test/tests.zig+33-35
...@@ -2323,38 +2323,38 @@ pub const debugger_matrix: []const RunnerTarget = &.{...@@ -2323,38 +2323,38 @@ pub const debugger_matrix: []const RunnerTarget = &.{
2323 },2323 },
2324};2324};
23252325
2326fn compatible32bitArch(host: *const std.Target) ?std.Target.Cpu.Arch {2326fn supportedCompatArch(host: *const std.Target, arch: std.Target.Cpu.Arch) bool {
2327 return switch (host.os.tag) {2327 return switch (host.os.tag) {
2328 .freebsd => switch (host.cpu.arch) {2328 .freebsd => switch (host.cpu.arch) {
2329 .aarch64 => .arm,2329 .aarch64 => arch == .arm,
2330 .powerpc64 => .powerpc,2330 else => false,
2331 else => null,
2332 },2331 },
2333 .illumos => switch (host.cpu.arch) {2332 .illumos => switch (host.cpu.arch) {
2334 .x86_64 => .x86,2333 .x86_64 => arch == .x86,
2335 else => null,2334 else => false,
2336 },2335 },
2337 .linux => switch (host.cpu.arch) {2336 .linux => switch (host.cpu.arch) {
2338 .aarch64 => .arm,2337 .aarch64 => arch == .arm or arch == .thumb,
2339 .aarch64_be => .armeb,2338 .aarch64_be => arch == .armeb or arch == .thumbeb,
2340 .mips64 => .mips,2339 .mips64 => arch == .mips,
2341 .mips64el => .mipsel,2340 .mips64el => arch == .mipsel,
2342 .powerpc64 => .powerpc,2341 .powerpc64 => arch == .powerpc,
2343 .sparc64 => .sparc,2342 .riscv64 => arch == .riscv32,
2344 .x86_64 => .x86,2343 .sparc64 => arch == .sparc,
2345 else => null,2344 .x86_64 => arch == .x86,
2345 else => false,
2346 },2346 },
2347 .netbsd => switch (host.cpu.arch) {2347 .netbsd => switch (host.cpu.arch) {
2348 .riscv64 => .riscv32,2348 .riscv64 => arch == .riscv32,
2349 .sparc64 => .sparc,2349 .sparc64 => arch == .sparc,
2350 .x86_64 => .x86,2350 .x86_64 => arch == .x86,
2351 else => null,2351 else => false,
2352 },2352 },
2353 .windows => switch (host.cpu.arch) {2353 .windows => switch (host.cpu.arch) {
2354 .x86_64 => .x86,2354 .x86_64 => arch == .x86,
2355 else => null,2355 else => false,
2356 },2356 },
2357 else => null,2357 else => false,
2358 };2358 };
2359}2359}
23602360
...@@ -2362,15 +2362,22 @@ pub fn isNative(actual_target: *const std.Build.ResolvedTarget, host: *const std...@@ -2362,15 +2362,22 @@ pub fn isNative(actual_target: *const std.Build.ResolvedTarget, host: *const std
2362 if (actual_target.query.isNative()) return true;2362 if (actual_target.query.isNative()) return true;
2363 const actual = &actual_target.result;2363 const actual = &actual_target.result;
23642364
2365 if (actual.cpu.arch != host.cpu.arch and2365 if (actual.cpu.arch != host.cpu.arch and !supportedCompatArch(host, actual.cpu.arch))
2366 actual.cpu.arch != compatible32bitArch(host))
2367 {
2368 return false;2366 return false;
2369 }
23702367
2371 if (actual.os.tag != host.os.tag)2368 if (actual.os.tag != host.os.tag)
2372 return false;2369 return false;
23732370
2371 // This check is really only necessary for the case where `host.cpu.arch.isAarch64()` and
2372 // `actual.cpu.arch.isArm()`. As they are wholly separate `std.Target` families with their own
2373 // feature bits, the logic below would produce complete nonsense.
2374 //
2375 // This does mean that we aren't actually checking feature compatibility between these two
2376 // families even though we should. That's not a problem currently, but in the future, we may
2377 // need to add a special code path just for this specific case...
2378 if (actual.cpu.arch.family() != host.cpu.arch.family())
2379 return true;
2380
2374 // Remove features that don't actually affect compatibility.2381 // Remove features that don't actually affect compatibility.
2375 const irrelevant: std.Target.Cpu.Feature.Set = switch (host.cpu.arch) {2382 const irrelevant: std.Target.Cpu.Feature.Set = switch (host.cpu.arch) {
2376 .x86_64 => std.Target.x86.featureSet(&.{2383 .x86_64 => std.Target.x86.featureSet(&.{
...@@ -2891,15 +2898,6 @@ fn addOneModuleTest(...@@ -2891,15 +2898,6 @@ fn addOneModuleTest(
2891 const libc_suffix = if (test_target.link_libc == true) "-libc" else "";2898 const libc_suffix = if (test_target.link_libc == true) "-libc" else "";
2892 const model_txt = target.cpu.model.name;2899 const model_txt = target.cpu.model.name;
28932900
2894 // These emulated targets need a lot more RAM for unknown reasons.
2895 const max_rss = if (mem.eql(u8, options.name, "std") and
2896 (target.cpu.arch == .hexagon or
2897 (target.cpu.arch.isRISCV() and !resolved_target.query.isNative()) or
2898 target.cpu.arch.isWasm()))
2899 options.max_rss * 2
2900 else
2901 options.max_rss;
2902
2903 const these_tests = b.addTest(.{2901 const these_tests = b.addTest(.{
2904 .root_module = b.createModule(.{2902 .root_module = b.createModule(.{
2905 .root_source_file = b.path(options.root_src),2903 .root_source_file = b.path(options.root_src),
...@@ -2911,7 +2909,7 @@ fn addOneModuleTest(...@@ -2911,7 +2909,7 @@ fn addOneModuleTest(
2911 .sanitize_thread = options.sanitize_thread,2909 .sanitize_thread = options.sanitize_thread,
2912 .single_threaded = test_target.single_threaded,2910 .single_threaded = test_target.single_threaded,
2913 }),2911 }),
2914 .max_rss = max_rss,2912 .max_rss = options.max_rss,
2915 .filters = options.test_filters,2913 .filters = options.test_filters,
2916 .use_llvm = test_target.use_llvm,2914 .use_llvm = test_target.use_llvm,
2917 .use_lld = test_target.use_lld,2915 .use_lld = test_target.use_lld,