<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SSA on Cedric Bail</title><link>http://bluebugs.github.io/tags/ssa/</link><description>Recent content in SSA on Cedric Bail</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 15 Apr 2026 10:03:00 -0700</lastBuildDate><atom:link href="http://bluebugs.github.io/tags/ssa/index.xml" rel="self" type="application/rss+xml"/><item><title>Loop Peeling: Where Most of the Speed Comes From</title><link>http://bluebugs.github.io/blogs/spmd-loop-peeling/</link><pubDate>Wed, 15 Apr 2026 10:03:00 -0700</pubDate><guid>http://bluebugs.github.io/blogs/spmd-loop-peeling/</guid><description>&lt;p>If you took every optimization in our SPMD-for-Go proof of concept and ranked them by benchmark impact, loop peeling would be at the top. Not pattern detection. Not contiguous access analysis. Not the decomposed index path. Peeling. It is the structural foundation that everything else is built on, and the reason our hot loops run at one memory operation per store instead of three.&lt;/p></description></item><item><title>How SPMD Lives in the Compiler: Lessons from Building It</title><link>http://bluebugs.github.io/blogs/spmd-compiler-internals/</link><pubDate>Wed, 15 Apr 2026 10:02:00 -0700</pubDate><guid>http://bluebugs.github.io/blogs/spmd-compiler-internals/</guid><description>&lt;p>We added a way to express data parallelism in idiomatic Go. Earlier discussions around this space often stalled on a simple question: how would it actually work in the compiler? A working proof of concept that compiles &lt;code>go for&lt;/code> loops to WASM SIMD128, x86 SSE, and x86 AVX2, with end-to-end tests passing and a base64 decoder reaching ~77% of simdutf C++ throughput, is a better answer than another round of speculation. The goal here is to make the implementation strategy concrete. Along the way we learned one lesson the hard way: &lt;strong>SPMD is a compiler feature that has to live at the heart of the SSA form.&lt;/strong> Everything else follows from that.&lt;/p>
&lt;p>This article is for compiler engineers. If you want to see the benchmarks and the short version, read &lt;a href="../spmd-results/">the overview&lt;/a>. If you want to write SPMD Go code, the &lt;a href="../writing-spmd-go/">practical guide&lt;/a> is for you. Here, we talk about what we built inside the compiler, what we got wrong, and what we would do differently.&lt;/p></description></item></channel></rss>