[llvm] 431be86 - Revert "[RISCV] Support RISCV Atomics ABI attributes (#84597)"

Alex Bradbury via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 26 04:17:40 PDT 2024


Author: Alex Bradbury
Date: 2024-04-26T12:16:53+01:00
New Revision: 431be8626696da6059eee26b9a14e1dc9fc0c37f

URL: https://github.com/llvm/llvm-project/commit/431be8626696da6059eee26b9a14e1dc9fc0c37f
DIFF: https://github.com/llvm/llvm-project/commit/431be8626696da6059eee26b9a14e1dc9fc0c37f.diff

LOG: Revert "[RISCV] Support RISCV Atomics ABI attributes (#84597)"

This reverts commit 9221f3af8f832d990be986c05d964ad37e5a2356.

As reported
<https://github.com/llvm/llvm-project/pull/84597#issuecomment-2079128332>
and confirmed by me locally, adding these attributes causes current GNU
ld to segfault when processing the input. Reverted so we can discuss
the best next step.

Added: 
    

Modified: 
    lld/ELF/Arch/RISCV.cpp
    lld/test/ELF/riscv-attributes.s
    llvm/include/llvm/Support/RISCVAttributeParser.h
    llvm/include/llvm/Support/RISCVAttributes.h
    llvm/lib/Support/RISCVAttributeParser.cpp
    llvm/lib/Support/RISCVAttributes.cpp
    llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp
    llvm/test/CodeGen/RISCV/attributes.ll
    llvm/test/MC/RISCV/attribute.s
    llvm/test/MC/RISCV/invalid-attribute.s

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Arch/RISCV.cpp b/lld/ELF/Arch/RISCV.cpp
index 7b9c9c6c6c38521..20088d92bafa2f0 100644
--- a/lld/ELF/Arch/RISCV.cpp
+++ b/lld/ELF/Arch/RISCV.cpp
@@ -1084,62 +1084,10 @@ static void mergeArch(RISCVISAInfo::OrderedExtensionMap &mergedExts,
   }
 }
 
