[PATCH] D60052: Add Connex vector processor back end

Alex Susu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Mar 31 17:17:12 PDT 2019


alexsusu created this revision.
alexsusu added a project: LLVM.
Herald added subscribers: llvm-commits, jdoerfert, kristina, jfb, dexonsmith, fedor.sergeev, aheejin, mgorny, dschuff.

Started adding the Connex vector processor back end to lib/Target.

  Connex is an established, almost 30-year old, vector processor (see, for example, http://users.dcae.pub.ro/~gstefan/2ndLevel/connex.html ) .
  The back end targets more exactly the Connex-S accelerator (variant of Connex processor). The working compiler is described at https://sites.google.com/site/alexsusu/myfilecabinet/OpincaaLLVM_TR_UPB.pdf . Connex-S is a 16-bit integer wide vector processor with efficient emulation of 32-bit integer and IEEE-754 16-bit floating point. The ISA is available at https://gitlab.dcae.pub.ro/research/ConnexRelated/opincaa/blob/master/ConnexISA.pdf .
  Note that currently our back end targets only our Connex Opincaa assembler (very easy to learn and use) available at https://gitlab.dcae.pub.ro/research/ConnexRelated/opincaa/ .
  
  An interesting feature is that, in order to support retrieving from LLVM IR back to the original source (C) code we require adding a simple data structure in include/llvm/CodeGen/SelectionDAG.h (and helper methods in related files) that maps an SDValue to the LLVM IR Value object it was used to translate from:
     DenseMap<const Value*, SDValue> *crtNodeMapPtr
  
  The Connex back end is 3 years old. We published 1 paper on it: https://dl.acm.org/citation.cfm?id=3306166 . However, we are still adding features to  the back end.
  
  This patch is currently Work in Progress.


Repository:
  rL LLVM

https://reviews.llvm.org/D60052

Files:
  CMakeLists.txt
  include/llvm/ADT/Triple.h
  include/llvm/CodeGen/SelectionDAG.h
  include/llvm/CodeGen/SelectionDAGISel.h
  include/llvm/IR/Intrinsics.td
  lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
  lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  lib/Target/Connex/Connex.td
  lib/Target/Connex/ConnexInstrFormats.td
  lib/Target/Connex/ConnexInstrInfo.td
  lib/Target/Connex/ConnexInstrInfoScalar.td
  lib/Target/Connex/ConnexInstrInfoVec.td
  lib/Target/LLVMBuild.txt

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60052.193027.patch
Type: text/x-patch
Size: 74935 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190401/d1dea502/attachment.bin>


More information about the llvm-commits mailing list