The CS 6120 Course Blog

Bringing You Up to Speed on How Compiling WebAssembly is Faster

by Sachille Atapattu

Logical Tensor Indexing for SPMD Programming

by Edwin Peguero

Complexity Minimizer

by Katy Voor and Henry Liu

Bril JIT with On-Stack Replacement

by Gautam Mekkat, Mark Anastos, Eashan Garg, Sameer Lal

A Dependently Typed Language

by Christopher Roman

Finding Redundant Structures in Data Flow Graphs

by Oliver Richardson, Alexa VanHattum, Gregory Yauney

Composable Brili Extensions

by Daniel Weber

An Autoscheduler for Halide

by Gabriela Calinao Correa, Ryan Doenges, Rolph Recto

Software Simulation for Data Streaming in HeteroCL

by Shaojie Xiang & Yi-Hsiang Lai

Evaluating the Performance Implications of Physical Addressing

by Drew Zagieboylo

Quantum Vectorization

by Philip Bedoukian

A Simple Way to Implement a Bad High Level Synthesis Compiler

by Yi Jing, Zhijing Li, Neil Adit, Kenneth Fang, Sam Thomas

CompCert: Formally Verified C Compiler

by Samuel Thomas & Daniel Weber

Provably Correct Peephole Optimizations with Alive

by Alexa VanHattum

The Cult of Posits

by Dietrich Geisler, Edwin Peguero

Compiler Validation via Equivalence Modulo Inputs

by Rolph Recto, Gregory Yauney

Finding and Understanding Bugs in C Compilers

by Christopher Roman, Zhijing Li

The Transmeta Code Morphing Software

by Ryan Doenges

Chlorophyll: Synthesis-Aided Compiler for Low-Power Spatial Architectures

by Shaojie Xiang and Katy Voor

Bril Phase Selection and Ordering

by Horace He & Qian Huang

A Spatial Path Scheduling Algorithm for EDGE Architectures

by Yi-Hsiang Lai

MemPass

by Eashan Garg and Sameer Lal

Dynamic Edge Profiling with Optimal Counter Placement

by Katy Voor, Henry Liu

Implementing Efficient Path Profiling

by Daniel Weber

Making LLVM Address Calculation Safe(r)

by Drew Zagieboylo

LLVM Loop Autovectorization

by Gabriela Calinao Correa, Ryan Doenges, Rolph Recto

LLVM Function Inlining Pass

by Gautam Mekkat, Mark Anastos

Runtime Execution Profiling using LLVM

by Yi Jing, Zhijing Li, Neil Adit

Loop Perforation

by Oliver Richardson, Alexa VanHattum, Gregory Yauney

Register Allocation for Bril

by Hongbo Zhang, Sachille Atapattu, Wen-Ding Li

Dynamic Null Pointer Checks Using LLVM

by Christopher Roman

Partial Redundancy Elimination using Lazy Code Motion for LLVM

by Siqiu Yao

Space Efficient Conservative Garbage Collection

by Yi Jiang

Strength Reduction Pass in LLVM

by Shaojie Xiang & Yi-Hsiang Lai & Yuan Zhou

Generating traces from LLVM

by Philip Bedoukian and Sachille Atapattu

Immix: a Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance

by Siqiu Yao

A Unified Theory of Garbage Collection

by Mark Anastos, Qian Huang

Reconsidering Custom Memory Allocation

by Oliver Richardson

One VM to Rule Them All

by Sameer Lal

Loop Invariant Code Motion and Loop Reduction for Bril

by Yi Jing, Zhijing Li, Neil Adit

An Efficient Implementation of Self

by Rachit Nigam

Trace-based Just-in-Time Type Specialization for Dynamic Languages

by Philip Bedoukian

Lazy Code Motion

by Ryan Doenges

Efficient Path Profiling

by Dietrich Geisler

Superblock Scheduling for Bril

by Sam Thomas & Rachit Nigam

Loop-Level Automatic Vectorization

by Katy Voor, Henry Liu

BrilPRE: A tool for Partial Redundancy Elimination on Bril

by Siqiu Yao

SIMD Divergence Optimizations

by Philip Bedoukian

Global Value Numbering

by Alexa VanHattum, Gregory Yauney

Induction Variable Optimizations

by Daniel Weber & Drew Zagieboylo

The Loop Unswitching Optimization

by Sameer Lal

POSH: A TLS Compiler that Exploits Program Structure

by Drew Zagieboylo & Josh Acay

Profile-Guided Code Layout

by Gautam Mekkat

Sparse Conditional Constant Propagation

by Mark Anastos

Tail Call Elimination

by Christopher Roman

Threads Cannot Be Implemented as Libraries

by Neil Adit and Edwin Peguero

Out of the Loop!

by Rolph Recto, Gabriela Calinao Correa

Double-Checked Locking is Broken

by Hongbo Zhang

Compiler Optimizations for Improving Data Locality

by Horace He and Gabriela C. Correa

Efficient Instruction Scheduling for Pipelined Architectures

by Henry Liu, Wen-Ding Li

Codestitcher: Inter-procedural Basic Block Layout Optimization

by Eashan Garg and Gautam Mekkat

Probabril

by Oliver Richardson, Michael Roberts

Type-Based Alias Analysis

by Yuan Zhou

Shrimp: Verifying IRs with Rosette

by Rachit Nigam & Sam Thomas

Automatic Differentiation in Bril

by Horace He & Qian Huang

A Backend That Translates Bril into C

by Wen-Ding Li

Bril to LLVM using OCaml

by Daniel Weber

Type Inference for Bril

by Christopher Roman

bril2jb: A Tool That Translates Bril to Java Bytecode

by Siqiu Yao

Bril Debugger

by Mark Anastos

C Implementation of Bril

by Bhargava S. Manja

Exceptions in Bril

by Rolph Recto

Writing a Faster Interpreter for Bril

by Wil Thomason and Daniel Glus

Floating Points and Fixed-Length Arrays in Bril

by Dietrich Geisler

Function Calls and Property-Based Testing in Bril

by Alexa VanHattum, Gregory Yauney

Vector Instruction Support in the Bril Interpreter

by Philip Bedoukian

LLVM JIT Compiler for Bril

by Shaojie Xiang & Yi-Hsiang Lai & Yuan Zhou

Bril()

by Gautam Mekkat, Eashan Garg, and Sameer Lal

Manually Managed Memory in Bril

by Drew Zagieboylo & Ryan Doenges

Record Types!

by Katy Voor, Henry Liu

Run Bril on Raspberry Pi Natively

by Hongbo Zhang

Static Type Checking for Bril

by Yi Jing, Zhijing Li, Neil Adit

Bril Syntax Highlighting for Vim

by Edwin Peguero

Vril! Vector Bril

by Helena Caminal, Sachille Atapattu and Tuan Ta

Measuring Computer Systems is Almost Certainly Harder Than You Think

by Adrian Sampson

Welcome to CS 6120!

by Adrian Sampson