Skip to content

Revert HWASAN failure #74163

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

kstoimenov
Copy link
Contributor

This is the failure: https://lab.llvm.org/buildbot/#/builders/236/builds/7728/steps/10/logs/stdio

This started with eef8e1d, but because there were a couple of patches that came after that I had to revert all 3 of them because of merge conflicts.

@llvmbot llvmbot added clang Clang issues not falling into any other category backend:AArch64 clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' mc Machine (object) code labels Dec 2, 2023
@kstoimenov kstoimenov requested a review from vitalybuka December 2, 2023 02:04
@llvmbot
Copy link
Member

llvmbot commented Dec 2, 2023

@llvm/pr-subscribers-clang
@llvm/pr-subscribers-backend-aarch64

@llvm/pr-subscribers-clang-driver

Author: Kirill Stoimenov (kstoimenov)

Changes

This is the failure: https://lab.llvm.org/buildbot/#/builders/236/builds/7728/steps/10/logs/stdio

This started with eef8e1d, but because there were a couple of patches that came after that I had to revert all 3 of them because of merge conflicts.


Patch is 27.35 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/74163.diff

19 Files Affected:

  • (modified) clang/test/Driver/aarch64-v95a.c (-5)
  • (modified) llvm/include/llvm/TargetParser/AArch64TargetParser.h (+1-4)
  • (modified) llvm/lib/Target/AArch64/AArch64.td (+1-4)
  • (modified) llvm/lib/Target/AArch64/AArch64InstrFormats.td (-52)
  • (modified) llvm/lib/Target/AArch64/AArch64InstrInfo.td (-19)
  • (modified) llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td (-21)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedA64FX.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (-18)
  • (modified) llvm/lib/Target/AArch64/SVEInstrFormats.td (-31)
  • (removed) llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s (-69)
  • (removed) llvm/test/MC/AArch64/armv9.5a-cpa.s (-50)
  • (modified) llvm/test/MC/AArch64/basic-a64-diagnostics.s (-8)
  • (modified) llvm/test/MC/AArch64/basic-a64-instructions.s (-4)
  • (removed) llvm/test/MC/Disassembler/AArch64/armv9.5a-cpa.txt (-42)
  • (modified) llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt (-2)
  • (modified) llvm/unittests/TargetParser/TargetParserTest.cpp (+1-3)
diff --git a/clang/test/Driver/aarch64-v95a.c b/clang/test/Driver/aarch64-v95a.c
index 366cade86a9fb71..6044a4f155db02c 100644
--- a/clang/test/Driver/aarch64-v95a.c
+++ b/clang/test/Driver/aarch64-v95a.c
@@ -13,8 +13,3 @@
 // RUN: %clang -target aarch64_be -mbig-endian -march=armv9.5-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV95A-BE %s
 // GENERICV95A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+neon" "-target-feature" "+v9.5a"
 
-// ===== Features supported on aarch64 =====
-
-// RUN: %clang -target aarch64 -march=armv9.5a+cpa -### -c %s 2>&1 | FileCheck -check-prefix=V95A-CPA %s
-// RUN: %clang -target aarch64 -march=armv9.5-a+cpa -### -c %s 2>&1 | FileCheck -check-prefix=V95A-CPA %s
-// V95A-CPA: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" "-target-feature" "+neon" "-target-feature" "+v9.5a" "-target-feature" "+cpa"
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 0711f013a377909..17cafd146b0e75d 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -173,7 +173,6 @@ enum ArchExtKind : unsigned {
   AEK_SMEF8F16 =      69, // FEAT_SME_F8F16
   AEK_SMEF8F32 =      70, // FEAT_SME_F8F32
   AEK_SMEFA64 =       71, // FEAT_SME_FA64
-  AEK_CPA =           72, // FEAT_CPA
   AEK_NUM_EXTENSIONS
 };
 using ExtensionBitset = Bitset<AEK_NUM_EXTENSIONS>;
@@ -296,7 +295,6 @@ inline constexpr ExtensionInfo Extensions[] = {
     {"sme-f8f16", AArch64::AEK_SMEF8F16, "+sme-f8f16", "-sme-f8f16", FEAT_INIT, "+sme2,+fp8", 0},
     {"sme-f8f32", AArch64::AEK_SMEF8F32, "+sme-f8f32", "-sme-f8f32", FEAT_INIT, "+sme2,+fp8", 0},
     {"sme-fa64",  AArch64::AEK_SMEFA64,  "+sme-fa64", "-sme-fa64",  FEAT_INIT, "", 0},
-    {"cpa", AArch64::AEK_CPA, "+cpa", "-cpa", FEAT_INIT, "", 0},
     // Special cases
     {"none", AArch64::AEK_NONE, {}, {}, FEAT_INIT, "", ExtensionInfo::MaxFMVPriority},
 };
