Hello all,
The rich history of binary distribution formats based on LLVM [0][1][2][3][4] has proven LLVM’s viability as a launchpad for stable platforms. However, issues with compilation time and compiler size have suggested that the translator must do too much, i.e. LLVM IR isn’t a low-level enough virtual machine. So we introduce DAGIR (“dagger”), a new portable close to the metal format, designed to unlock the potential of any architecture for the digital world. DAGIR is a stable binary format derived from LLVM’s SelectionDAG virtual machine, a proven platform for optimization and selection of machine architectures. Together with a new linker (“celestia”) and the well-known STABS (“stabs”) debugging format, this is a platform with a bright future and a host of possibilities for stable, portable software that will power a sea of nodes of the coming internet of virtual things. We look forward to working with the community in supporting this exciting new development in pervasive portable performance.

[0] http://developer.android.com/guide/topics/renderscript/compute.html
[1] https://developer.chrome.com/native-client/nacl-and-pnacl
[2] https://www.khronos.org/spir
[3] http://www.hsafoundation.com/hsa-developer-tools/
[4] https://developer.apple.com/library/watchos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW2

Hi Derek,

I don’t understand your message. Is this an announcement or a proposal? If it is an announcement, is the software available somewhere?

The SelectionDAG has various phases; on which phase are you basing your DAGIR? Is this pre-legalization, is it type legalized, operation legalized, etc? Our current SDAG-based isel is indeed expensive, but I’m not under the impression that the SDAGBuilder process is a large contributor. Rather, it is the rest of the legalization and selection process that is expensive. However, if you base your distribution IR on a post-legalization SDAG to avoid that expense, then I don’t understand why that will be particularly portable.

As an optimizer IR, the SelectionDAG, being basic-block local, has unfortunate limitations, and the community is working on a replacement (GlobalISel). The basic set of operations probably won’t change, but if you’re closely tied to the current SDAG infrastructure, you’ll need a migration plan.


Hi Derek,

just a quick question:

So we introduce DAGIR ("dagger"),

Who is "we"?
Google? A specific group within Google? Somebody else?
What is your roadmap? Is it sponsored, or a volunteer effort?

These questions have a lot of overlap, so feel free to post a summary answer.


I think there are a lot of people on this list who are not familiar with April Fools Day.

If the linker were named something like Binary Linker for Active DEvelopers, or Extensible DaG Emitter (“blade” or “edge”) to go along with “dagger” and “stabs” I’d be absolutely sure what was going on.