[PATCH] D131504: [ARM][AArch64] Dont use macros for half instrinsics in NeonEmitter

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 10 00:21:36 PDT 2022


SjoerdMeijer added a comment.

It's been a few years since I looked at this, so am writing this from memory...

But I have never understood the use of `-fallow-half-arguments-and-return`, and made this remark several times I think on Sander's SVE patches. That option, I think, is from an era before (full) FP16, used for OpenCL types if I remember well, and storage-only FP16. For AArch64, it should not be necessary at all because everything is lovely in AArch64 world: no soft FP and fp16 is always a legal type. For AArch32 that's a whole different story. There we have the different ABIs, and we have a few hacks how values are returned/passed. But again, that depends on the ABI, not on this option. This is the reason why I have never understood the usage of it.

And this comment is true, so my question is why it is okay to remove it?

  // It is not permitted to pass or return an __fp16 by value, so intrinsics
  // taking a scalar float16_t must be implemented as macros.

So I don't understand what problem this patch is solving, and more general, I wanted to see the usage of `-fallow-half-arguments-and-return` disappear, not be introduced more. But that's with the knowledge I had at the time, perhaps things have changed.


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

https://reviews.llvm.org/D131504



More information about the llvm-commits mailing list