-static void mergeAtomic(DenseMap<unsigned, unsigned>::iterator it,
-                        const InputSectionBase *oldSection,
-                        const InputSectionBase *newSection, unsigned int oldTag,
-                        unsigned int newTag) {
-  using RISCVAttrs::RISCVAtomicAbiTag::AtomicABI;
-  // Same tags stay the same, and UNKNOWN is compatible with anything
-  if (oldTag == newTag || newTag == AtomicABI::UNKNOWN)
-    return;
-
-  switch (oldTag) {
-  case AtomicABI::UNKNOWN:
-    it->getSecond() = newTag;
-    return;
-  case AtomicABI::A6C:
-    switch (newTag) {
-    case AtomicABI::A6S:
-      it->getSecond() = AtomicABI::A6C;
-      return;
-    case AtomicABI::A7:
-      error(toString(oldSection) + " has atomic_abi=" + Twine(oldTag) +
-            " but " + toString(newSection) +
-            " has atomic_abi=" + Twine(newTag));
-      return;
-    };
-
-  case AtomicABI::A6S:
-    switch (newTag) {
-    case AtomicABI::A6C:
-      it->getSecond() = AtomicABI::A6C;
-      return;
-    case AtomicABI::A7:
-      it->getSecond() = AtomicABI::A7;
-      return;
-    };
-
-  case AtomicABI::A7:
-    switch (newTag) {
-    case AtomicABI::A6S:
-      it->getSecond() = AtomicABI::A7;
-      return;
-    case AtomicABI::A6C:
-      error(toString(oldSection) + " has atomic_abi=" + Twine(oldTag) +
-            " but " + toString(newSection) +
-            " has atomic_abi=" + Twine(newTag));
-      return;
-    };
-  default:
-    llvm_unreachable("unknown AtomicABI");
-  };
-}
-
 static RISCVAttributesSection *
 mergeAttributesSection(const SmallVector<InputSectionBase *, 0> &sections) {
   RISCVISAInfo::OrderedExtensionMap exts;
   const InputSectionBase *firstStackAlign = nullptr;
-  const InputSectionBase *firstAtomicAbi = nullptr;
   unsigned firstStackAlignValue = 0, xlen = 0;
   bool hasArch = false;
 
@@ -1186,17 +1134,6 @@ mergeAttributesSection(const SmallVector<InputSectionBase *, 0> &sections) {
       case RISCVAttrs::PRIV_SPEC_MINOR:
       case RISCVAttrs::PRIV_SPEC_REVISION:
         break;
-
-      case llvm::RISCVAttrs::AttrType::ATOMIC_ABI:
-        if (auto i = parser.getAttributeValue(tag.attr)) {
-          auto r = merged.intAttr.try_emplace(tag.attr, *i);
-          if (r.second) {
-            firstAtomicAbi = sec;
-          } else {
-            mergeAtomic(r.first, firstAtomicAbi, sec, r.first->getSecond(), *i);
-          }
-        }
-        continue;
       }
 
       // Fallback for deprecated priv_spec* and other unknown attributes: retain

diff  --git a/lld/test/ELF/riscv-attributes.s b/lld/test/ELF/riscv-attributes.s
index 77c2c3cb263fd17..d0ce0941269ec43 100644
--- a/lld/test/ELF/riscv-attributes.s
+++ b/lld/test/ELF/riscv-attributes.s
@@ -44,39 +44,6 @@
 # RUN: not ld.lld a.o b.o c.o 
diff _stack_align.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=STACK_ALIGN --implicit-check-not=error:
 # STACK_ALIGN: error: 
diff _stack_align.o:(.riscv.attributes) has stack_align=32 but a.o:(.riscv.attributes) has stack_align=16
 
-## merging atomic_abi values for A6C and A7 lead to an error.
-# RUN: llvm-mc -filetype=obj -triple=riscv64  atomic_abi_A6C.s -o atomic_abi_A6C.o
-# RUN: llvm-mc -filetype=obj -triple=riscv64  atomic_abi_A7.s -o atomic_abi_A7.o
-# RUN: not ld.lld atomic_abi_A6C.o atomic_abi_A7.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ATOMIC_ABI_ERROR --implicit-check-not=error:
-# ATOMIC_ABI_ERROR: error: atomic_abi_A6C.o:(.riscv.attributes) has atomic_abi=1 but atomic_abi_A7.o:(.riscv.attributes) has atomic_abi=3
-
-
-# RUN: llvm-mc -filetype=obj -triple=riscv64  atomic_abi_A6S.s -o atomic_abi_A6S.o
-# RUN: ld.lld atomic_abi_A6S.o atomic_abi_A6C.o -o atomic_abi_A6C_A6S
-# RUN: llvm-readobj -A atomic_abi_A6C_A6S | FileCheck %s --check-prefix=A6C_A6S
-
-# RUN: ld.lld atomic_abi_A6S.o atomic_abi_A7.o -o atomic_abi_A6S_A7
-# RUN: llvm-readobj -A atomic_abi_A6S_A7 | FileCheck %s --check-prefix=A6S_A7
-
-# RUN: llvm-mc -filetype=obj -triple=riscv64  atomic_abi_unknown.s -o atomic_abi_unknown.o
-# RUN: ld.lld atomic_abi_unknown.o atomic_abi_A6C.o -o atomic_abi_A6C_unknown
-# RUN: llvm-readobj -A atomic_abi_A6C_unknown | FileCheck %s --check-prefixes=UNKNOWN_A6C
-
-# RUN: ld.lld atomic_abi_unknown.o 
diff _stack_align.o -o atomic_abi_none_unknown
-# RUN: llvm-readobj -A atomic_abi_none_unknown | FileCheck %s --check-prefixes=UNKNOWN_NONE
-
-# RUN: ld.lld 
diff _stack_align.o atomic_abi_A6C.o -o atomic_abi_A6C_none
-# RUN: llvm-readobj -A atomic_abi_A6C_none | FileCheck %s --check-prefixes=NONE_A6C
-
-# RUN: ld.lld atomic_abi_unknown.o atomic_abi_A6S.o -o atomic_abi_A6S_unknown
-# RUN: llvm-readobj -A atomic_abi_A6S_unknown | FileCheck %s --check-prefix=UNKNOWN_A6S
-
-# RUN: ld.lld atomic_abi_unknown.o atomic_abi_A7.o -o atomic_abi_A7_unknown
-# RUN: llvm-readobj -A atomic_abi_A7_unknown | FileCheck %s --check-prefix=UNKNOWN_A7
-
-# RUN: ld.lld 
diff _stack_align.o atomic_abi_A7.o -o atomic_abi_A7_none
-# RUN: llvm-readobj -A atomic_abi_A7_none | FileCheck %s --check-prefix=NONE_A7
-
 ## The deprecated priv_spec is not handled as GNU ld does.
 ## Differing priv_spec attributes lead to an absent attribute.
 # RUN: llvm-mc -filetype=obj -triple=riscv64 
diff _priv_spec.s -o 
diff _priv_spec.o
@@ -319,175 +286,6 @@
 .attribute priv_spec, 3
 .attribute priv_spec_minor, 3
 
-#--- atomic_abi_unknown.s
-.attribute atomic_abi, 0
-
-#--- atomic_abi_A6C.s
-.attribute atomic_abi, 1
-
-#--- atomic_abi_A6S.s
-.attribute atomic_abi, 2
-
-#--- atomic_abi_A7.s
-.attribute atomic_abi, 3
-
-#      UNKNOWN_NONE: BuildAttributes {
-# UNKNOWN_NONE-NEXT:   FormatVersion: 0x41
-# UNKNOWN_NONE-NEXT:   Section 1 {
-# UNKNOWN_NONE-NEXT:     SectionLength: 17
-# UNKNOWN_NONE-NEXT:     Vendor: riscv
-# UNKNOWN_NONE-NEXT:     Tag: Tag_File (0x1)
-# UNKNOWN_NONE-NEXT:     Size: 7
-# UNKNOWN_NONE-NEXT:     FileAttributes {
-# UNKNOWN_NONE-NEXT:       Attribute {
-# UNKNOWN_NONE-NEXT:         Tag: 4
-# UNKNOWN_NONE-NEXT:         Value: 32
-# UNKNOWN_NONE-NEXT:         TagName: stack_align
-# UNKNOWN_NONE-NEXT:         Description: Stack alignment is 32-bytes
-# UNKNOWN_NONE-NEXT:       }
-# UNKNOWN_NONE-NEXT:     }
-# UNKNOWN_NONE-NEXT:   }
-# UNKNOWN_NONE-NEXT: }
-
-#      NONE_A6C: BuildAttributes {
-# NONE_A6C-NEXT:   FormatVersion: 0x41
-# NONE_A6C-NEXT:   Section 1 {
-# NONE_A6C-NEXT:     SectionLength: 19
-# NONE_A6C-NEXT:     Vendor: riscv
-# NONE_A6C-NEXT:     Tag: Tag_File (0x1)
-# NONE_A6C-NEXT:     Size: 9
-# NONE_A6C-NEXT:     FileAttributes {
-# NONE_A6C-NEXT:       Attribute {
-# NONE_A6C-NEXT:         Tag: 14
-# NONE_A6C-NEXT:         Value: 1
-# NONE_A6C-NEXT:         TagName: atomic_abi
-# NONE_A6C-NEXT:         Description: Atomic ABI is 1
-# NONE_A6C-NEXT:       }
-# NONE_A6C-NEXT:       Attribute {
-# NONE_A6C-NEXT:         Tag: 4
-# NONE_A6C-NEXT:         Value: 32
-# NONE_A6C-NEXT:         TagName: stack_align
-# NONE_A6C-NEXT:         Description: Stack alignment is 32-bytes
-# NONE_A6C-NEXT:       }
-# NONE_A6C-NEXT:     }
-# NONE_A6C-NEXT:   }
-# NONE_A6C-NEXT: }
-
-#      UNKNOWN_A6C: BuildAttributes {
-# UNKNOWN_A6C-NEXT:   FormatVersion: 0x41
-# UNKNOWN_A6C-NEXT:   Section 1 {
-# UNKNOWN_A6C-NEXT:     SectionLength: 17
-# UNKNOWN_A6C-NEXT:     Vendor: riscv
-# UNKNOWN_A6C-NEXT:     Tag: Tag_File (0x1)
-# UNKNOWN_A6C-NEXT:     Size: 7
-# UNKNOWN_A6C-NEXT:     FileAttributes {
-# UNKNOWN_A6C-NEXT:       Attribute {
-# UNKNOWN_A6C-NEXT:         Tag: 14
-# UNKNOWN_A6C-NEXT:         Value: 1
-# UNKNOWN_A6C-NEXT:         TagName: atomic_abi
-# UNKNOWN_A6C-NEXT:         Description: Atomic ABI is 1
-# UNKNOWN_A6C-NEXT:       }
-# UNKNOWN_A6C-NEXT:     }
-# UNKNOWN_A6C-NEXT:   }
-# UNKNOWN_A6C-NEXT: }
-
-#      UNKNOWN_A6S: BuildAttributes {
-# UNKNOWN_A6S-NEXT:   FormatVersion: 0x41
-# UNKNOWN_A6S-NEXT:   Section 1 {
-# UNKNOWN_A6S-NEXT:     SectionLength:
-# UNKNOWN_A6S-NEXT:     Vendor: riscv
-# UNKNOWN_A6S-NEXT:     Tag: Tag_File (0x1)
-# UNKNOWN_A6S-NEXT:     Size: 7
-# UNKNOWN_A6S-NEXT:     FileAttributes {
-# UNKNOWN_A6S-NEXT:       Attribute {
-# UNKNOWN_A6S-NEXT:         Tag: 14
-# UNKNOWN_A6S-NEXT:         Value: 2
-# UNKNOWN_A6S-NEXT:         TagName: atomic_abi
-# UNKNOWN_A6S-NEXT:         Description: Atomic ABI is 2
-# UNKNOWN_A6S-NEXT:       }
-# UNKNOWN_A6S-NEXT:     }
-# UNKNOWN_A6S-NEXT:   }
-# UNKNOWN_A6S-NEXT: }
-
-#      NONE_A7: BuildAttributes {
-# NONE_A7-NEXT:   FormatVersion: 0x41
-# NONE_A7-NEXT:   Section 1 {
-# NONE_A7-NEXT:     SectionLength: 19
-# NONE_A7-NEXT:     Vendor: riscv
-# NONE_A7-NEXT:     Tag: Tag_File (0x1)
-# NONE_A7-NEXT:     Size: 9
-# NONE_A7-NEXT:     FileAttributes {
-# NONE_A7-NEXT:       Attribute {
-# NONE_A7-NEXT:         Tag: 14
-# NONE_A7-NEXT:         Value: 3
-# NONE_A7-NEXT:         TagName: atomic_abi
-# NONE_A7-NEXT:         Description: Atomic ABI is 3
-# NONE_A7-NEXT:       }
-# NONE_A7-NEXT:       Attribute {
-# NONE_A7-NEXT:         Tag: 4
-# NONE_A7-NEXT:         Value: 32
-# NONE_A7-NEXT:         TagName: stack_align
-# NONE_A7-NEXT:         Description: Stack alignment is 32-bytes
-# NONE_A7-NEXT:       }
-# NONE_A7-NEXT:     }
-# NONE_A7-NEXT:   }
-# NONE_A7-NEXT: }
-
-
-#      UNKNOWN_A7: BuildAttributes {
-# UNKNOWN_A7-NEXT:   FormatVersion: 0x41
-# UNKNOWN_A7-NEXT:   Section 1 {
-# UNKNOWN_A7-NEXT:     SectionLength: 17
-# UNKNOWN_A7-NEXT:     Vendor: riscv
-# UNKNOWN_A7-NEXT:     Tag: Tag_File (0x1)
-# UNKNOWN_A7-NEXT:     Size: 7
-# UNKNOWN_A7-NEXT:     FileAttributes {
-# UNKNOWN_A7-NEXT:       Attribute {
-# UNKNOWN_A7-NEXT:         Tag: 14
-# UNKNOWN_A7-NEXT:         Value: 3
-# UNKNOWN_A7-NEXT:         TagName: atomic_abi
-# UNKNOWN_A7-NEXT:         Description: Atomic ABI is 3
-# UNKNOWN_A7-NEXT:       }
-# UNKNOWN_A7-NEXT:     }
-# UNKNOWN_A7-NEXT:   }
-# UNKNOWN_A7-NEXT: }
-
-#      A6C_A6S: BuildAttributes {
-# A6C_A6S-NEXT:   FormatVersion: 0x41
-# A6C_A6S-NEXT:   Section 1 {
-# A6C_A6S-NEXT:     SectionLength: 17
-# A6C_A6S-NEXT:     Vendor: riscv
-# A6C_A6S-NEXT:     Tag: Tag_File (0x1)
-# A6C_A6S-NEXT:     Size: 7
-# A6C_A6S-NEXT:     FileAttributes {
-# A6C_A6S-NEXT:       Attribute {
-# A6C_A6S-NEXT:         Tag: 14
-# A6C_A6S-NEXT:         Value: 1
-# A6C_A6S-NEXT:         TagName: atomic_abi
-# A6C_A6S-NEXT:         Description: Atomic ABI is 1
-# A6C_A6S-NEXT:       }
-# A6C_A6S-NEXT:     }
-# A6C_A6S-NEXT:   }
-# A6C_A6S-NEXT: }
-
-#      A6S_A7: BuildAttributes {
-# A6S_A7-NEXT:   FormatVersion: 0x41
-# A6S_A7-NEXT:   Section 1 {
-# A6S_A7-NEXT:     SectionLength: 17
-# A6S_A7-NEXT:     Vendor: riscv
-# A6S_A7-NEXT:     Tag: Tag_File (0x1)
-# A6S_A7-NEXT:     Size: 7
-# A6S_A7-NEXT:     FileAttributes {
-# A6S_A7-NEXT:       Attribute {
-# A6S_A7-NEXT:         Tag: 14
-# A6S_A7-NEXT:         Value: 3
-# A6S_A7-NEXT:         TagName: atomic_abi
-# A6S_A7-NEXT:         Description: Atomic ABI is 3
-# A6S_A7-NEXT:       }
-# A6S_A7-NEXT:     }
-# A6S_A7-NEXT:   }
-# A6S_A7-NEXT: }
-
 #--- unknown13.s
 .attribute 13, "0"
 #--- unknown13a.s

diff  --git a/llvm/include/llvm/Support/RISCVAttributeParser.h b/llvm/include/llvm/Support/RISCVAttributeParser.h
index 9f295504de959ea..305adffbe851e79 100644
--- a/llvm/include/llvm/Support/RISCVAttributeParser.h
+++ b/llvm/include/llvm/Support/RISCVAttributeParser.h
@@ -24,7 +24,6 @@ class RISCVAttributeParser : public ELFAttributeParser {
 
   Error unalignedAccess(unsigned tag);
   Error stackAlign(unsigned tag);
-  Error atomicAbi(unsigned tag);
 
 public:
   RISCVAttributeParser(ScopedPrinter *sw)

diff  --git a/llvm/include/llvm/Support/RISCVAttributes.h b/llvm/include/llvm/Support/RISCVAttributes.h
index 5def890a7273550..18f5a84d21f2500 100644
--- a/llvm/include/llvm/Support/RISCVAttributes.h
+++ b/llvm/include/llvm/Support/RISCVAttributes.h
@@ -32,21 +32,8 @@ enum AttrType : unsigned {
   PRIV_SPEC = 8,
   PRIV_SPEC_MINOR = 10,
   PRIV_SPEC_REVISION = 12,
-  ATOMIC_ABI = 14,
 };
 
-namespace RISCVAtomicAbiTag {
-enum AtomicABI : unsigned {
-  // Values for Tag_RISCV_atomic_abi
-  // Defined at
-  // https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#tag_riscv_atomic_abi-14-uleb128version
-  UNKNOWN = 0,
-  A6C = 1,
-  A6S = 2,
-  A7 = 3,
-};
-} // namespace RISCVAtomicAbiTag
-
 enum { NOT_ALLOWED = 0, ALLOWED = 1 };
 
 } // namespace RISCVAttrs

diff  --git a/llvm/lib/Support/RISCVAttributeParser.cpp b/llvm/lib/Support/RISCVAttributeParser.cpp
index 19c5a0e06903f6c..7ce4b6ab161cd38 100644
--- a/llvm/lib/Support/RISCVAttributeParser.cpp
+++ b/llvm/lib/Support/RISCVAttributeParser.cpp
@@ -36,18 +36,7 @@ const RISCVAttributeParser::DisplayHandler
         {
             RISCVAttrs::UNALIGNED_ACCESS,
             &RISCVAttributeParser::unalignedAccess,
-        },
-        {
-            RISCVAttrs::ATOMIC_ABI,
-            &RISCVAttributeParser::atomicAbi,
-        },
-};
-
-Error RISCVAttributeParser::atomicAbi(unsigned Tag) {
-  uint64_t Value = de.getULEB128(cursor);
-  printAttribute(Tag, Value, "Atomic ABI is " + utostr(Value));
-  return Error::success();
-}
+        }};
 
 Error RISCVAttributeParser::unalignedAccess(unsigned tag) {
   static const char *strings[] = {"No unaligned access", "Unaligned access"};

diff  --git a/llvm/lib/Support/RISCVAttributes.cpp b/llvm/lib/Support/RISCVAttributes.cpp
index dc70d65acba063f..9e629760d3d8428 100644
--- a/llvm/lib/Support/RISCVAttributes.cpp
+++ b/llvm/lib/Support/RISCVAttributes.cpp
@@ -18,7 +18,6 @@ static constexpr TagNameItem tagData[] = {
     {PRIV_SPEC, "Tag_priv_spec"},
     {PRIV_SPEC_MINOR, "Tag_priv_spec_minor"},
     {PRIV_SPEC_REVISION, "Tag_priv_spec_revision"},
-    {ATOMIC_ABI, "Tag_atomic_abi"},
 };
 
 constexpr TagNameMap RISCVAttributeTags{tagData};

diff  --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp
index 6f5f12cc72862d3..0f92e9ed6a64d39 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp
@@ -75,13 +75,6 @@ void RISCVTargetStreamer::emitTargetAttributes(const MCSubtargetInfo &STI,
     auto &ISAInfo = *ParseResult;
     emitTextAttribute(RISCVAttrs::ARCH, ISAInfo->toString());
   }
-
-  if (STI.hasFeature(RISCV::FeatureStdExtA)) {
-    unsigned AtomicABITag = STI.hasFeature(RISCV::FeatureTrailingSeqCstFence)
-                                ? RISCVAttrs::RISCVAtomicAbiTag::AtomicABI::A6S
-                                : RISCVAttrs::RISCVAtomicAbiTag::AtomicABI::A6C;
-    emitAttribute(RISCVAttrs::ATOMIC_ABI, AtomicABITag);
-  }
 }
 
 // This part is for ascii assembly output