@@ -380,8 +378,7 @@ inline constexpr ArchInfo ARMV9_3A  = { VersionTuple{9, 3}, AProfile, "armv9.3-a
                                         AArch64::ExtensionBitset({AArch64::AEK_MOPS, AArch64::AEK_HBC}))};
 inline constexpr ArchInfo ARMV9_4A  = { VersionTuple{9, 4}, AProfile, "armv9.4-a", "+v9.4a", (ARMV9_3A.DefaultExts |
                                         AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
-inline constexpr ArchInfo ARMV9_5A  = { VersionTuple{9, 5}, AProfile, "armv9.5-a", "+v9.5a", (ARMV9_4A.DefaultExts |
-                                        AArch64::ExtensionBitset({AArch64::AEK_CPA}))};
+inline constexpr ArchInfo ARMV9_5A  = { VersionTuple{9, 5}, AProfile, "armv9.5-a", "+v9.5a", (ARMV9_4A.DefaultExts)};
 // For v8-R, we do not enable crypto and align with GCC that enables a more minimal set of optional architecture extensions.
 inline constexpr ArchInfo ARMV8R    = { VersionTuple{8, 0}, RProfile, "armv8-r", "+v8r", (ARMV8_5A.DefaultExts |
                                         AArch64::ExtensionBitset({AArch64::AEK_SSBS,
diff --git a/llvm/lib/Target/AArch64/AArch64.td b/llvm/lib/Target/AArch64/AArch64.td
index d1dbced2466eae3..ff256c9a8ccdf46 100644
--- a/llvm/lib/Target/AArch64/AArch64.td
+++ b/llvm/lib/Target/AArch64/AArch64.td
@@ -622,9 +622,6 @@ def FeatureLdpAlignedOnly : SubtargetFeature<"ldp-aligned-only", "HasLdpAlignedO
 def FeatureStpAlignedOnly : SubtargetFeature<"stp-aligned-only", "HasStpAlignedOnly",
     "true", "In order to emit stp, first check if the store will be aligned to 2 * element_size">;
 
-def FeatureCPA : SubtargetFeature<"cpa", "HasCPA", "true",
-  "Enable ARMv9.5-A Checked Pointer Arithmetic (FEAT_CPA)">;
-
 //===----------------------------------------------------------------------===//
 // Architectures.
 //
@@ -695,7 +692,7 @@ def HasV9_4aOps : SubtargetFeature<
 
 def HasV9_5aOps : SubtargetFeature<
   "v9.5a", "HasV9_5aOps", "true", "Support ARM v9.5a instructions",
-  [HasV9_4aOps, FeatureCPA]>;
+  [HasV9_4aOps]>;
 
 def HasV8_0rOps : SubtargetFeature<
   "v8r", "HasV8_0rOps", "true", "Support ARM v8r instructions",
diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index 690ac0dcda62128..68e87f491a09e45 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -12446,58 +12446,6 @@ class SystemPXtI<bit L, string asm> :
   BaseSYSPEncoding<L, asm, "\t$op1, $Cn, $Cm, $op2, $Rt", (outs),
   (ins imm0_7:$op1, sys_cr_op:$Cn, sys_cr_op:$Cm, imm0_7:$op2, XSeqPairClassOperand:$Rt)>;
 
-//----------------------------------------------------------------------------
-// 2023 Armv9.5 Extensions
-//----------------------------------------------------------------------------
-
-//---
-// Checked Pointer Arithmetic (FEAT_CPA)
-//---
-
-def LSLImm3ShiftOperand : AsmOperandClass {
-  let SuperClasses = [ExtendOperandLSL64];
-  let Name = "LSLImm3Shift";
-  let RenderMethod = "addLSLImm3ShifterOperands";
-  let DiagnosticType = "AddSubLSLImm3ShiftLarge";
-}
-
-def lsl_imm3_shift_operand : Operand<i32> {
-  let PrintMethod = "printShifter";
-  let ParserMatchClass = LSLImm3ShiftOperand;
-}
-
-// Base CPA scalar add/subtract with lsl #imm3 shift
-class BaseAddSubCPA<bit isSub, string asm> : I<(outs GPR64sp:$Rd),
-    (ins GPR64sp:$Rn, GPR64:$Rm, lsl_imm3_shift_operand:$shift_imm),
-    asm, "\t$Rd, $Rn, $Rm$shift_imm", "", []>, Sched<[]> {
-  bits<5> Rd;
-  bits<5> Rn;
-  bits<5> Rm;
-  bits<3> shift_imm;
-  let Inst{31} = 0b1;
-  let Inst{30} = isSub;
-  let Inst{29-21} = 0b011010000;
-  let Inst{20-16} = Rm;
-  let Inst{15-13} = 0b001;
-  let Inst{12-10} = shift_imm;
-  let Inst{9-5} = Rn;
-  let Inst{4-0} = Rd;
-}
-
-// Alias for CPA scalar add/subtract with no shift
-class AddSubCPAAlias<string asm, Instruction inst>
-    : InstAlias<asm#"\t$Rd, $Rn, $Rm",
-                (inst GPR64sp:$Rd, GPR64sp:$Rn, GPR64:$Rm, 0)>;
-
-multiclass AddSubCPA<bit isSub, string asm> {
-  def _shift : BaseAddSubCPA<isSub, asm>;
-  def _noshift : AddSubCPAAlias<asm, !cast<Instruction>(NAME#"_shift")>;
-}
-
-class MulAccumCPA<bit isSub, string asm>
-  : BaseMulAccum<isSub, 0b011, GPR64, GPR64, asm, []>, Sched<[]> {
-  let Inst{31} = 0b1;
-}
 
 //----------------------------------------------------------------------------
 // Allow the size specifier tokens to be upper case, not just lower.
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index 60cd94f4ff8e12e..935667488194a30 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -289,8 +289,6 @@ def HasCHK           : Predicate<"Subtarget->hasCHK()">,
                        AssemblerPredicateWithAll<(all_of FeatureCHK), "chk">;
 def HasGCS           : Predicate<"Subtarget->hasGCS()">,
                        AssemblerPredicateWithAll<(all_of FeatureGCS), "gcs">;
-def HasCPA           : Predicate<"Subtarget->hasCPA()">,
-                       AssemblerPredicateWithAll<(all_of FeatureCPA), "cpa">;
 def IsLE             : Predicate<"Subtarget->isLittleEndian()">;
 def IsBE             : Predicate<"!Subtarget->isLittleEndian()">;
 def IsWindows        : Predicate<"Subtarget->isTargetWindows()">;
@@ -9390,10 +9388,6 @@ let Predicates = [HasD128] in {
   }
 }
 
-//===----------------------------===//
-// 2023 Architecture Extensions:
-//===----------------------------===//
-
 let Predicates = [HasFP8] in {
   defm F1CVTL  : SIMDMixedTwoVectorFP8<0b00, "f1cvtl">;
   defm F2CVTL  : SIMDMixedTwoVectorFP8<0b01, "f2cvtl">;
@@ -9435,19 +9429,6 @@ let Predicates = [HasFP8DOT4] in {
  defm FDOT : SIMDThreeSameVectorDOT4<"fdot">;
 } // End let Predicates = [HasFP8DOT4]
 
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-let Predicates = [HasCPA] in {
-  // Scalar add/subtract
-  defm ADDPT : AddSubCPA<0, "addpt">;
-  defm SUBPT : AddSubCPA<1, "subpt">;
-
-  // Scalar multiply-add/subtract
-  def MADDPT : MulAccumCPA<0, "maddpt">;
-  def MSUBPT : MulAccumCPA<1, "msubpt">;
-}
-
 include "AArch64InstrAtomics.td"
 include "AArch64SVEInstrInfo.td"
 include "AArch64SMEInstrInfo.td"
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
index 25ef8e1acfa4f29..21cafe9b6c4453a 100644
--- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
@@ -4163,24 +4163,3 @@ let Predicates = [HasSVE2orSME2, HasLUT] in {
 // LUTI4 (two contiguous registers)
   defm LUTI4_Z2ZZI  : sve2_luti4_vector_vg2_index<"luti4">;
 } // End HasSVE2orSME2, HasLUT
-
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-let Predicates = [HasSVE, HasCPA] in {
-  // Add/subtract (vectors, unpredicated)
-  def ADD_ZZZ_CPA : sve_int_bin_cons_arit_0<0b11, 0b010, "addpt", ZPR64>;
-  def SUB_ZZZ_CPA : sve_int_bin_cons_arit_0<0b11, 0b011, "subpt", ZPR64>;
-
-  // Add/subtract (vectors, predicated)
-  let DestructiveInstType = DestructiveBinaryComm in {
-    def ADD_ZPmZ_CPA : sve_int_bin_pred_arit_log<0b11, 0b00, 0b100, "addpt", ZPR64>;
-    def SUB_ZPmZ_CPA : sve_int_bin_pred_arit_log<0b11, 0b00, 0b101, "subpt", ZPR64>;
-  }
-
-  // Multiply-add vectors, writing multiplicand
-  def MAD_CPA : sve_int_mad_cpa<"madpt">;
-
-  // Multiply-add vectors, writing addend
-  def MLA_CPA : sve_int_mla_cpa<"mlapt">;
-}
diff --git a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
index 77ec445366ffc8a..65b97ff6956a11c 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
@@ -24,7 +24,7 @@ def A64FXModel : SchedMachineModel {
     [HasSVE2, HasSVE2AES, HasSVE2SM4, HasSVE2SHA3, HasSVE2BitPerm, HasPAuth,
      HasSVE2orSME, HasMTE, HasMatMulInt8, HasBF16, HasSME2, HasSME2p1, HasSVE2p1,
      HasSVE2p1_or_HasSME2p1, HasSMEF16F16, HasSSVE_FP8FMA, HasSMEF8F16, HasSMEF8F32,
-     HasSMEFA64, HasCPA];
+     HasSMEFA64];
 
   let FullInstRWOverlapCheck = 0;
 }
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
index 53cf725f0e23575..503de3bee2b8678 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
@@ -19,7 +19,7 @@ def NeoverseN2Model : SchedMachineModel {
   let CompleteModel         =   1;
 
   list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F,
-                                                    [HasSVE2p1, HasCPA]);
+                                                    [HasSVE2p1]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
index 75fbb85dce9d14a..726be1a547b9519 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
@@ -28,7 +28,7 @@ def NeoverseV1Model : SchedMachineModel {
 
   list<Predicate> UnsupportedFeatures = !listconcat(SVE2Unsupported.F,
                                                     SMEUnsupported.F,
-                                                    [HasMTE, HasCPA]);
+                                                    [HasMTE]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
index 658d7cdd23a63b2..3367d5d0cd315ff 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
@@ -22,7 +22,7 @@ def NeoverseV2Model : SchedMachineModel {
   let CompleteModel         =   1;
 
   list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F,
-                                                    [HasSVE2p1, HasCPA]);
+                                                    [HasSVE2p1]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 3f28d6deb0d3cde..fbe1bf3c5238dbd 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -1541,13 +1541,6 @@ class AArch64Operand : public MCParsedAsmOperand {
            getShiftExtendAmount() <= 4;
   }
 
-  bool isLSLImm3Shift() const {
-    if (!isShiftExtend())
-      return false;
-    AArch64_AM::ShiftExtendType ET = getShiftExtendType();
-    return ET == AArch64_AM::LSL && getShiftExtendAmount() <= 7;
-  }
-
   template<int Width> bool isMemXExtend() const {
     if (!isExtend())
       return false;
@@ -2098,12 +2091,6 @@ class AArch64Operand : public MCParsedAsmOperand {
     Inst.addOperand(MCOperand::createImm(Imm));
   }
 
-  void addLSLImm3ShifterOperands(MCInst &Inst, unsigned N) const {
-    assert(N == 1 && "Invalid number of operands!");
-    unsigned Imm = getShiftExtendAmount();
-    Inst.addOperand(MCOperand::createImm(Imm));
-  }
-
   void addSyspXzrPairOperand(MCInst &Inst, unsigned N) const {
     assert(N == 1 && "Invalid number of operands!");
 
@@ -3677,7 +3664,6 @@ static const struct Extension {
     {"sme-f8f16", {AArch64::FeatureSMEF8F16}},
     {"sme-f8f32", {AArch64::FeatureSMEF8F32}},
     {"sme-fa64",  {AArch64::FeatureSMEFA64}},
-    {"cpa", {AArch64::FeatureCPA}},
 };
 
 static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) {
@@ -6078,9 +6064,6 @@ bool AArch64AsmParser::showMatchError(SMLoc Loc, unsigned ErrCode,
         "Invalid vector list, expected list with each SVE vector in the list "
         "4 registers apart, and the first register in the range [z0, z3] or "
         "[z16, z19] and with correct element type");
-  case Match_AddSubLSLImm3ShiftLarge:
-    return Error(Loc,
-      "expected 'lsl' with optional integer in range [0, 7]");
   default:
     llvm_unreachable("unexpected error code!");
   }
@@ -6465,7 +6448,6 @@ bool AArch64AsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
   case Match_InvalidMemoryIndexed8:
   case Match_InvalidMemoryIndexed16:
   case Match_InvalidCondCode:
-  case Match_AddSubLSLImm3ShiftLarge:
   case Match_AddSubRegExtendSmall:
   case Match_AddSubRegExtendLarge:
   case Match_AddSubSecondSource:
diff --git a/llvm/lib/Target/AArch64/SVEInstrFormats.td b/llvm/lib/Target/AArch64/SVEInstrFormats.td
index cd2de130b3ce6d2..c0894e9c70680a4 100644
--- a/llvm/lib/Target/AArch64/SVEInstrFormats.td
+++ b/llvm/lib/Target/AArch64/SVEInstrFormats.td
@@ -10424,34 +10424,3 @@ multiclass sve2_luti4_vector_vg2_index<string mnemonic> {
     let Inst{23-22} = idx;
   }
 }
-
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-class sve_int_mad_cpa<string asm>
-    : I<(outs ZPR64:$Zdn), (ins ZPR64:$_Zdn, ZPR64:$Zm, ZPR64:$Za),
-        asm, "\t$Zdn, $Zm, $Za", "", []>, Sched<[]> {
-  bits<5> Zdn;
-  bits<5> Zm;
-  bits<5> Za;
-  let Inst{31-24} = 0b01000100;
-  let Inst{23-22} = 0b11; // sz
-  let Inst{21}    = 0b0;
-  let Inst{20-16} = Zm;
-  let Inst{15}    = 0b1;
-  let Inst{14-10} = 0b10110; // opc
-  let Inst{9-5}   = Za;
-  let Inst{4-0}   = Zdn;
-
-  let Constraints = "$Zdn = $_Zdn";
-  let DestructiveInstType = DestructiveOther;
-  let ElementSize = ZPR64.ElementSize;
-  let hasSideEffects = 0;
-}
-
-class sve_int_mla_cpa<string asm>
-    : sve2_int_mla<0b11, 0b10100, asm, ZPR64, ZPR64> {
-  let Inst{15} = 0b1;
-
-  let ElementSize = ZPR64.ElementSize;
-}
diff --git a/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s b/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s
deleted file mode 100644
index 2d6708bd1829ae2..000000000000000
--- a/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme -mattr=+cpa < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefixes=CHECK-ERROR-NO-SVE
-// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+cpa < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR-NO-SVE
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR-NO-CPA
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=+sve --mattr=+cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-INST
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=+sve --mattr=-cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-UNKNOWN
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=-sve --mattr=+cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-UNKNOWN
-
-addpt z23.d, z13.d, z8.d
-// CHECK-INST: addpt z23.d, z13.d, z8.d
-// CHECK-ENCODING: [0xb7,0x09,0xe8,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04e809b7 <unknown>
-
-addpt z23.d, p3/m, z23.d, z13.d
-// CHECK-INST: addpt z23.d, p3/m, z23.d, z13.d
-// CHECK-ENCODING: [0xb7,0x0d,0xc4,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04c40db7 <unknown>
-
-subpt z23.d, z13.d, z8.d
-// CHECK-INST: subpt z23.d, z13.d, z8.d
-// CHECK-ENCODING: [0xb7,0x0d,0xe8,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04e80db7 <unknown>
-
-subpt z23.d, p3/m, z23.d, z13.d
-// CHECK-INST: subpt z23.d, p3/m, z23.d, z13.d
-// CHECK-ENCODING: [0xb7,0x0d,0xc5,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04c50db7 <unknown>
-
-madpt z0.d, z1.d, z31.d
-// CHECK-INST: madpt z0.d, z1.d, z31.d
-// CHECK-ENCODING: [0xe0,0xdb,0xc1,0x44]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 44c1dbe0 <unknown>
-
-mlapt z0.d, z1.d, z31.d
-// CHECK-INST: mlapt z0.d, z1.d, z31.d
-// CHECK-ENCODING: [0x20,0xd0,0xdf,0x44]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 44dfd020 <unknown>
diff --git a/llvm/test/MC/AArch64/armv9.5a-cpa.s b/llvm/test/MC/AArch64/armv9.5a-cpa.s
deleted file mode 100644
index 1c338eccf6cacd6..000000000000000
--- a/llvm/test/MC/AArch64/armv9.5a-cpa.s
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+cpa < %s | FileCheck %s
-// RUN: not llvm-mc -triple aarch64 < %s 2>&1 | FileCheck --check-prefix=ERROR-NO-CPA %s
-
-addpt x0, x1, x2
-// CHECK: addpt x0, x1, x2               // encoding: [0x20,0x20,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt sp, sp, x2
-// CHECK: addpt sp, sp, x2               // encoding: [0xff,0x23,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt x0, x1, x2, lsl #0
-// CHECK: addpt x0, x1, x2               // encoding: [0x20,0x20,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt x0,...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Dec 2, 2023

@llvm/pr-subscribers-mc

Author: Kirill Stoimenov (kstoimenov)

Changes

This is the failure: https://lab.llvm.org/buildbot/#/builders/236/builds/7728/steps/10/logs/stdio

This started with eef8e1d, but because there were a couple of patches that came after that I had to revert all 3 of them because of merge conflicts.


Patch is 27.35 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/74163.diff

19 Files Affected:

  • (modified) clang/test/Driver/aarch64-v95a.c (-5)
  • (modified) llvm/include/llvm/TargetParser/AArch64TargetParser.h (+1-4)
  • (modified) llvm/lib/Target/AArch64/AArch64.td (+1-4)
  • (modified) llvm/lib/Target/AArch64/AArch64InstrFormats.td (-52)
  • (modified) llvm/lib/Target/AArch64/AArch64InstrInfo.td (-19)
  • (modified) llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td (-21)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedA64FX.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td (+1-1)
  • (modified) llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp (-18)
  • (modified) llvm/lib/Target/AArch64/SVEInstrFormats.td (-31)
  • (removed) llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s (-69)
  • (removed) llvm/test/MC/AArch64/armv9.5a-cpa.s (-50)
  • (modified) llvm/test/MC/AArch64/basic-a64-diagnostics.s (-8)
  • (modified) llvm/test/MC/AArch64/basic-a64-instructions.s (-4)
  • (removed) llvm/test/MC/Disassembler/AArch64/armv9.5a-cpa.txt (-42)
  • (modified) llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt (-2)
  • (modified) llvm/unittests/TargetParser/TargetParserTest.cpp (+1-3)
diff --git a/clang/test/Driver/aarch64-v95a.c b/clang/test/Driver/aarch64-v95a.c
index 366cade86a9fb71..6044a4f155db02c 100644
--- a/clang/test/Driver/aarch64-v95a.c
+++ b/clang/test/Driver/aarch64-v95a.c
@@ -13,8 +13,3 @@
 // RUN: %clang -target aarch64_be -mbig-endian -march=armv9.5-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV95A-BE %s
 // GENERICV95A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+neon" "-target-feature" "+v9.5a"
 
-// ===== Features supported on aarch64 =====
-
-// RUN: %clang -target aarch64 -march=armv9.5a+cpa -### -c %s 2>&1 | FileCheck -check-prefix=V95A-CPA %s
-// RUN: %clang -target aarch64 -march=armv9.5-a+cpa -### -c %s 2>&1 | FileCheck -check-prefix=V95A-CPA %s
-// V95A-CPA: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" "-target-feature" "+neon" "-target-feature" "+v9.5a" "-target-feature" "+cpa"
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 0711f013a377909..17cafd146b0e75d 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -173,7 +173,6 @@ enum ArchExtKind : unsigned {
   AEK_SMEF8F16 =      69, // FEAT_SME_F8F16
   AEK_SMEF8F32 =      70, // FEAT_SME_F8F32
   AEK_SMEFA64 =       71, // FEAT_SME_FA64
-  AEK_CPA =           72, // FEAT_CPA
   AEK_NUM_EXTENSIONS
 };
 using ExtensionBitset = Bitset<AEK_NUM_EXTENSIONS>;
@@ -296,7 +295,6 @@ inline constexpr ExtensionInfo Extensions[] = {
     {"sme-f8f16", AArch64::AEK_SMEF8F16, "+sme-f8f16", "-sme-f8f16", FEAT_INIT, "+sme2,+fp8", 0},
     {"sme-f8f32", AArch64::AEK_SMEF8F32, "+sme-f8f32", "-sme-f8f32", FEAT_INIT, "+sme2,+fp8", 0},
     {"sme-fa64",  AArch64::AEK_SMEFA64,  "+sme-fa64", "-sme-fa64",  FEAT_INIT, "", 0},
-    {"cpa", AArch64::AEK_CPA, "+cpa", "-cpa", FEAT_INIT, "", 0},
     // Special cases
     {"none", AArch64::AEK_NONE, {}, {}, FEAT_INIT, "", ExtensionInfo::MaxFMVPriority},
 };
@@ -380,8 +378,7 @@ inline constexpr ArchInfo ARMV9_3A  = { VersionTuple{9, 3}, AProfile, "armv9.3-a
                                         AArch64::ExtensionBitset({AArch64::AEK_MOPS, AArch64::AEK_HBC}))};
 inline constexpr ArchInfo ARMV9_4A  = { VersionTuple{9, 4}, AProfile, "armv9.4-a", "+v9.4a", (ARMV9_3A.DefaultExts |
                                         AArch64::ExtensionBitset({AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASv2}))};
-inline constexpr ArchInfo ARMV9_5A  = { VersionTuple{9, 5}, AProfile, "armv9.5-a", "+v9.5a", (ARMV9_4A.DefaultExts |
-                                        AArch64::ExtensionBitset({AArch64::AEK_CPA}))};
+inline constexpr ArchInfo ARMV9_5A  = { VersionTuple{9, 5}, AProfile, "armv9.5-a", "+v9.5a", (ARMV9_4A.DefaultExts)};
 // For v8-R, we do not enable crypto and align with GCC that enables a more minimal set of optional architecture extensions.
 inline constexpr ArchInfo ARMV8R    = { VersionTuple{8, 0}, RProfile, "armv8-r", "+v8r", (ARMV8_5A.DefaultExts |
                                         AArch64::ExtensionBitset({AArch64::AEK_SSBS,
diff --git a/llvm/lib/Target/AArch64/AArch64.td b/llvm/lib/Target/AArch64/AArch64.td
index d1dbced2466eae3..ff256c9a8ccdf46 100644
--- a/llvm/lib/Target/AArch64/AArch64.td
+++ b/llvm/lib/Target/AArch64/AArch64.td
@@ -622,9 +622,6 @@ def FeatureLdpAlignedOnly : SubtargetFeature<"ldp-aligned-only", "HasLdpAlignedO
 def FeatureStpAlignedOnly : SubtargetFeature<"stp-aligned-only", "HasStpAlignedOnly",
     "true", "In order to emit stp, first check if the store will be aligned to 2 * element_size">;
 
-def FeatureCPA : SubtargetFeature<"cpa", "HasCPA", "true",
-  "Enable ARMv9.5-A Checked Pointer Arithmetic (FEAT_CPA)">;
-
 //===----------------------------------------------------------------------===//
 // Architectures.
 //
@@ -695,7 +692,7 @@ def HasV9_4aOps : SubtargetFeature<
 
 def HasV9_5aOps : SubtargetFeature<
   "v9.5a", "HasV9_5aOps", "true", "Support ARM v9.5a instructions",
-  [HasV9_4aOps, FeatureCPA]>;
+  [HasV9_4aOps]>;
 
 def HasV8_0rOps : SubtargetFeature<
   "v8r", "HasV8_0rOps", "true", "Support ARM v8r instructions",
diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index 690ac0dcda62128..68e87f491a09e45 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -12446,58 +12446,6 @@ class SystemPXtI<bit L, string asm> :
   BaseSYSPEncoding<L, asm, "\t$op1, $Cn, $Cm, $op2, $Rt", (outs),
   (ins imm0_7:$op1, sys_cr_op:$Cn, sys_cr_op:$Cm, imm0_7:$op2, XSeqPairClassOperand:$Rt)>;
 
-//----------------------------------------------------------------------------
-// 2023 Armv9.5 Extensions
-//----------------------------------------------------------------------------
-
-//---
-// Checked Pointer Arithmetic (FEAT_CPA)
-//---
-
-def LSLImm3ShiftOperand : AsmOperandClass {
-  let SuperClasses = [ExtendOperandLSL64];
-  let Name = "LSLImm3Shift";
-  let RenderMethod = "addLSLImm3ShifterOperands";
-  let DiagnosticType = "AddSubLSLImm3ShiftLarge";
-}
-
-def lsl_imm3_shift_operand : Operand<i32> {
-  let PrintMethod = "printShifter";
-  let ParserMatchClass = LSLImm3ShiftOperand;
-}
-
-// Base CPA scalar add/subtract with lsl #imm3 shift
-class BaseAddSubCPA<bit isSub, string asm> : I<(outs GPR64sp:$Rd),
-    (ins GPR64sp:$Rn, GPR64:$Rm, lsl_imm3_shift_operand:$shift_imm),
-    asm, "\t$Rd, $Rn, $Rm$shift_imm", "", []>, Sched<[]> {
-  bits<5> Rd;
-  bits<5> Rn;
-  bits<5> Rm;
-  bits<3> shift_imm;
-  let Inst{31} = 0b1;
-  let Inst{30} = isSub;
-  let Inst{29-21} = 0b011010000;
-  let Inst{20-16} = Rm;
-  let Inst{15-13} = 0b001;
-  let Inst{12-10} = shift_imm;
-  let Inst{9-5} = Rn;
-  let Inst{4-0} = Rd;
-}
-
-// Alias for CPA scalar add/subtract with no shift
-class AddSubCPAAlias<string asm, Instruction inst>
-    : InstAlias<asm#"\t$Rd, $Rn, $Rm",
-                (inst GPR64sp:$Rd, GPR64sp:$Rn, GPR64:$Rm, 0)>;
-
-multiclass AddSubCPA<bit isSub, string asm> {
-  def _shift : BaseAddSubCPA<isSub, asm>;
-  def _noshift : AddSubCPAAlias<asm, !cast<Instruction>(NAME#"_shift")>;
-}
-
-class MulAccumCPA<bit isSub, string asm>
-  : BaseMulAccum<isSub, 0b011, GPR64, GPR64, asm, []>, Sched<[]> {
-  let Inst{31} = 0b1;
-}
 
 //----------------------------------------------------------------------------
 // Allow the size specifier tokens to be upper case, not just lower.
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
index 60cd94f4ff8e12e..935667488194a30 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td
@@ -289,8 +289,6 @@ def HasCHK           : Predicate<"Subtarget->hasCHK()">,
                        AssemblerPredicateWithAll<(all_of FeatureCHK), "chk">;
 def HasGCS           : Predicate<"Subtarget->hasGCS()">,
                        AssemblerPredicateWithAll<(all_of FeatureGCS), "gcs">;
-def HasCPA           : Predicate<"Subtarget->hasCPA()">,
-                       AssemblerPredicateWithAll<(all_of FeatureCPA), "cpa">;
 def IsLE             : Predicate<"Subtarget->isLittleEndian()">;
 def IsBE             : Predicate<"!Subtarget->isLittleEndian()">;
 def IsWindows        : Predicate<"Subtarget->isTargetWindows()">;
@@ -9390,10 +9388,6 @@ let Predicates = [HasD128] in {
   }
 }
 
-//===----------------------------===//
-// 2023 Architecture Extensions:
-//===----------------------------===//
-
 let Predicates = [HasFP8] in {
   defm F1CVTL  : SIMDMixedTwoVectorFP8<0b00, "f1cvtl">;
   defm F2CVTL  : SIMDMixedTwoVectorFP8<0b01, "f2cvtl">;
@@ -9435,19 +9429,6 @@ let Predicates = [HasFP8DOT4] in {
  defm FDOT : SIMDThreeSameVectorDOT4<"fdot">;
 } // End let Predicates = [HasFP8DOT4]
 
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-let Predicates = [HasCPA] in {
-  // Scalar add/subtract
-  defm ADDPT : AddSubCPA<0, "addpt">;
-  defm SUBPT : AddSubCPA<1, "subpt">;
-
-  // Scalar multiply-add/subtract
-  def MADDPT : MulAccumCPA<0, "maddpt">;
-  def MSUBPT : MulAccumCPA<1, "msubpt">;
-}
-
 include "AArch64InstrAtomics.td"
 include "AArch64SVEInstrInfo.td"
 include "AArch64SMEInstrInfo.td"
diff --git a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
index 25ef8e1acfa4f29..21cafe9b6c4453a 100644
--- a/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+++ b/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
@@ -4163,24 +4163,3 @@ let Predicates = [HasSVE2orSME2, HasLUT] in {
 // LUTI4 (two contiguous registers)
   defm LUTI4_Z2ZZI  : sve2_luti4_vector_vg2_index<"luti4">;
 } // End HasSVE2orSME2, HasLUT
-
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-let Predicates = [HasSVE, HasCPA] in {
-  // Add/subtract (vectors, unpredicated)
-  def ADD_ZZZ_CPA : sve_int_bin_cons_arit_0<0b11, 0b010, "addpt", ZPR64>;
-  def SUB_ZZZ_CPA : sve_int_bin_cons_arit_0<0b11, 0b011, "subpt", ZPR64>;
-
-  // Add/subtract (vectors, predicated)
-  let DestructiveInstType = DestructiveBinaryComm in {
-    def ADD_ZPmZ_CPA : sve_int_bin_pred_arit_log<0b11, 0b00, 0b100, "addpt", ZPR64>;
-    def SUB_ZPmZ_CPA : sve_int_bin_pred_arit_log<0b11, 0b00, 0b101, "subpt", ZPR64>;
-  }
-
-  // Multiply-add vectors, writing multiplicand
-  def MAD_CPA : sve_int_mad_cpa<"madpt">;
-
-  // Multiply-add vectors, writing addend
-  def MLA_CPA : sve_int_mla_cpa<"mlapt">;
-}
diff --git a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
index 77ec445366ffc8a..65b97ff6956a11c 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedA64FX.td
@@ -24,7 +24,7 @@ def A64FXModel : SchedMachineModel {
     [HasSVE2, HasSVE2AES, HasSVE2SM4, HasSVE2SHA3, HasSVE2BitPerm, HasPAuth,
      HasSVE2orSME, HasMTE, HasMatMulInt8, HasBF16, HasSME2, HasSME2p1, HasSVE2p1,
      HasSVE2p1_or_HasSME2p1, HasSMEF16F16, HasSSVE_FP8FMA, HasSMEF8F16, HasSMEF8F32,
-     HasSMEFA64, HasCPA];
+     HasSMEFA64];
 
   let FullInstRWOverlapCheck = 0;
 }
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
index 53cf725f0e23575..503de3bee2b8678 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td
@@ -19,7 +19,7 @@ def NeoverseN2Model : SchedMachineModel {
   let CompleteModel         =   1;
 
   list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F,
-                                                    [HasSVE2p1, HasCPA]);
+                                                    [HasSVE2p1]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
index 75fbb85dce9d14a..726be1a547b9519 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV1.td
@@ -28,7 +28,7 @@ def NeoverseV1Model : SchedMachineModel {
 
   list<Predicate> UnsupportedFeatures = !listconcat(SVE2Unsupported.F,
                                                     SMEUnsupported.F,
-                                                    [HasMTE, HasCPA]);
+                                                    [HasMTE]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
index 658d7cdd23a63b2..3367d5d0cd315ff 100644
--- a/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
+++ b/llvm/lib/Target/AArch64/AArch64SchedNeoverseV2.td
@@ -22,7 +22,7 @@ def NeoverseV2Model : SchedMachineModel {
   let CompleteModel         =   1;
 
   list<Predicate> UnsupportedFeatures = !listconcat(SMEUnsupported.F,
-                                                    [HasSVE2p1, HasCPA]);
+                                                    [HasSVE2p1]);
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 3f28d6deb0d3cde..fbe1bf3c5238dbd 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -1541,13 +1541,6 @@ class AArch64Operand : public MCParsedAsmOperand {
            getShiftExtendAmount() <= 4;
   }
 
-  bool isLSLImm3Shift() const {
-    if (!isShiftExtend())
-      return false;
-    AArch64_AM::ShiftExtendType ET = getShiftExtendType();
-    return ET == AArch64_AM::LSL && getShiftExtendAmount() <= 7;
-  }
-
   template<int Width> bool isMemXExtend() const {
     if (!isExtend())
       return false;
@@ -2098,12 +2091,6 @@ class AArch64Operand : public MCParsedAsmOperand {
     Inst.addOperand(MCOperand::createImm(Imm));
   }
 
-  void addLSLImm3ShifterOperands(MCInst &Inst, unsigned N) const {
-    assert(N == 1 && "Invalid number of operands!");
-    unsigned Imm = getShiftExtendAmount();
-    Inst.addOperand(MCOperand::createImm(Imm));
-  }
-
   void addSyspXzrPairOperand(MCInst &Inst, unsigned N) const {
     assert(N == 1 && "Invalid number of operands!");
 
@@ -3677,7 +3664,6 @@ static const struct Extension {
     {"sme-f8f16", {AArch64::FeatureSMEF8F16}},
     {"sme-f8f32", {AArch64::FeatureSMEF8F32}},
     {"sme-fa64",  {AArch64::FeatureSMEFA64}},
-    {"cpa", {AArch64::FeatureCPA}},
 };
 
 static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) {
@@ -6078,9 +6064,6 @@ bool AArch64AsmParser::showMatchError(SMLoc Loc, unsigned ErrCode,
         "Invalid vector list, expected list with each SVE vector in the list "
         "4 registers apart, and the first register in the range [z0, z3] or "
         "[z16, z19] and with correct element type");
-  case Match_AddSubLSLImm3ShiftLarge:
-    return Error(Loc,
-      "expected 'lsl' with optional integer in range [0, 7]");
   default:
     llvm_unreachable("unexpected error code!");
   }
@@ -6465,7 +6448,6 @@ bool AArch64AsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
   case Match_InvalidMemoryIndexed8:
   case Match_InvalidMemoryIndexed16:
   case Match_InvalidCondCode:
-  case Match_AddSubLSLImm3ShiftLarge:
   case Match_AddSubRegExtendSmall:
   case Match_AddSubRegExtendLarge:
   case Match_AddSubSecondSource:
diff --git a/llvm/lib/Target/AArch64/SVEInstrFormats.td b/llvm/lib/Target/AArch64/SVEInstrFormats.td
index cd2de130b3ce6d2..c0894e9c70680a4 100644
--- a/llvm/lib/Target/AArch64/SVEInstrFormats.td
+++ b/llvm/lib/Target/AArch64/SVEInstrFormats.td
@@ -10424,34 +10424,3 @@ multiclass sve2_luti4_vector_vg2_index<string mnemonic> {
     let Inst{23-22} = idx;
   }
 }
-
-//===----------------------------------------------------------------------===//
-// Checked Pointer Arithmetic (FEAT_CPA)
-//===----------------------------------------------------------------------===//
-class sve_int_mad_cpa<string asm>
-    : I<(outs ZPR64:$Zdn), (ins ZPR64:$_Zdn, ZPR64:$Zm, ZPR64:$Za),
-        asm, "\t$Zdn, $Zm, $Za", "", []>, Sched<[]> {
-  bits<5> Zdn;
-  bits<5> Zm;
-  bits<5> Za;
-  let Inst{31-24} = 0b01000100;
-  let Inst{23-22} = 0b11; // sz
-  let Inst{21}    = 0b0;
-  let Inst{20-16} = Zm;
-  let Inst{15}    = 0b1;
-  let Inst{14-10} = 0b10110; // opc
-  let Inst{9-5}   = Za;
-  let Inst{4-0}   = Zdn;
-
-  let Constraints = "$Zdn = $_Zdn";
-  let DestructiveInstType = DestructiveOther;
-  let ElementSize = ZPR64.ElementSize;
-  let hasSideEffects = 0;
-}
-
-class sve_int_mla_cpa<string asm>
-    : sve2_int_mla<0b11, 0b10100, asm, ZPR64, ZPR64> {
-  let Inst{15} = 0b1;
-
-  let ElementSize = ZPR64.ElementSize;
-}
diff --git a/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s b/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s
deleted file mode 100644
index 2d6708bd1829ae2..000000000000000
--- a/llvm/test/MC/AArch64/SVE/armv9.5a-cpa.s
+++ /dev/null
@@ -1,69 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme -mattr=+cpa < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefixes=CHECK-ERROR-NO-SVE
-// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+cpa < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR-NO-SVE
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR-NO-CPA
-// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s 2>&1 \
-// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=+sve --mattr=+cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-INST
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=+sve --mattr=-cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-UNKNOWN
-// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve -mattr=+cpa < %s \
-// RUN:        | llvm-objdump -d --mattr=-sve --mattr=+cpa - \
-// RUN:        | FileCheck %s --check-prefix=CHECK-UNKNOWN
-
-addpt z23.d, z13.d, z8.d
-// CHECK-INST: addpt z23.d, z13.d, z8.d
-// CHECK-ENCODING: [0xb7,0x09,0xe8,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04e809b7 <unknown>
-
-addpt z23.d, p3/m, z23.d, z13.d
-// CHECK-INST: addpt z23.d, p3/m, z23.d, z13.d
-// CHECK-ENCODING: [0xb7,0x0d,0xc4,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04c40db7 <unknown>
-
-subpt z23.d, z13.d, z8.d
-// CHECK-INST: subpt z23.d, z13.d, z8.d
-// CHECK-ENCODING: [0xb7,0x0d,0xe8,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04e80db7 <unknown>
-
-subpt z23.d, p3/m, z23.d, z13.d
-// CHECK-INST: subpt z23.d, p3/m, z23.d, z13.d
-// CHECK-ENCODING: [0xb7,0x0d,0xc5,0x04]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 04c50db7 <unknown>
-
-madpt z0.d, z1.d, z31.d
-// CHECK-INST: madpt z0.d, z1.d, z31.d
-// CHECK-ENCODING: [0xe0,0xdb,0xc1,0x44]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 44c1dbe0 <unknown>
-
-mlapt z0.d, z1.d, z31.d
-// CHECK-INST: mlapt z0.d, z1.d, z31.d
-// CHECK-ENCODING: [0x20,0xd0,0xdf,0x44]
-// CHECK-ERROR: instruction requires: cpa sve
-// CHECK-ERROR-NO-SVE: instruction requires: sve
-// CHECK-ERROR-NO-CPA: instruction requires: cpa
-// CHECK-UNKNOWN: 44dfd020 <unknown>
diff --git a/llvm/test/MC/AArch64/armv9.5a-cpa.s b/llvm/test/MC/AArch64/armv9.5a-cpa.s
deleted file mode 100644
index 1c338eccf6cacd6..000000000000000
--- a/llvm/test/MC/AArch64/armv9.5a-cpa.s
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: llvm-mc -triple aarch64 -show-encoding -mattr=+cpa < %s | FileCheck %s
-// RUN: not llvm-mc -triple aarch64 < %s 2>&1 | FileCheck --check-prefix=ERROR-NO-CPA %s
-
-addpt x0, x1, x2
-// CHECK: addpt x0, x1, x2               // encoding: [0x20,0x20,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt sp, sp, x2
-// CHECK: addpt sp, sp, x2               // encoding: [0xff,0x23,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt x0, x1, x2, lsl #0
-// CHECK: addpt x0, x1, x2               // encoding: [0x20,0x20,0x02,0x9a]
-// ERROR-NO-CPA: error: instruction requires: cpa
-
-addpt x0,...
[truncated]

@kstoimenov kstoimenov requested a review from pratlucas December 2, 2023 02:06
Copy link

github-actions bot commented Dec 2, 2023

⚠️ C/C++ code formatter, clang-format found issues in your code. ⚠️

You can test this locally with the following command:
git-clang-format --diff 7ccc4ef55f9a4ebe381a980796e9c63220a48ab2 0f9d6bfadbc6782bf30ad1e70c46f946f73fdc39 -- clang/test/Driver/aarch64-v95a.c llvm/include/llvm/TargetParser/AArch64TargetParser.h llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp llvm/unittests/TargetParser/TargetParserTest.cpp
View the diff from clang-format here.
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index fbe1bf3c52..77963f895d 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -3663,7 +3663,7 @@ static const struct Extension {
     {"sme-lutv2", {AArch64::FeatureSME_LUTv2}},
     {"sme-f8f16", {AArch64::FeatureSMEF8F16}},
     {"sme-f8f32", {AArch64::FeatureSMEF8F32}},
-    {"sme-fa64",  {AArch64::FeatureSMEFA64}},
+    {"sme-fa64", {AArch64::FeatureSMEFA64}},
 };
 
 static void setRequiredFeatureString(FeatureBitset FBS, std::string &Str) {

@vitalybuka
Copy link
Collaborator

Looks like buffer overflow, but not sure if this is pre-existed or new issue.
It's better to revert to recover the bot, and investigate.

@vitalybuka vitalybuka merged commit ef876c7 into llvm:revert-hwasan-failure Dec 2, 2023
kstoimenov added a commit that referenced this pull request Dec 2, 2023
This is the failure:
https://lab.llvm.org/buildbot/#/builders/236/builds/7728/steps/10/logs/stdio

This started with eef8e1d, but because
there were a couple of patches that came after that I had to revert all
3 of them because of merge conflicts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AArch64 clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang Clang issues not falling into any other category mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants