[PATCH] D151982: [AArch64] Make .arch without extra features actually take effect

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 6 01:50:43 PDT 2023

This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa499d675ae16: [AArch64] Make .arch without extra features actually take effect (authored by mstorsjo).

  rG LLVM Github Monorepo




Index: llvm/test/MC/AArch64/directive-arch.s
--- llvm/test/MC/AArch64/directive-arch.s
+++ llvm/test/MC/AArch64/directive-arch.s
@@ -8,9 +8,7 @@
 # CHECK: 	aesd	v0.16b, v2.16b
 # CHECK:        eor     v0.16b, v0.16b, v2.16b
-// PR32873: without extra features, '.arch' is currently ignored.
-// Add an unrelated feature to accept the directive.
-	.arch armv8.1-a+crypto
+	.arch armv8.1-a
         casa  w5, w7, [x20]
 # CHECK:        casa    w5, w7, [x20]
Index: llvm/test/MC/AArch64/directive-arch-negative.s
--- llvm/test/MC/AArch64/directive-arch-negative.s
+++ llvm/test/MC/AArch64/directive-arch-negative.s
@@ -36,9 +36,7 @@
 # CHECK: error: instruction requires: ras
 # CHECK-NEXT:   esb
-// PR32873: without extra features, '.arch' is currently ignored.
-// Add an unrelated feature to accept the directive.
-	.arch armv8+crc
+	.arch armv8
         casa  w5, w7, [x19]
 # CHECK: error: instruction requires: lse
Index: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
--- llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -6920,6 +6920,7 @@
   ExpandCryptoAEK(*ArchInfo, RequestedExtensions);
   FeatureBitset Features = STI.getFeatureBits();
+  setAvailableFeatures(ComputeAvailableFeatures(Features));
   for (auto Name : RequestedExtensions) {
     bool EnableFeature = true;
Index: llvm/docs/ReleaseNotes.rst
--- llvm/docs/ReleaseNotes.rst
+++ llvm/docs/ReleaseNotes.rst
@@ -95,6 +95,12 @@
 * Support for preserve_all calling convention is added.
 * Added support for missing arch extensions in the assembly directives
   ``.arch <level>+<ext>`` and ``.arch_extension``.
+* Fixed handling of ``.arch <level>`` in assembly, without using any ``+<ext>``
+  suffix. Previously this had no effect at all if no extensions were supplied.
+  Now ``.arch <level>`` can be used to enable all the extensions that are
+  included in a higher level than what is specified on the command line,
+  or for disabling unwanted extensions if setting it to a lower level.
+  This fixes `PR32873 <https://github.com/llvm/llvm-project/issues/32220>`.
 Changes to the AMDGPU Backend

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D151982.528742.patch
Type: text/x-patch
Size: 2462 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230606/edab49a7/attachment-0001.bin>

More information about the llvm-commits mailing list