diff  --git a/llvm/test/CodeGen/RISCV/attributes.ll b/llvm/test/CodeGen/RISCV/attributes.ll
index 1aff3e8b83f4010..141d5ea4182892d 100644
--- a/llvm/test/CodeGen/RISCV/attributes.ll
+++ b/llvm/test/CodeGen/RISCV/attributes.ll
@@ -129,8 +129,7 @@
 ; RUN: llc -mtriple=riscv64 -mattr=+m %s -o - | FileCheck --check-prefixes=CHECK,RV64M %s
 ; RUN: llc -mtriple=riscv64 -mattr=+zmmul %s -o - | FileCheck --check-prefixes=CHECK,RV64ZMMUL %s
 ; RUN: llc -mtriple=riscv64 -mattr=+m,+zmmul %s -o - | FileCheck --check-prefixes=CHECK,RV64MZMMUL %s
-; RUN: llc -mtriple=riscv64 -mattr=+a %s -o - | FileCheck --check-prefixes=CHECK,RV64A,A6C %s
-; RUN: llc -mtriple=riscv64 -mattr=+a,+seq-cst-trailing-fence %s -o - | FileCheck --check-prefixes=CHECK,RV64A,A6S %s
+; RUN: llc -mtriple=riscv64 -mattr=+a %s -o - | FileCheck --check-prefixes=CHECK,RV64A %s
 ; RUN: llc -mtriple=riscv64 -mattr=+f %s -o - | FileCheck --check-prefixes=CHECK,RV64F %s
 ; RUN: llc -mtriple=riscv64 -mattr=+d %s -o - | FileCheck --check-prefixes=CHECK,RV64D %s
 ; RUN: llc -mtriple=riscv64 -mattr=+c %s -o - | FileCheck --check-prefixes=CHECK,RV64C %s
@@ -517,10 +516,3 @@ define i32 @addi(i32 %a) {
   %1 = add i32 %a, 1
   ret i32 %1
 }
-
-define i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {
-  %1 = load atomic i8, ptr %a seq_cst, align 1
-  ret i8 %1
-; A6S: .attribute 14, 2
-; A6C: .attribute 14, 1
-}

diff  --git a/llvm/test/MC/RISCV/attribute.s b/llvm/test/MC/RISCV/attribute.s
index 75b9c65ed1cc2fd..56f0cb1daf176f8 100644
--- a/llvm/test/MC/RISCV/attribute.s
+++ b/llvm/test/MC/RISCV/attribute.s
@@ -24,6 +24,3 @@
 
 .attribute priv_spec_revision, 0
 # CHECK: attribute      12, 0
-
-.attribute atomic_abi, 0
-# CHECK: attribute      14, 0

diff  --git a/llvm/test/MC/RISCV/invalid-attribute.s b/llvm/test/MC/RISCV/invalid-attribute.s
index 2ebf7ddc9aff85b..1d732af83cda355 100644
--- a/llvm/test/MC/RISCV/invalid-attribute.s
+++ b/llvm/test/MC/RISCV/invalid-attribute.s
@@ -33,6 +33,3 @@
 
 .attribute arch, 30
 # CHECK: [[@LINE-1]]:18: error: expected string constant
-
-.attribute atomic_abi, "16"
-# CHECK: [[@LINE-1]]:24: error: expected numeric constant


        


More information about the llvm-commits mailing list