Version 13 (modified by cameron, 3 years ago) (diff)


The Parabix with LLVM Project

This project investigates the use of LLVM as a back end for Parabix technologies.


Architecture Independent IDISA Libraries

Meng Lin is looking at creating architecture independent IDISA libraries, see: source:trunk/libgen/llvm_header

Is it possible to have LLVM directly support all power-of-2 IDISA types and operations directly in the code generation system?

Complete Power-of-2 Integer/Vector Support

The CompleteInteger project involves systematic support for integers and vectors of integers in all power-of-2 configurations up to 256 bits.

In general, this project seeks to "fill in the gaps" of LLVM support, specifically as follows.

  1. Add first class support for short integer types i1, i2, i4.
  2. Add first class support for LongInteger types i128, i256.
  3. Add first class support for vectors of integers of i1, i2 and i4 types up to <256 x i1>, <128 x i2>, <64 x i4>.
  4. Add first class support for vectors of long integers <2 x i128>.


The ShuffleVector project investigates systematic support of the LLVM shufflevector operation, and optimized support in the case of various patterns for shuffle masks as compile-time constants.

SSE2 Hoisting

The SSE2 Hoisting project investigates the raising of SSE2 intrinsic operations into generic LLVM IR operations, thereby creating the possibility of executing SSE2 code on different architectures.

LLVM Reading

Information on Extending LLVM to add new intrinsics, SelectionDAG nodes, instructions and types outlines the steps necessary to start working with the compiler on new facilities.

The LLVM Target Independent Code Generator is the key document describing the inner workings of code generation for various platforms.


The I2Result demo shows a problem with i2 results.

Project Submission Requirements

Each group must submit their final project as a file archive with the following components.

  1. A five page project report outlining objectives, methods, results obtained and areas for further work.
  2. A one-page individual report from each undergraduate student outlining your individual contributions.
  3. Examples showing the LLVM IR transformations or code generation that you have implemented.
  4. The specification of the base LLVM source code version (e.g., version 3.4 or r209187 of trunk) for your work.
  5. A recursive unix patch file for your source code determined usingof the LLVM source tree and your modified LLVM tree (e.g., diff -rupN LLVMbase/ LLVMworking/ > project.patch).

Project submissions due June 24.