Update spec test repo (#4974)
* Update spec test repo Our submodule was accidentally reverted to an older commit as part of #4271 and while it could be updated to as it was before I went ahead and updated it to `main`. * Update ignore directives and test multi-memory * Update riscv ignores
This commit is contained in:
38
build.rs
38
build.rs
@@ -38,6 +38,11 @@ fn main() -> anyhow::Result<()> {
|
|||||||
// out.
|
// out.
|
||||||
if spec_tests > 0 {
|
if spec_tests > 0 {
|
||||||
test_directory_module(out, "tests/spec_testsuite/proposals/memory64", strategy)?;
|
test_directory_module(out, "tests/spec_testsuite/proposals/memory64", strategy)?;
|
||||||
|
test_directory_module(
|
||||||
|
out,
|
||||||
|
"tests/spec_testsuite/proposals/multi-memory",
|
||||||
|
strategy,
|
||||||
|
)?;
|
||||||
} else {
|
} else {
|
||||||
println!(
|
println!(
|
||||||
"cargo:warning=The spec testsuite is disabled. To enable, run `git submodule \
|
"cargo:warning=The spec testsuite is disabled. To enable, run `git submodule \
|
||||||
@@ -167,26 +172,19 @@ fn write_testsuite_tests(
|
|||||||
|
|
||||||
/// Ignore tests that aren't supported yet.
|
/// Ignore tests that aren't supported yet.
|
||||||
fn ignore(testsuite: &str, testname: &str, strategy: &str) -> bool {
|
fn ignore(testsuite: &str, testname: &str, strategy: &str) -> bool {
|
||||||
match strategy {
|
assert_eq!(strategy, "Cranelift");
|
||||||
"Cranelift" => match (testsuite, testname) {
|
match env::var("CARGO_CFG_TARGET_ARCH").unwrap().as_str() {
|
||||||
|
"s390x" => {
|
||||||
// FIXME: These tests fail under qemu due to a qemu bug.
|
// FIXME: These tests fail under qemu due to a qemu bug.
|
||||||
(_, "simd_f32x4_pmin_pmax") if platform_is_s390x() => return true,
|
testname == "simd_f32x4_pmin_pmax" || testname == "simd_f64x2_pmin_pmax"
|
||||||
(_, "simd_f64x2_pmin_pmax") if platform_is_s390x() => return true,
|
}
|
||||||
// riscv64 backend does not yet have a fully complete SIMD backend.
|
|
||||||
("simd", _) if platform_is_riscv64() => return true,
|
// Currently the simd wasm proposal is not implemented in the riscv64
|
||||||
("memory64", "simd") if platform_is_riscv64() => return true,
|
// backend so skip all tests which could use simd.
|
||||||
_ => {}
|
"riscv64" => {
|
||||||
},
|
testsuite == "simd" || testname.contains("simd") || testname.contains("memory_multi")
|
||||||
_ => panic!("unrecognized strategy"),
|
}
|
||||||
|
|
||||||
|
_ => false,
|
||||||
}
|
}
|
||||||
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
fn platform_is_s390x() -> bool {
|
|
||||||
env::var("CARGO_CFG_TARGET_ARCH").unwrap() == "s390x"
|
|
||||||
}
|
|
||||||
|
|
||||||
fn platform_is_riscv64() -> bool {
|
|
||||||
env::var("CARGO_CFG_TARGET_ARCH").unwrap() == "riscv64"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -476,9 +476,6 @@ impl<T> WastContext<T> {
|
|||||||
|
|
||||||
fn is_matching_assert_invalid_error_message(expected: &str, actual: &str) -> bool {
|
fn is_matching_assert_invalid_error_message(expected: &str, actual: &str) -> bool {
|
||||||
actual.contains(expected)
|
actual.contains(expected)
|
||||||
// `elem.wast` and `proposals/bulk-memory-operations/elem.wast` disagree
|
|
||||||
// on the expected error message for the same error.
|
|
||||||
|| (expected.contains("out of bounds") && actual.contains("does not fit"))
|
|
||||||
// slight difference in error messages
|
// slight difference in error messages
|
||||||
|| (expected.contains("unknown elem segment") && actual.contains("unknown element segment"))
|
|| (expected.contains("unknown elem segment") && actual.contains("unknown element segment"))
|
||||||
// The same test here is asserted to have one error message in
|
// The same test here is asserted to have one error message in
|
||||||
@@ -486,4 +483,7 @@ fn is_matching_assert_invalid_error_message(expected: &str, actual: &str) -> boo
|
|||||||
// `memory64/memory.wast`, so we equate these two error messages to get
|
// `memory64/memory.wast`, so we equate these two error messages to get
|
||||||
// the memory64 tests to pass.
|
// the memory64 tests to pass.
|
||||||
|| (expected.contains("memory size must be at most 65536 pages") && actual.contains("invalid u32 number"))
|
|| (expected.contains("memory size must be at most 65536 pages") && actual.contains("invalid u32 number"))
|
||||||
|
// the spec test suite asserts a different error message than we print
|
||||||
|
// for this scenario
|
||||||
|
|| (expected == "unknown global" && actual.contains("global.get of locally defined global"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,14 +21,12 @@ fn run_wast(wast: &str, strategy: Strategy, pooling: bool) -> anyhow::Result<()>
|
|||||||
}
|
}
|
||||||
let wast = Path::new(wast);
|
let wast = Path::new(wast);
|
||||||
|
|
||||||
let simd = feature_found(wast, "simd");
|
|
||||||
let memory64 = feature_found(wast, "memory64");
|
let memory64 = feature_found(wast, "memory64");
|
||||||
let multi_memory = feature_found(wast, "multi-memory");
|
let multi_memory = feature_found(wast, "multi-memory");
|
||||||
let threads = feature_found(wast, "threads");
|
let threads = feature_found(wast, "threads");
|
||||||
|
|
||||||
let mut cfg = Config::new();
|
let mut cfg = Config::new();
|
||||||
cfg.wasm_simd(simd)
|
cfg.wasm_multi_memory(multi_memory)
|
||||||
.wasm_multi_memory(multi_memory)
|
|
||||||
.wasm_threads(threads)
|
.wasm_threads(threads)
|
||||||
.wasm_memory64(memory64)
|
.wasm_memory64(memory64)
|
||||||
.cranelift_debug_verifier(true);
|
.cranelift_debug_verifier(true);
|
||||||
|
|||||||
Submodule tests/spec_testsuite updated: 4fd2339b5e...4f77306bb6
Reference in New Issue
Block a user