echristo added a comment.

In D127812#3616603 <https://reviews.llvm.org/D127812#3616603>, @danielkiss 
wrote:

> In D127812#3602688 <https://reviews.llvm.org/D127812#3602688>, @aaron.ballman 
> wrote:
>
>> In D127812#3602645 <https://reviews.llvm.org/D127812#3602645>, @erichkeane 
>> wrote:
>>
>>> In D127812#3601476 <https://reviews.llvm.org/D127812#3601476>, @danielkiss 
>>> wrote:
>>>
>>>> Your understanding is correct. `target` attribute has two usage model. One 
>>>> is just redefine the to be used codegen options, this is used already 
>>>> widely for Arm and AArch64. The other use of the `target` attribute is the 
>>>> multi versioning and the rational for the `target_version` attribute is 
>>>> the easier distinction between the two usage mode, also not to break any 
>>>> code out there by changing the behaviour of an attribute.
>>>
>>> I don't think differentiating the uses here is a good idea.  I think it 
>>> would have been a GREAT idea about 10 years ago, but that ship has already 
>>> sailed once GCC started using it that way however.  We should be keeping 
>>> the current behavior, otherwise we're going to have a horrible mix of 
>>> target/target_version working inconsistently between platforms.
>>
>> That largely is my concern as well. The existing behavior of `target` is 
>> just that -- the existing behavior. I think deviating from that existing 
>> behavior will be confusing in practice. Adding additional attributes doesn't 
>> improve that confusion because users then have to know to decide between two 
>> very similar attributes, which means they then need to educate themselves on 
>> the differences between them. If we're going to push them towards the 
>> documentation to correctly use the attribute anyway, that's basically the 
>> same situation they're in today with the confusing dual behavior of `target`.
>
> We started with the ACLE to be sure the platforms and compilers will 
> implement the same for Arm targets so make the developers life easier with a 
> consistent behaviour on Arm platforms. Users of the attributes anyway need to 
> aware of the architecture differences. Like `-mtune` is different between 
> Arm/AArch64 and x86.

And that's been frustrating for years too and would have been nice had aarch64 
not followed it :)

That said, my desire here is source compatibility between open source compilers 
- I think that we need at least source compatibility with gcc and then we can 
go from there.



================
Comment at: llvm/lib/Target/AArch64/AArch64.td:74
 
+def FeatureFMV : SubtargetFeature<"fmv", "HasFMV", "true",
+  "Enable Function Multi Versioning support.">;
----------------
What is this for?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127812/new/

https://reviews.llvm.org/D127812

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to