All Projects → libfirm → Libfirm

libfirm / Libfirm

Licence: lgpl-2.1
graph based intermediate representation and backend for optimising compilers

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Libfirm

Serverless Layers
Serverless.js plugin that implements AWS Lambda Layers which reduces drastically lambda size, warm-up and deployment time.
Stars: ✭ 119 (-60.98%)
Mutual labels:  compiler, optimization
Sonic
🦔 Fast, lightweight & schema-less search backend. An alternative to Elasticsearch that runs on a few MBs of RAM.
Stars: ✭ 12,347 (+3948.2%)
Mutual labels:  graph, backend
One
On-device Neural Engine
Stars: ✭ 162 (-46.89%)
Mutual labels:  compiler, optimization
Tiramisu
A polyhedral compiler for expressing fast and portable data parallel algorithms
Stars: ✭ 685 (+124.59%)
Mutual labels:  compiler, optimization
Hybridizer Basic Samples
Examples of C# code compiled to GPU by hybridizer
Stars: ✭ 186 (-39.02%)
Mutual labels:  compiler, optimization
Struc2vec
This repository provides a reference implementation of struc2vec.
Stars: ✭ 291 (-4.59%)
Mutual labels:  graph
Speedy.js
Accelerate JavaScript Applications by Compiling to WebAssembly
Stars: ✭ 300 (-1.64%)
Mutual labels:  compiler
Datafun
Research on integrating datalog & lambda calculus via monotonicity types
Stars: ✭ 287 (-5.9%)
Mutual labels:  compiler
Shecc
A self-hosting and educational C compiler
Stars: ✭ 286 (-6.23%)
Mutual labels:  compiler
Varharrie.github.io
📘 Personal blog site based on github issues.
Stars: ✭ 3,343 (+996.07%)
Mutual labels:  backend
Morpheus
Morpheus brings the leading graph query language, Cypher, onto the leading distributed processing platform, Spark.
Stars: ✭ 303 (-0.66%)
Mutual labels:  graph
Memstate
In-memory event-sourced ACID-transactional distributed object graph engine for .NET Standard
Stars: ✭ 280 (-8.2%)
Mutual labels:  graph
Cli
✨ A powerful CLI for the Create Go App project. Create a new production-ready project with backend, frontend and deploy automation by running one CLI command!
Stars: ✭ 292 (-4.26%)
Mutual labels:  backend
Graph U Nets
Pytorch implementation of Graph U-Nets (ICML19)
Stars: ✭ 300 (-1.64%)
Mutual labels:  graph
Sparklinelayout
Simple and lightweight library for drawing sparklines / graphs. Support markers and gradients.
Stars: ✭ 291 (-4.59%)
Mutual labels:  graph
Enso Archive
Looking for Enso, the visual programming language? ➡️ https://github.com/enso-org/enso
Stars: ✭ 305 (+0%)
Mutual labels:  compiler
Finn
Dataflow compiler for QNN inference on FPGAs
Stars: ✭ 284 (-6.89%)
Mutual labels:  compiler
Sucrase
Super-fast alternative to Babel for when you can target modern JS runtimes
Stars: ✭ 4,436 (+1354.43%)
Mutual labels:  compiler
Exprtk
C++ Mathematical Expression Parsing And Evaluation Library
Stars: ✭ 301 (-1.31%)
Mutual labels:  compiler
Ante
The compile-time language
Stars: ✭ 295 (-3.28%)
Mutual labels:  compiler

libFirm -- A graph based SSA intermediate representation

Introduction

The Firm library implements the Firm intermediate representation (ir). You can find an old description of Firm in [TLB:99].

libFirm contains algorithms for construction of the SSA form directly from the attributed syntax tree. A set of analyses and optimization phases is provided. This version includes a complete backend for the IA32 and SPARC architecture, as well as unfinished backends for MIPS, ARM, and AMD64.

Building and Installation

Prerequisites for the build:

  • Python (2.7.x or >=3.3 are supported)
  • Perl
  • an ANSI C99 compiler (gcc, clang, icc are known to work)
  • Git

Building with make

Just type 'make' in the source directory. The results are put into a directory called "build". You can override the existing preprocessor, compiler and linker flags by creating a 'config.mak' file.

Building with cmake

libFirm has an additional cmake build system. CMake is a more complex build system than the make based one and most libFirm developers do not use it. However it can adapt the compiler and linker flags to build shared libraries for a wider range of systems, provides an installation target and is often more familiar for people preparing packages for distribution.

Repository Structure

  include/libfirm/   # public API
  ir/                # nearly all the code
  ir/adt/            # containers and other generic data types
  ir/ana/            # analysis (for optimizations)
  ir/be/             # backends (x86, sparc, amd64, etc)
  ir/common/         # utility stuff
  ir/ident/          # identifier data structure
  ir/ir/             # core data types of intermediate representation
  ir/kaps/           # PBQP solver
  ir/libcore/        # utility stuff
  ir/lower/          # lowering phases from high-level to low-level mechanisms
  ir/lpp/            # interface for external ILP solvers
  ir/obstack/        # arena memory allocator
  ir/opt/            # optimization phases
  ir/stat/           # statistics
  ir/tr/             # type representation
  ir/tv/             # target values (architecture-independent arithmetic)
  scripts/           # generator scripts, firm node specification
  unittests/         # unittests
  build/             # build system generates stuff here

Further Information and Contact

Official website: http://libfirm.org/

Contact E-Mail: [email protected]

Mailing list: https://lists.ira.uni-karlsruhe.de/mailman/listinfo/firm

Bugtracker: http://pp.ipd.kit.edu/~firm/bugs

Internet relay chat: irc://chat.freenode.net/#firm

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].