[PATCH] D123498: [clang] Adding Platform/Architecture Specific Resource Header Installation Targets

David Spickett via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 14 02:33:18 PDT 2022


DavidSpickett added a comment.

> Sure, we can have an AArch64 specific section. I have no AArch64/arm background to comment on what the lists should look like. Could you provide a pointer on how to decide what should be AArch64 specific? Thank you!

I looked through the list and here's what goes where:

arm_acle.h - both
arm_cmse.h - Arm only (CMSE is an M profile feature)
armintr.h - Arm only (Windows intrinsics)
arm64intr.h - AArch64 only (Windows intrinsics)

arm_neon.h - both
arm_fp16.h - both

Only includes AArch64 stuff at this time but according to the docs:

  FEAT_FP16 supports:
  • Half-precision data-processing instructions for Advanced SIMD and floating-point in both
  AArch64 and AArch32 states.

arm_sve.h - AArch64 (SVE is AArch64 exclusive)
arm_bf16.h - AArch64 only

  "FEAT_BF16 supports the BFloat16, or BF16, 16-bit floating-point storage format in AArch64 state." 

arm_mve.h - Arm only (MVE is an M profile feature)
arm_cde.h - Arm only (CDE is an M profile feature)
arm_neon_sve_bridge.h - AArch64 only (SVE is AArch64 exclusive)

@momchil.velikov Please double check I got that right.

So you'd probably want to have an `arm_common`, like you have for the `core`. Arm installs `arm_common` and `arm`, AArch64 installs `arm_common` and `aarch64`.

Not sure if you'd expect the Windows intrisics files to show up in the `windows` headers. My guess is no because you'd configure with Windows and Arm, or Windows and AArch64 headers. `windows` would just be arch agnostic stuff.

This split reduces each install by 4 headers. So hardly amazing disk space wise but I think your goal is more to only have relevant files and this achieves that.

> Then again a lot of Arm systems can run 32 bit code as well so there is a situation where you might include both.

I would guess that having two install targets makes it obvious that if you want 32 bit code you need to opt into both. (though I am biased since I'm already familiar with Arm)

Also, what's the feedback mechanism for issues with these listings? Say we add a new Arm header but forget to put it on these lists, who would be the first to notice? (I admit I'm not very familiar with the process of distributions)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123498



More information about the cfe-commits mailing list