Skip to content

Releases

v0.23.2

Choose a tag to compare

@tannevaled tannevaled released this 08 Nov 14:44
ec4d0e0

What's Changed

Full Changelog: v0.23.1...v0.23.2

v0.23.1

Choose a tag to compare

@tannevaled tannevaled released this 08 Nov 10:18
a5cac90

What's Changed

  • ci: move the Go pin from 1.27.2 to 1.27.3 by @tannevaled in #38
  • go.mod: raise the go directive from 1.27.1 to 1.27.3 by @tannevaled in #40
  • amd64: add FamilyProbe (CPUID displayed family) by @tannevaled in #42

Full Changelog: v0.23.0...v0.23.1

v0.23.0

Choose a tag to compare

@tannevaled tannevaled released this 31 Oct 20:10
0881161

What's Changed

  • ci: install qemu-user in all four asm jobs, and resolve the emulator once each by @tannevaled in #34
  • goasm-patches: record that CL 846285 was merged by @tannevaled in #36
  • loong64: add the float32 fused multiply-adds (VFMADDF, XVFMADDF) by @tannevaled in #37

Full Changelog: v0.22.0...v0.23.0

v0.22.0

Choose a tag to compare

@tannevaled tannevaled released this 26 Oct 12:38
4524bb9

Release backfilled on 2026-10-26; tag created 2026-10-25.

Commits since v0.21.0:

  • 4524bb9 gap: arm64 FMLA/FMLS/FMUL by element (.4S, .2D), watched for CL 764224 (#33)

v0.21.0

Choose a tag to compare

@tannevaled tannevaled released this 25 Oct 17:29
50ece9f

loong64: Builder.CSRRD, CSRWR and CSRXCHG (privileged CSR access, emitted as WORDs until go.dev/cl/853786 lands). internal/gap: NotMask/NotBits and Insn.Matches. #32

v0.20.0

Choose a tag to compare

@tannevaled tannevaled released this 18 Oct 21:02
3e02738

fft/amd64: radix-32 builders with fused multiply-adds, for go-fft's opt-in FMA plans (#30).

  • SplitR32: the split-layout radix-32 pass at 256 and 512 bits, the values between its two stages kept in the output's slots.
  • SplitR32InFrame: the same pass with those values in its own 2 KB (4 KB) frame, not NOSPLIT.
  • LastR32: the interleaved final radix-32 pass, two blocks per YMM or four per ZMM register.
  • Consts.R32 and SplitConsts.R32 locate their constants rows; every existing offset, and so every file go-fft already generates, is unchanged.

All three build FMA kernels only (Kernels.FMA) and are bit-identical to go-fft's bfly32FMA Go pass, which go-fft's tests check on Zen 3 and Cascade Lake.

v0.19.0

Choose a tag to compare

@tannevaled tannevaled released this 26 Oct 12:38
10d50a0

Release backfilled on 2026-10-26; tag created 2026-10-18.

Commits since v0.18.0:

  • 10d50a0 gap/s390x: the vector float32 family (vfasb ... wfsqsb), 6-byte entries (#29)

v0.18.0

Choose a tag to compare

@tannevaled tannevaled released this 26 Oct 12:38
0d31ce8

Release backfilled on 2026-10-26; tag created 2026-10-18.

Commits since v0.17.0:

  • 0d31ce8 gap/ppc64: the VSX single-precision family (xvaddsp ... xvsqrtsp) (#27)

v0.17.0

Choose a tag to compare

@tannevaled tannevaled released this 18 Oct 13:51
8b51948

FFT kernel builders (#28)

go-fft's SIMD kernel generators now live here, one package per architecture:

  • fft/amd64:

    • Stockham passes of radix 2, 3, 4, 5, 8, 9, 10, 12, 15, 16 and 20 (AVX2), and radix 2, 4 and 8 at 512 bits;
    • final, batched, strided and run-writing passes;
    • the split layouts at 256 and 512 bits;
    • float32 passes;
    • the real-FFT untangle and retangle;
    • SSE2 and AVX2 complex products;
    • the two- and three-pass stack-frame trampolines and their address table.

    Kernels.FMA builds the fused twins: the twiddle product, radix 8's √2/2, and the radix-9 and -16 internal twiddles.

  • fft/arm64:

    • NEON passes of radix 2, 3, 4, 5 and 8 in float64 and float32: pass, final pass, batched pass, block-split layout;
    • the untangle and retangle;
    • the complex product.
  • fft/riscv64 and fft/s390x: the RVV and vector-facility complex products.

Each builder appends one TEXT block to an emit.File. The caller supplies:

  • the symbol;
  • the constants-table offsets (Consts, SplitConsts);
  • on amd64, FMA.

The arguments, registers and frame are the kernel's own, and are documented on each builder.

Verification:

  • Every file go-fft generates is pinned, by SHA-256, to the bytes go-fft commits. That covers go-fft main's 21 .s files and the 3 FMA files of its Round 41 branch.
  • Golden files pin one or two kernels of every builder.
  • Every kernel goes through the Go assembler.
  • examples/fft/<arch> runs the complex products and a 16-point FFT on each architecture.
  • The library gate covers ./fft/... at 100%.

No change to the existing packages.

v0.16.0

Choose a tag to compare

@tannevaled tannevaled released this 05 Oct 16:23
647224a

arm64: single-precision vector float arithmetic on the .4S arrangement (#19). VFADD4S, VFSUB4S, VFMUL4S, VFMLA4S, VFMLS4S and VFNEG4S are emitted as mnemonics, which Go 1.27's assembler encodes, and checked against golden encodings. They are additive, next to the existing .2D helpers. They are used by go-fft's float32 NEON kernels.