Conversation
Picks up: - ARM64 JIT remainder fix (rd == rs2 aliasing). Surfaced here via 02_tinygo_test: TinyGo's gcd lowered to IR `r3 = r0 % r3` produced wrong remainders after HOT_THRESHOLD JIT compilation, causing the loop to spin for minutes. - Preserve caller-set vm.* settings across invoke() (v1.7.1). - -Dpic / -Dcompiler-rt build options (v1.7.1). - Spec testsuite bumped to f9c743a (v1.7.1). - v1.7.0 contents (SIMD JIT, memory64 fix, FD-based WASI config, JIT correctness sweep) previously inaccessible due to the rem bug. Commit Gate (Mac): - run_all.sh: zig test, ReleaseSafe build, cljw test (83 ns), e2e wasm, deps.edn e2e — all PASS - Binary 4.76 MB (≤ 5 MB), startup 4.5 ms (≤ 6 ms), RSS 7.65 MB (≤ 10 MB) - wasm_bench.sh --quick: gcd 66.2 ms (was hanging on v1.7.0/v1.7.1)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
Regression context
Investigated at the zwasm side: the prior fix for rem aliasing (zwasm v1.7.1) covered only `rd == rs1`. The register allocator can also assign the destination to the same physical register as the divisor; in that case UDIV clobbered the divisor before MSUB could use it. zwasm v1.7.2 now preserves whichever operand the destination aliases and adds a regression test.