Arch-Specific SIMD in Go
Comments on “Arch-Specific SIMD in Go”
Claim-checked. Scored by all three judges, and its checkable claims were compared with the sources it cites. How far stories are checked
Go 1.27 extends its experimental simd/archsimd package, enabled with GOEXPERIMENT=simd, from amd64 to arm64 (NEON) and wasm. The API uses shared method names such as Add and distinct names where edge-case behavior differs across architectures. It also replaces As<Type> casts with zero-cost conversions. Feature checks like archsimd.X86.AVX512() guard against SIGILL and let the compiler fuse masked operations. Large structs or arrays of vectors still go to memory (#24416). SVE and further architectures are planned for later releases.
Why it ranked
No. 20 of 155 with a score of 0.67. The panel rated it highest on new information (0.94) and technical depth (0.93), lowest on audience breadth (0.51).
- AI judgeJudge 2claude-haiku-5-5
- Official Go release announcement with detailed technical design of an experimental SIMD API across architectures; well-substantiated with code examples, niche to Go and low-level developers, not in recent stories.
- AI judgeJudge 3gpt-5.6-luna
- A technically detailed Go SIMD API announcement with reproducible examples, architecture-specific optimization guidance, compiler considerations, and future plans. It is highly actionable for performance-focused Go developers, though mainly relevant to a substantial niche.
Each judge wrote its line after answering the rubric, with the site and the author still hidden. Every answer behind this is in the table under Score.
Score
0.67total under rubric v2.2
- Significance0.61
- Reader interest0.70
- Audience breadth0.51
- Practical relevance0.73
- Substantiated0.87
- Technical depth0.93
- New information0.94
- Counts against: Promotional0.07
- Counts against: Overclaim0.10
Each judge’s answer per question (0–1), their mean and spread, and what the question adds to the score (weight × mean).
| Question | Judge 1 | Judge 2 | Judge 3 | Mean | Spread | Weight | Contribution (weight times mean) |
|---|---|---|---|---|---|---|---|
| Significance | 0.59 | 0.45 | 0.78 | 0.61 | 0.33 | +0.24 | +0.145 |
| Reader interest | 0.60 | 0.60 | 0.91 | 0.70 | 0.31 | +0.26 | +0.183 |
| Audience breadth | 0.50 | 0.35 | 0.68 | 0.51 | 0.33 | +0.13 | +0.066 |
| Practical relevance | 0.72 | 0.60 | 0.86 | 0.73 | 0.26 | +0.22 | +0.160 |
| Substantiated | 0.87 | 0.80 | 0.93 | 0.87 | 0.13 | +0.05 | +0.043 |
| Technical depth | 0.99 | 0.85 | 0.96 | 0.93 | 0.14 | +0.05 | +0.047 |
| New information | 0.94 | 0.90 | 0.99 | 0.94 | 0.09 | +0.05 | +0.047 |
| Promotional | 0.07 | 0.10 | 0.04 | 0.07 | 0.06 | −0.19 | −0.013 |
| Overclaim | 0.13 | 0.10 | 0.08 | 0.10 | 0.05 | −0.11 | −0.011 |
| Sum of contributions | +0.667 | ||||||
| Claim-check penalty | 0.000 | ||||||
| Total, as published | 0.667 | ||||||
Spread is the highest minus the lowest judge answer. marks a spread above 0.40: the judges disagree, and the story is marked contested.
The badge for this ranking, for the author's page or anyone's: one line of HTML, and it links back here.
<a href="https://rubric.hrih.si/editions/2026-10-28/20/"><img src="https://rubric.hrih.si/badge/2026-10-28/20.svg" alt="Ranked #20 on Rubric, 28 Oct 2026" width="245" height="28"></a>Claim check
Claim check: 1 matches source · 7 no source given. Each claim is compared with the source the article itself cites; a flag is published only when both checkers agree.
No source givenVersion
Go 1.26 introduced an experimental amd64 SIMD API, and Go 1.27 adds support for arm64 and wasm.
The article gives no link or citation for it.
The article says “Since Go 1.26, we have supported an experimental amd64 SIMD API. Now in Go 1.27, we support two more architectures: arm64 and wasm”
The source says No source to compare with.
No source givenVersion
Go's amd64 SIMD support has the largest API surface, covering AVX, AVX2, and many AVX-512 extensions, while arm64 support currently covers NEON.
The article gives no link or citation for it.
The article says “Our amd64 support has the largest API surface, covering AVX, AVX2, and many AVX-512 extensions. Our arm64 support currently covers NEON”
The source says No source to compare with.
No source givenVersion
In Go 1.27, As<Type> reinterpretation methods from the Go 1.26 experiment are replaced by ToBits, Bits<Type> and ReshapeToUint<W>s conversions, which have zero runtime cost.
The article gives no link or citation for it.
The article says “In Go 1.27, we replace them with composable zero-cost conversions”
The source says No source to compare with.
No source givenVersion
x.IfElse(m, y) replaces Merge from Go 1.26.
The article gives no link or citation for it.
The article says “x.IfElse(m, y) (which replaces Merge from Go 1.26”
The source says No source to compare with.
No source givenCausal conclusion
On AVX-512, x.Add(y).Masked(m) or x.Add(y).IfElse(m, z) compiles into a single zero-masked or merge-masked VPADD instruction.
The article gives no link or citation for it.
The article says “on AVX-512, x.Add(y).Masked(m) or x.Add(y).IfElse(m, z) compiles into a single zero-masked or merge-masked VPADD instruction”
The source says No source to compare with.
No source givenNumber
With GaloisFieldAffineTransform and the matrix 0x8040201008040201, the bits of every byte in 64 bytes can be reversed in a single instruction.
The article gives no link or citation for it.
The article says “to reverse all 8 bits of 64 bytes at a time in a single instruction”
The source says No source to compare with.
No source givenCausal conclusion
Writing the loop bound as i < len(src)-v.Len()+1 avoids potential overflow and allows the loop body to compile with zero bounds checks.
The article gives no link or citation for it.
The article says “Writing i < len(src)-v.Len()+1 avoids that potential overflow, allowing the loop body to compile with zero bounds checks”
The source says No source to compare with.
Matches sourceCausal conclusion
Go's ABI and SSA backend currently place large composite types in memory rather than registers, a known issue tracked at #24416.
The cited source says the same thing.
The article says “Go’s ABI and SSA backend currently place large composite types in memory rather than in registers (a known issue tracked at #24416”
The source says “If a struct type has more than 4 fields (or a few other conditions), we treat that type as unSSAable. All operations on variables of that type go to the…”
Source cited by the article: go.dev/issue/24416
Also covered by
No other coverage was clustered with this story.
Elsewhere
Elsewhere: HN 3 pts, not on front page
Recorded for context only, checked 28 Oct 2026, 06:47 UTC. It played no part in the ranking.