[clang] [llvm] Finish deleting the le32/le64 targets (PR #98497)

Andrew Adams via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 15 15:42:49 PDT 2024


abadams wrote:

Our actual need is for a stable and user-friendly way to write fragments of mostly-target-agnostic llvm IR.

We concat these with other fragments and give it an actual target triple later. This lets us assemble a target-specific Halide runtime dynamically by mixing and matching some number of these fragments. Compiling these fragments for all possible target triples we support instead of a generic one would multiply our code size and compile time by the (large) number of possible target triples we can emit. Not using fragments at all and compiling a runtime in a more conventional way would be a combinatorial amount of code, because there are a lot of combinations. Writing generic .ll directly is possible, and we do a little of that for very low-level things, but writing in C++ and compiling via clang to le64/32 is more stable and much more pleasant due to the abstractions that C++ provides. We just have to be careful to not do things like have structs that would have different layouts on different platforms. 

If there's a better way to do all this, let us know. Does no other project have a need for "generic" llvm IR without any target-specific annotations on it yet?

https://github.com/llvm/llvm-project/pull/98497


More information about the cfe-commits mailing list