[PATCH] D109517: [Clang][ARM][AArch64] Add support for Armv9-A, Armv9.1-A and Armv9.2-A

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 9 09:39:37 PDT 2021


SjoerdMeijer added reviewers: t.p.northover, ab.
SjoerdMeijer added a comment.

Some first comments after just looking at the plumbing for these new options. Didn't check yet the architecture extensions for the different version.



================
Comment at: clang/lib/Driver/ToolChains/Arch/AArch64.cpp:82
 
     // +sve implies +f32mm if the base architecture is v8.6A or v8.7A
     // it isn't the case in general that sve implies both f64mm and f32mm
----------------
This comment needs to be updated for v9a?


================
Comment at: clang/lib/Driver/ToolChains/Arch/AArch64.cpp:413
 
-  auto V8_6Pos = llvm::find(Features, "+v8.6a");
-  if (V8_6Pos != std::end(Features))
-    V8_6Pos = Features.insert(std::next(V8_6Pos), {"+i8mm", "+bf16"});
+  const char *Archs[] = {"+v8.6a", "+v8.7a", "+v9.1a", "+v9.2a"};
+  auto Pos = std::find_first_of(Features.begin(), Features.end(),
----------------
How about `+v9a`?


================
Comment at: clang/test/Preprocessor/aarch64-target-features.c:180
 
 // The following tests may need to be revised in the future since
 // SVE2 is currently still part of Future Architecture Technologies
----------------
Comment out of date?


================
Comment at: llvm/lib/Target/AArch64/AArch64.td:468
    FeatureSSBS, FeatureSB, FeaturePredRes, FeatureCacheDeepPersist,
-   FeatureBranchTargetId]>;
+   FeatureBranchTargetId, FeatureRME]>;
 
----------------
Is this an unrelated change? Can this be done separately?


================
Comment at: llvm/unittests/Support/TargetParserTest.cpp:495
                           ARMBuildAttrs::CPUArch::v8_A));
+  EXPECT_TRUE(
+      testARMArch("armv9-a", "generic", "v9a",
----------------
I haven't looked, but in these target parser tests, do we also not need to check the architecture descriptions?
Copied this for example from the target parser def file:

         (ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT | ARM::AEK_HWDIVARM |
          ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_CRC | ARM::AEK_RAS |
          ARM::AEK_DOTPROD)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D109517



More information about the llvm-commits mailing list