[llvm-dev] The Trouble with Triples

Jim Grosbach via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 16 13:56:57 PDT 2015


> On Sep 16, 2015, at 3:15 AM, Renato Golin <renato.golin at linaro.org> wrote:
> 
> 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.

Why do we care about GAS? We have an assembler.

> 
> 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