Archibald Samuel Elliott

Language & Compiler Developer

I am a senior software developer and the software team lead at lowRISC C.I.C., working to expand and improve RISC-V backend support in LLVM, and contributing to the firmware stack in the OpenTitan project.

I have been working in Compilers and Programming Languages since 2014, exploring ways to make programs more safe and more efficient. This has included work on Solver-aided Compilation, Domain-Specific Languages, and Program Synthesis.

I received my M.S. in Computer Science and Engineering from the University of Washington in 2017, where I was a member of the PLSE Group. I received my BSc (Hons) in Computer Science from the University of St Andrews in 2015. My Publications page lists my academic publications.


I gave a guest lecture about the RISC-V ELF psABI and my work in that area to Xi Wang's Capstone Course on Operating Systems.

I have been promoted to Senior Software Engineer and Software Team Lead at lowRISC. I am looking forward to the challenges of my new role.

LLVM 10.0 has been released, including lots of improved RISC-V features.

We have released a preprint describing Fireiron, a Halide-like scheduling DSL for GPU programming that I worked on while at NVIDIA.

LLVM 9.0 has been released. This is the first version of LLVM which includes RISC-V as an official backend.

Older News

I have written about my background in compilers and why I joined lowRISC.

I have started at lowRISC, working on the LLVM RISC-V backend.

A report describing a recent collaboration on Synthesizing Number Generators for Stochastic Computing using Mixed Integer Programming is now available on

Bravo Zulu, the yacht I raced on in Seattle, until it was sold in October, placed 7th on the Top 25 sailboats of 2018 by 48° North magazine.

Paper: Our Paper, Swizzle Inventor has been accepted to ASPLOS 2019.

I sailed CYC Seattle's Puget Sound Sailing Championship aboard Bravo Zulu. We came 2nd in class. This was Bravo Zulu's last regatta with that owner and crew.

I joined Vinod Grover at NVIDIA, for an internship in Redmond.

I sailed The Swiftsure International Yacht Race on Memorial Day Weekend, aboard Bravo Zulu. We came 28th overall in the Cape Flattery Race.

Paper: Our Paper, Checked C: Making C Safe By Extension has been accepted to IEEE SecDev '18.

I sailed The Southern Straits Classic Yacht Race on Easter Weekend. I was aboard Amazing Grace, a C&C 40. We came 5th in the PHRF Long Course.

I attended POPL 2018 in Los Angeles!

Bravo Zulu, the yacht I race on, has once again placed on the Top 25 sailboats of 2017 by 48° North magazine. This time we're 12th.

I have completed my M.S. in Computer Science and Engineering at the Paul G. Allen School at the University of Washington. My Technical Report is available.

I have returned to Microsoft Research for another three-month internship on the Checked C project.

I have joined Microsoft Research to do a three-month internship on the Checked C project, working with David Tarditi.

The yacht I race on, Bravo Zulu, placed 9th on the Top 25 sailboats of 2016 by 48° North magazine.

I have started graduate school in Computer Science at the University of Washington, in Seattle.

I won the Lockheed Martin Award for Software Engineering at the Young Software Engineer of the Year Awards.

I attended ICFP 2015 in Vancouver.

I completed my BSc (Hons) in Computer Science at the University of St Andrews, in Scotland. My BSc Dissertation is available.

My Research Projects Publications →

Schedule Synthesizer

2018: I worked on how solvers and synthesis can be used to create (or assist in creating) Halide-like schedules for linear algebra applications. The requirement that the structure of these schedules be amenible to synthesis fed into the Fireiron work, a system for scheduling dense linear algebra algorithms on GPUs.

Swizzle Inventor

2018: I worked on using Program Synthesis techniques to assist programmers in designing efficient data access patterns for parallel programs.

"Swizzle Inventor: Data Movement Synthesis for GPU Kernels" Paper →

Checked C Official Site →

2017: I worked at Microsoft Research on a project to make C Safer, by adding bounds checks to memory accesses. This included design of low-cost dynamic checks as well as bounds inference algorithms.

"Checked C: Making C Safe By Extension" Paper →"Putting the Checks into Checked C" Technical Report →

Erlang meets Idris

2014–2015: My Bachelor's Dissertation project was producing an Idris to Erlang compiler, and associated libraries for producing verified concurrent programs in Idris that would use Erlang VM features.

"A Concurrency System for Idris & Erlang" Dissertation →

CRDTs: Composition and Garbage Collection

2013–2014: I worked on the Data Types team at Basho, developing novel CRDTs that were included in Riak 2.0 and later.

"Riak DT Map: a Composable, Convergent Replicated Dictionary" Workshop Paper →"CRDTs: An Update (or just a PUT)" Talk at RICON West 2013 →

skel: A Streaming Process-based Skeleton Library for Erlang

2012: I worked at the University of St Andrews on the ParaPhrase project to develop parallel skeleton library for Erlang.

“Cost-Directed Refactoring of Parallel Erlang Programs” Journal Paper →

Side Projects

What I do when I'm not typing code into computers.

Sailing My Logbook →

I have sailed most of my life, and in 2016 I got hooked on yacht racing.

Library My Library →

I read. Here are some technical books I recommend.

Quark & Byte On →

2014-2015: Henry Legg and I presented a Science and Technology news radio show, broadcasting weekly, covering recent science news and a few interviews.