[llvm-dev] The Trouble with Triples

Renato Golin via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 16 03:15:04 PDT 2015


On 15 September 2015 at 21:58, Jim Grosbach <grosbach at apple.com> wrote:
> That’s not quite accurate. It’s not A9+HDIV+VFP. It uses the A9 scheduling model, yes, but has its own completely distinct list of sub target features and such:

Well, this is the target description in the TableGen files, and not
exactly what I was talking about. when available, A9 has VFP3, while
Krait has VFP4.

Which brings the other side of the discussion, around the
TargetParser, that the information in Clang is completely disconnected
from the TableGen descriptions, but it's not relevant to the
discussion.


> Having the triple, or anything else outside this level of implementation details, refer to krait in terms of cortex-a9 is a problem.

The Krait case is special, because GAS doesn't support it, so we have
to use A9 + target-features or compilation breaks when using GAS.
We're trying to get it in GAS, but it could take a while. When it
does, we change it.

But the ARM world is more complicated than that. Cores come in so many
variations that it would be impossible to give a name to all of them,
or more importantly, it would bloat our target descriptions to an
unmanageable point. Having a way to access the target features at that
level via a high-level target description is crucial to keep all that
mess to a minimum, while still having a complete and sane
implementation.

Bottom line is, we can't create a name for each CPU+Arch+Features
variations out there because of technical (bloat in LLVM, maintenance
nightmare) and political (interaction with other tools and LLVM based
products).

cheers,
--renato


More information about the llvm-dev mailing list