[llvm-commits] RFC: Add R600/SI backend as an experimental target

Tom Stellard tstellar at gmail.com
Mon Aug 27 07:46:06 PDT 2012


Hi,

Here is an updated version of the R600/SI backend that I would like to
be considered for inclusion in the LLVM main tree as an experimental[1]
target.

Changes since the last version include:
  + Added AsmPrinter
  + Converted Tests to use AsmPrinter
  + Replaced CodeEmitters with MCCodeEmitters
  + Removed all uses of MachineOperands flags
  + Enabled the If Conversion pass on R600
  + Various clean ups and bug fixes.

For more information about the backend, here are some frequently asked
questions:

++ What is the R600/SI backend?

  The R600/SI backend is a code generator for AMD GPUs and supports
  the HD2XXX-HD7XXX GPU models.  It is currently being used by the
  Open Source graphics drivers for AMD GPUs in the Mesa[2] project as
  a compiler backend for graphics and compute shaders.

++ How will the R600/SI backend benefit LLVM?

  The R600/SI backend is a native code generator for GPUs.  There are
  very few completely Open Source compiler backends for GPUs, so
  adding this backend to LLVM will give the project a leg up over other
  compiler projects and help attract the attention of researchers and
  new developers.

++ Why do the R600/SI developers want this code in the main LLVM tree?

  The main reason for this is to reduce the maintenance burden on
  developers so they have more time to spend improving the backend and
  core LLVM code.  Supporting multiple versions of LLVM in the Mesa
  tree will require a lot of ugly ifdefs, and it will be very difficult
  to take advantage of new features in Tablegen.  Also, changes to the
  backend will require testing against at least two version of LLVM.
  Moving the backend code into the main LLVM tree will allow the
  backend to evolve with the rest of the project and remove these
  extra burdens from developers.

++ What is the planned development model for the R600/SI backend?

  If accepted into the main tree, all development on the R600/SI will be based
  on the public LLVM tree.  The backend has been Open Source from the beginning
  and there are no private internal trees.  All code developed for this backend
  is pushed to the public tree as soon as it is ready. 

Looking forward to you comments.

Thanks,
Tom Stellard

[1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-July/051929.html
[2] http://www.mesa3d.org



More information about the llvm-commits mailing list