News for hackers. Stuff that matters.
Re:The state of SIMD in Rust in 2025 by Thaxll on Wednesday November 05, 2025 @06:07PM (#45829295)
Go has been using register based calling for a while now?
Re:The state of SIMD in Rust in 2025 by immibis on Wednesday November 05, 2025 @06:49PM (#45829650)
GP comment said it's not used for FFI, not that it's not used.
Re:The state of SIMD in Rust in 2025 by kbolino on Thursday November 06, 2025 @10:10AM (#45836118)
You're both stating things that are a bit beside the point.

Pure Go code uses registers to pass function arguments whenever possible. Large structs and/or numerous arguments can still spill onto the stack, though.

FFI (cgo) uses whatever the platform's calling convention requires. These conventions also usually favor registers.

Go has its own assembly language, which is neither of those two things. Go assembly technically supports two ABIs, one called "ABI0" and the other called "ABIInternal" [1]. The former passes all arguments on the stack and is stable while the latter passes some arguments through registers but is unstable and subject to change. Accordingly, people writing Go code outside of the Go toolchain almost always use ABI0, so that the code keeps working even when new versions of Go are released.

[1]: https://go.googlesource.com/go/+/refs/heads/dev.regabi/src/c...