[llvm-branch-commits] [llvm] c15fcd1 - Revert "[llvm-exegesis] Add AArch64 operand initializers, SetRegTo (#169912)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Jan 7 01:49:21 PST 2026


Author: Cullen Rhodes
Date: 2026-01-07T09:49:18Z
New Revision: c15fcd167e4af9fa9e871d827ebb9a0aa9aa3da1

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

LOG: Revert "[llvm-exegesis] Add AArch64 operand initializers, SetRegTo (#169912)"

This reverts commit 686ba67a1aef82d13e9368e1babaf6ce96ecf738.

Added: 
    

Modified: 
    llvm/lib/Target/AArch64/AArch64InstrFormats.td
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
    llvm/test/tools/llvm-exegesis/AArch64/all-opcodes.test
    llvm/test/tools/llvm-exegesis/AArch64/setReg_init_check.s
    llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index a38eac6682567..d6221855a7962 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -389,14 +389,12 @@ def simm10Scaled : Operand<i64> {
   let ParserMatchClass = SImm10s8Operand;
   let DecoderMethod = "DecodeSImm<10>";
   let PrintMethod = "printImmScale<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm9s16 : Operand<i64> {
   let ParserMatchClass = SImmScaledMemoryIndexed<9, 16>;
   let DecoderMethod = "DecodeSImm<9>";
   let PrintMethod = "printImmScale<16>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // uimm6 predicate - True if the immediate is in the range [0, 63].
@@ -407,22 +405,18 @@ def UImm6Operand : AsmOperandClass {
 
 def uimm6 : Operand<i64>, ImmLeaf<i64, [{ return Imm >= 0 && Imm < 64; }]> {
   let ParserMatchClass = UImm6Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm16 : Operand<i16>, ImmLeaf<i16, [{return Imm >= 0 && Imm < 65536;}]>{
   let ParserMatchClass = AsmImmRange<0, 65535>;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm6_64b : Operand<i64>, ImmLeaf<i64, [{ return Imm >= 0 && Imm < 64; }]> {
     let ParserMatchClass = UImm6Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm6_32b : Operand<i32>, ImmLeaf<i32, [{ return Imm >= 0 && Imm < 64; }]> {
    let ParserMatchClass = UImm6Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def CmpBranchUImm6Operand_32b
@@ -459,29 +453,24 @@ def UImm6Minus1Operand : AsmOperandClass {
 
 def uimm6p1_32b : Operand<i32> {
   let ParserMatchClass = UImm6Plus1Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm6p1_64b : Operand<i64> {
   let ParserMatchClass = UImm6Plus1Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm6m1_32b : Operand<i32> {
   let ParserMatchClass = UImm6Minus1Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm6m1_64b : Operand<i64> {
   let ParserMatchClass = UImm6Minus1Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def SImm9Operand : SImmOperand<9>;
 def simm9 : Operand<i64>, ImmLeaf<i64, [{ return Imm >= -256 && Imm < 256; }]> {
   let ParserMatchClass = SImm9Operand;
   let DecoderMethod = "DecodeSImm<9>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // imm0_255 predicate - True if the immediate is in the range [0,255].
@@ -489,57 +478,48 @@ def Imm0_255Operand : AsmImmRange<0,255>;
 
 def uimm8_32b : Operand<i32>, ImmLeaf<i32, [{ return Imm >= 0 && Imm < 256; }]> {
   let ParserMatchClass = Imm0_255Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm8_64b : Operand<i64>, ImmLeaf<i64, [{ return Imm >= 0 && Imm < 256; }]> {
   let ParserMatchClass = Imm0_255Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def SImm8Operand : SImmOperand<8>;
 def simm8_32b : Operand<i32>, ImmLeaf<i32, [{ return Imm >= -128 && Imm < 128; }]> {
   let ParserMatchClass = SImm8Operand;
   let DecoderMethod = "DecodeSImm<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def simm8_64b : Operand<i64>, ImmLeaf<i64, [{ return Imm >= -128 && Imm < 128; }]> {
   let ParserMatchClass = SImm8Operand;
   let DecoderMethod = "DecodeSImm<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def SImm6Operand : SImmOperand<6>;
 def simm6_32b : Operand<i32>, ImmLeaf<i32, [{ return Imm >= -32 && Imm < 32; }]> {
   let ParserMatchClass = SImm6Operand;
   let DecoderMethod = "DecodeSImm<6>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def SImm5Operand : SImmOperand<5>;
 def simm5_64b : Operand<i64>, ImmLeaf<i64, [{ return Imm >= -16 && Imm < 16; }]> {
   let ParserMatchClass = SImm5Operand;
   let DecoderMethod = "DecodeSImm<5>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm5_32b : Operand<i32>, ImmLeaf<i32, [{ return Imm >= -16 && Imm < 16; }]> {
   let ParserMatchClass = SImm5Operand;
   let DecoderMethod = "DecodeSImm<5>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm5_8b : Operand<i32>, ImmLeaf<i32, [{ return (int8_t)Imm >= -16 && (int8_t)Imm < 16; }]> {
   let ParserMatchClass = SImm5Operand;
   let DecoderMethod = "DecodeSImm<5>";
   let PrintMethod = "printSImm<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm5_16b : Operand<i32>, ImmLeaf<i32, [{ return (int16_t)Imm >= -16 && (int16_t)Imm < 16; }]> {
   let ParserMatchClass = SImm5Operand;
   let DecoderMethod = "DecodeSImm<5>";
   let PrintMethod = "printSImm<16>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // simm7sN predicate - True if the immediate is a multiple of N in the range
@@ -552,19 +532,16 @@ def SImm7s16Operand : SImmScaledMemoryIndexed<7, 16>;
 def simm7s4 : Operand<i32> {
   let ParserMatchClass = SImm7s4Operand;
   let PrintMethod = "printImmScale<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm7s8 : Operand<i32> {
   let ParserMatchClass = SImm7s8Operand;
   let PrintMethod = "printImmScale<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm7s16 : Operand<i32> {
   let ParserMatchClass = SImm7s16Operand;
   let PrintMethod = "printImmScale<16>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def am_sve_fi : ComplexPattern<iPTR, 2, "SelectAddrModeFrameIndexSVE", []>;
@@ -614,21 +591,18 @@ def uimm5s2 : Operand<i64>, ImmLeaf<i64,
                 UImmS2XForm> {
   let ParserMatchClass = UImm5s2Operand;
   let PrintMethod = "printImmScale<2>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm5s4 : Operand<i64>, ImmLeaf<i64,
                 [{ return Imm >= 0 && Imm < (32*4) && ((Imm % 4) == 0); }],
                 UImmS4XForm> {
   let ParserMatchClass = UImm5s4Operand;
   let PrintMethod = "printImmScale<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm5s8 : Operand<i64>, ImmLeaf<i64,
                 [{ return Imm >= 0 && Imm < (32*8) && ((Imm % 8) == 0); }],
                 UImmS8XForm> {
   let ParserMatchClass = UImm5s8Operand;
   let PrintMethod = "printImmScale<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // tuimm5sN predicate - similar to uimm5sN, but use TImmLeaf (TargetConstant)
@@ -638,21 +612,18 @@ def tuimm5s2 : Operand<i64>, TImmLeaf<i64,
                 UImmS2XForm> {
   let ParserMatchClass = UImm5s2Operand;
   let PrintMethod = "printImmScale<2>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def tuimm5s4 : Operand<i64>, TImmLeaf<i64,
                 [{ return Imm >= 0 && Imm < (32*4) && ((Imm % 4) == 0); }],
                 UImmS4XForm> {
   let ParserMatchClass = UImm5s4Operand;
   let PrintMethod = "printImmScale<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def tuimm5s8 : Operand<i64>, TImmLeaf<i64,
                 [{ return Imm >= 0 && Imm < (32*8) && ((Imm % 8) == 0); }],
                 UImmS8XForm> {
   let ParserMatchClass = UImm5s8Operand;
   let PrintMethod = "printImmScale<8>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // uimm6sN predicate - True if the immediate is a multiple of N in the range
@@ -665,31 +636,26 @@ def UImm6s16Operand : UImmScaledMemoryIndexed<6, 16>;
 
 def uimm6s1 : Operand<i64>, ImmLeaf<i64, [{ return Imm >= 0 && Imm < 64; }]> {
   let ParserMatchClass = UImm6s1Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm6s2 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm < (64*2) && ((Imm % 2) == 0); }]> {
   let PrintMethod = "printImmScale<2>";
   let ParserMatchClass = UImm6s2Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm6s4 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm < (64*4) && ((Imm % 4) == 0); }]> {
   let PrintMethod = "printImmScale<4>";
   let ParserMatchClass = UImm6s4Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm6s8 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm < (64*8) && ((Imm % 8) == 0); }]> {
   let PrintMethod = "printImmScale<8>";
   let ParserMatchClass = UImm6s8Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def uimm6s16 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm < (64*16) && ((Imm % 16) == 0); }]> {
   let PrintMethod = "printImmScale<16>";
   let ParserMatchClass = UImm6s16Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def SImmS2XForm : SDNodeXForm<imm, [{
@@ -714,7 +680,6 @@ def SImm6s1Operand : SImmScaledMemoryIndexed<6, 1>;
 def simm6s1 : Operand<i64>, ImmLeaf<i64, [{ return Imm >= -32 && Imm < 32; }]> {
   let ParserMatchClass = SImm6s1Operand;
   let DecoderMethod = "DecodeSImm<6>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // simm4sN predicate - True if the immediate is a multiple of N in the range
@@ -730,7 +695,6 @@ def simm4s1 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >=-8  && Imm <= 7; }]> {
   let ParserMatchClass = SImm4s1Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm4s2 : Operand<i64>, ImmLeaf<i64,
@@ -738,7 +702,6 @@ def simm4s2 : Operand<i64>, ImmLeaf<i64,
   let PrintMethod = "printImmScale<2>";
   let ParserMatchClass = SImm4s2Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm4s3 : Operand<i64>, ImmLeaf<i64,
@@ -746,7 +709,6 @@ def simm4s3 : Operand<i64>, ImmLeaf<i64,
   let PrintMethod = "printImmScale<3>";
   let ParserMatchClass = SImm4s3Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def simm4s4 : Operand<i64>, ImmLeaf<i64,
@@ -754,21 +716,18 @@ def simm4s4 : Operand<i64>, ImmLeaf<i64,
   let PrintMethod = "printImmScale<4>";
   let ParserMatchClass = SImm4s4Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def simm4s16 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >=-128  && Imm <= 112 && (Imm % 16) == 0x0; }], SImmS16XForm> {
   let PrintMethod = "printImmScale<16>";
   let ParserMatchClass = SImm4s16Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def simm4s32 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >=-256  && Imm <= 224 && (Imm % 32) == 0x0; }], SImmS32XForm> {
   let PrintMethod = "printImmScale<32>";
   let ParserMatchClass = SImm4s32Operand;
   let DecoderMethod = "DecodeSImm<4>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def Imm1_8Operand : AsmImmRange<1, 8>;
@@ -798,7 +757,6 @@ def MovWSymbolG3AsmOperand : AsmOperandClass {
 
 def movw_symbol_g3 : Operand<i32> {
   let ParserMatchClass = MovWSymbolG3AsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def MovWSymbolG2AsmOperand : AsmOperandClass {
@@ -808,7 +766,6 @@ def MovWSymbolG2AsmOperand : AsmOperandClass {
 
 def movw_symbol_g2 : Operand<i32> {
   let ParserMatchClass = MovWSymbolG2AsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def MovWSymbolG1AsmOperand : AsmOperandClass {
@@ -818,7 +775,6 @@ def MovWSymbolG1AsmOperand : AsmOperandClass {
 
 def movw_symbol_g1 : Operand<i32> {
   let ParserMatchClass = MovWSymbolG1AsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def MovWSymbolG0AsmOperand : AsmOperandClass {
@@ -828,7 +784,6 @@ def MovWSymbolG0AsmOperand : AsmOperandClass {
 
 def movw_symbol_g0 : Operand<i32> {
   let ParserMatchClass = MovWSymbolG0AsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class fixedpoint_i32<ValueType FloatVT>
@@ -837,7 +792,6 @@ class fixedpoint_i32<ValueType FloatVT>
   let EncoderMethod = "getFixedPointScaleOpValue";
   let DecoderMethod = "DecodeFixedPointScaleImm32";
   let ParserMatchClass = Imm1_32Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class fixedpoint_i64<ValueType FloatVT>
@@ -846,7 +800,6 @@ class fixedpoint_i64<ValueType FloatVT>
   let EncoderMethod = "getFixedPointScaleOpValue";
   let DecoderMethod = "DecodeFixedPointScaleImm64";
   let ParserMatchClass = Imm1_64Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def fixedpoint_f16_i32 : fixedpoint_i32<f16>;
@@ -862,7 +815,6 @@ class fixedpoint_recip_i32<ValueType FloatVT>
     ComplexPattern<FloatVT, 1, "SelectCVTFixedPosRecipOperand<32>", [fpimm, ld]> {
   let EncoderMethod = "getFixedPointScaleOpValue";
   let DecoderMethod = "DecodeFixedPointScaleImm32";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class fixedpoint_recip_i64<ValueType FloatVT>
@@ -870,7 +822,6 @@ class fixedpoint_recip_i64<ValueType FloatVT>
     ComplexPattern<FloatVT, 1, "SelectCVTFixedPosRecipOperand<64>", [fpimm, ld]> {
   let EncoderMethod = "getFixedPointScaleOpValue";
   let DecoderMethod = "DecodeFixedPointScaleImm64";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def fixedpoint_recip_f16_i32 : fixedpoint_recip_i32<f16>;
@@ -887,7 +838,6 @@ def vecshiftR8 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR8OpValue";
   let DecoderMethod = "DecodeVecShiftR8Imm";
   let ParserMatchClass = Imm1_8Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR16 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 17);
@@ -895,7 +845,6 @@ def vecshiftR16 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR16OpValue";
   let DecoderMethod = "DecodeVecShiftR16Imm";
   let ParserMatchClass = Imm1_16Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR16Narrow : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 9);
@@ -903,7 +852,6 @@ def vecshiftR16Narrow : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR16OpValue";
   let DecoderMethod = "DecodeVecShiftR16ImmNarrow";
   let ParserMatchClass = Imm1_8Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR32 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 33);
@@ -911,7 +859,6 @@ def vecshiftR32 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR32OpValue";
   let DecoderMethod = "DecodeVecShiftR32Imm";
   let ParserMatchClass = Imm1_32Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR32Narrow : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 17);
@@ -919,7 +866,6 @@ def vecshiftR32Narrow : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR32OpValue";
   let DecoderMethod = "DecodeVecShiftR32ImmNarrow";
   let ParserMatchClass = Imm1_16Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR64 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 65);
@@ -927,7 +873,6 @@ def vecshiftR64 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR64OpValue";
   let DecoderMethod = "DecodeVecShiftR64Imm";
   let ParserMatchClass = Imm1_64Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftR64Narrow : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) > 0) && (((uint32_t)Imm) < 33);
@@ -935,7 +880,6 @@ def vecshiftR64Narrow : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftR64OpValue";
   let DecoderMethod = "DecodeVecShiftR64ImmNarrow";
   let ParserMatchClass = Imm1_32Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def Imm0_0Operand : AsmImmRange<0, 0>;
@@ -955,7 +899,6 @@ def vecshiftL8 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftL8OpValue";
   let DecoderMethod = "DecodeVecShiftL8Imm";
   let ParserMatchClass = Imm0_7Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftL16 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) < 16);
@@ -963,7 +906,6 @@ def vecshiftL16 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftL16OpValue";
   let DecoderMethod = "DecodeVecShiftL16Imm";
   let ParserMatchClass = Imm0_15Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftL32 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) < 32);
@@ -971,7 +913,6 @@ def vecshiftL32 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftL32OpValue";
   let DecoderMethod = "DecodeVecShiftL32Imm";
   let ParserMatchClass = Imm0_31Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def vecshiftL64 : Operand<i32>, TImmLeaf<i32, [{
   return (((uint32_t)Imm) < 64);
@@ -979,7 +920,6 @@ def vecshiftL64 : Operand<i32>, TImmLeaf<i32, [{
   let EncoderMethod = "getVecShiftL64OpValue";
   let DecoderMethod = "DecodeVecShiftL64Imm";
   let ParserMatchClass = Imm0_63Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 
@@ -1279,8 +1219,6 @@ class arith_shifted_reg<ValueType Ty, RegisterClass regclass, int width>
       ComplexPattern<Ty, 2, "SelectArithShiftedRegister", []> {
   let PrintMethod = "printShiftedRegister";
   let MIOperandInfo = (ops regclass, !cast<Operand>("arith_shift" # width));
-  let OperandType = "OPERAND_SHIFTED_REGISTER";
-  let OperandNamespace = "AArch64";
 }
 
 def arith_shifted_reg32 : arith_shifted_reg<i32, GPR32, 32>;
@@ -1301,7 +1239,6 @@ class logical_shift<int width> : Operand<i32> {
   let PrintMethod = "printShifter";
   let ParserMatchClass = !cast<AsmOperandClass>(
                          "LogicalShifterOperand" # width);
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def logical_shift32 : logical_shift<32>;
@@ -1312,8 +1249,6 @@ class logical_shifted_reg<ValueType Ty, RegisterClass regclass, Operand shiftop>
       ComplexPattern<Ty, 2, "SelectLogicalShiftedRegister", []> {
   let PrintMethod = "printShiftedRegister";
   let MIOperandInfo = (ops regclass, shiftop);
-  let OperandType = "OPERAND_SHIFTED_REGISTER";
-  let OperandNamespace = "AArch64";
 }
 
 def logical_shifted_reg32 : logical_shifted_reg<i32, GPR32, logical_shift32>;
@@ -1334,8 +1269,6 @@ def logical_vec_shift : Operand<i32> {
   let PrintMethod = "printShifter";
   let EncoderMethod = "getVecShifterOpValue";
   let ParserMatchClass = LogicalVecShifterOperand;
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 // A logical vector half-word shifter operand:
@@ -1345,8 +1278,6 @@ def logical_vec_hw_shift : Operand<i32> {
   let PrintMethod = "printShifter";
   let EncoderMethod = "getVecShifterOpValue";
   let ParserMatchClass = LogicalVecHalfWordShifterOperand;
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 // A vector move shifter operand:
@@ -1381,8 +1312,6 @@ class addsub_shifted_imm<ValueType Ty>
   let EncoderMethod = "getAddSubImmOpValue";
   let ParserMatchClass = AddSubImmOperand;
   let MIOperandInfo = (ops i32imm, i32imm);
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 class addsub_shifted_imm_neg<ValueType Ty>
@@ -1390,8 +1319,6 @@ class addsub_shifted_imm_neg<ValueType Ty>
   let EncoderMethod = "getAddSubImmOpValue";
   let ParserMatchClass = AddSubImmNegOperand;
   let MIOperandInfo = (ops i32imm, i32imm);
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 def addsub_shifted_imm32 : addsub_shifted_imm<i32>;
@@ -1413,8 +1340,6 @@ class neg_addsub_shifted_imm<ValueType Ty>
   let EncoderMethod = "getAddSubImmOpValue";
   let ParserMatchClass = AddSubImmOperand;
   let MIOperandInfo = (ops i32imm, i32imm);
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 def neg_addsub_shifted_imm32 : neg_addsub_shifted_imm<i32>;
@@ -1434,35 +1359,28 @@ def gi_neg_addsub_shifted_imm64 :
 def arith_extend : Operand<i32> {
   let PrintMethod = "printArithExtend";
   let ParserMatchClass = ExtendOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def arith_extend64 : Operand<i32> {
   let PrintMethod = "printArithExtend";
   let ParserMatchClass = ExtendOperand64;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // 'extend' that's a lsl of a 64-bit register.
 def arith_extendlsl64 : Operand<i32> {
   let PrintMethod = "printArithExtend";
   let ParserMatchClass = ExtendOperandLSL64;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class arith_extended_reg32<ValueType Ty> : Operand<Ty>,
                     ComplexPattern<Ty, 2, "SelectArithExtendedRegister", []> {
   let PrintMethod = "printExtendedRegister";
   let MIOperandInfo = (ops GPR32, arith_extend);
-  let OperandType = "OPERAND_SHIFTED_REGISTER";
-  let OperandNamespace = "AArch64";
 }
 
 class arith_extended_reg32to64<ValueType Ty> : Operand<Ty>,
                     ComplexPattern<Ty, 2, "SelectArithExtendedRegister", []> {
   let PrintMethod = "printExtendedRegister";
   let MIOperandInfo = (ops GPR32, arith_extend64);
-  let OperandType = "OPERAND_SHIFTED_REGISTER";
-  let OperandNamespace = "AArch64";
 }
 
 def arith_extended_reg32_i32 : arith_extended_reg32<i32>;
@@ -1544,7 +1462,6 @@ def fpimm64 : Operand<f64>,
 def fpimm8 : Operand<i32> {
   let ParserMatchClass = FPImmOperand;
   let PrintMethod = "printFPImmOperand";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def fpimm0 : FPImmLeaf<fAny, [{
@@ -1610,7 +1527,6 @@ let OperandNamespace = "AArch64", OperandType = "OPERAND_IMPLICIT_IMM_0",
   defm VectorIndex032b : VectorIndex<i32, VectorIndex0Operand,
                                      [{ return ((uint32_t)Imm) == 0; }]>;
 }
-let OperandType = "OPERAND_IMMEDIATE" in {
 defm VectorIndex1 : VectorIndex<i64, VectorIndex1Operand,
                                 [{ return ((uint64_t)Imm) == 1; }]>;
 defm VectorIndexB : VectorIndex<i64, VectorIndexBOperand,
@@ -1632,7 +1548,6 @@ defm VectorIndexS32b : VectorIndex<i32, VectorIndexSOperand,
                                    [{ return ((uint64_t)Imm) < 4; }]>;
 defm VectorIndexD32b : VectorIndex<i32, VectorIndexDOperand,
                                    [{ return ((uint64_t)Imm) < 2; }]>;
-}
 
 def SVEVectorIndexExtDupBOperand : AsmVectorIndex<0, 63, "SVE">;
 def SVEVectorIndexExtDupHOperand : AsmVectorIndex<0, 31, "SVE">;
@@ -1640,7 +1555,6 @@ def SVEVectorIndexExtDupSOperand : AsmVectorIndex<0, 15, "SVE">;
 def SVEVectorIndexExtDupDOperand : AsmVectorIndex<0, 7, "SVE">;
 def SVEVectorIndexExtDupQOperand : AsmVectorIndex<0, 3, "SVE">;
 
-let OperandType = "OPERAND_IMMEDIATE" in {
 defm sve_elm_idx_extdup_b
   : VectorIndex<i64, SVEVectorIndexExtDupBOperand,
                 [{ return ((uint64_t)Imm) < 64; }]>;
@@ -1656,7 +1570,6 @@ defm sve_elm_idx_extdup_d
 defm sve_elm_idx_extdup_q
   : VectorIndex<i64, SVEVectorIndexExtDupQOperand,
                 [{ return ((uint64_t)Imm) < 4; }]>;
-}
 
 def sme_elm_idx0_0 : Operand<i32>, TImmLeaf<i32, [{
   return ((uint32_t)Imm) == 0;
@@ -1672,28 +1585,24 @@ def sme_elm_idx0_1 : Operand<i32>, TImmLeaf<i32, [{
 }]> {
   let ParserMatchClass = Imm0_1Operand;
   let PrintMethod = "printMatrixIndex";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def sme_elm_idx0_3 : Operand<i32>, TImmLeaf<i32, [{
   return ((uint32_t)Imm) <= 3;
 }]> {
   let ParserMatchClass = Imm0_3Operand;
   let PrintMethod = "printMatrixIndex";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def sme_elm_idx0_7 : Operand<i32>, TImmLeaf<i32, [{
   return ((uint32_t)Imm) <= 7;
 }]> {
   let ParserMatchClass = Imm0_7Operand;
   let PrintMethod = "printMatrixIndex";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def sme_elm_idx0_15 : Operand<i32>, TImmLeaf<i32, [{
   return ((uint32_t)Imm) <= 15;
 }]> {
   let ParserMatchClass = Imm0_15Operand;
   let PrintMethod = "printMatrixIndex";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // SME2 vector select offset operands
@@ -1706,7 +1615,6 @@ def uimm3s8 : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 56 && ((Imm % 8) == 0); }], UImmS8XForm> {
   let PrintMethod = "printMatrixIndex<8>";
   let ParserMatchClass = UImm3s8Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class UImmScaledMemoryIndexedRange<int Width, int Scale, int OffsetVal> : AsmOperandClass {
@@ -1750,35 +1658,30 @@ def uimm1s2range : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 2 && ((Imm % 2) == 0); }], UImmS2XForm> {
   let PrintMethod = "printImmRangeScale<2, 1>";
   let ParserMatchClass = UImm1s2RangeOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm1s4range : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 4 && ((Imm % 4) == 0); }], UImmS4XForm> {
   let PrintMethod = "printImmRangeScale<4, 3>";
   let ParserMatchClass = UImm1s4RangeOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm2s2range : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 6 && ((Imm % 2) == 0); }], UImmS2XForm> {
   let PrintMethod = "printImmRangeScale<2, 1>";
   let ParserMatchClass = UImm2s2RangeOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm2s4range : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 12 && ((Imm % 4) == 0); }], UImmS4XForm> {
   let PrintMethod = "printImmRangeScale<4, 3>";
   let ParserMatchClass = UImm2s4RangeOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm3s2range : Operand<i64>, ImmLeaf<i64,
 [{ return Imm >= 0 && Imm <= 14 && ((Imm % 2) == 0); }], UImmS2XForm> {
   let PrintMethod = "printImmRangeScale<2, 1>";
   let ParserMatchClass = UImm3s2RangeOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 
@@ -1797,7 +1700,6 @@ def simdimmtype10 : Operand<i32>,
     }]>> {
   let ParserMatchClass = SIMDImmType10Operand;
   let PrintMethod = "printSIMDType10Operand";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 
@@ -1867,7 +1769,6 @@ def PHintInstOperand : AsmOperandClass {
 def phint_op : Operand<i32> {
     let ParserMatchClass = PHintInstOperand;
    let PrintMethod = "printPHintOp";
-   let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class STSHHI
@@ -1888,7 +1789,6 @@ def BarrierAsmOperand : AsmOperandClass {
 def barrier_op : Operand<i32> {
   let PrintMethod = "printBarrierOption";
   let ParserMatchClass = BarrierAsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def BarriernXSAsmOperand : AsmOperandClass {
   let Name = "BarriernXS";
@@ -1897,7 +1797,6 @@ def BarriernXSAsmOperand : AsmOperandClass {
 def barrier_nxs_op : Operand<i32> {
   let PrintMethod = "printBarriernXSOption";
   let ParserMatchClass = BarriernXSAsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 class CRmSystemI<Operand crmtype, bits<3> opc, string asm,
                  list<dag> pattern = []>
@@ -1932,7 +1831,6 @@ def mrs_sysreg_op : Operand<i32> {
   let ParserMatchClass = MRSSystemRegisterOperand;
   let DecoderMethod = "DecodeMRSSystemRegister";
   let PrintMethod = "printMRSSystemRegister";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def MSRSystemRegisterOperand : AsmOperandClass {
@@ -1944,7 +1842,6 @@ def msr_sysreg_op : Operand<i32> {
   let ParserMatchClass = MSRSystemRegisterOperand;
   let DecoderMethod = "DecodeMSRSystemRegister";
   let PrintMethod = "printMSRSystemRegister";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def PSBHintOperand : AsmOperandClass {
@@ -1961,7 +1858,6 @@ def psbhint_op : Operand<i32> {
       return false;
     return AArch64PSBHint::lookupPSBByEncoding(MCOp.getImm()) != nullptr;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def BTIHintOperand : AsmOperandClass {
@@ -1977,7 +1873,6 @@ def btihint_op : Operand<i32> {
       return false;
     return AArch64BTIHint::lookupBTIByEncoding(MCOp.getImm() ^ 32) != nullptr;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def CMHPriorityHintOperand : AsmOperandClass {
@@ -1993,7 +1888,6 @@ def CMHPriorityHint_op : Operand<i32> {
       return false;
     return AArch64CMHPriorityHint::lookupCMHPriorityHintByEncoding(MCOp.getImm()) != nullptr;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def TIndexHintOperand : AsmOperandClass {
@@ -2045,7 +1939,6 @@ def pstatefield4_op : Operand<i32> {
       return false;
     return AArch64SVCR::lookupPStateImm0_15ByEncoding(MCOp.getImm()) != nullptr;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // Instructions to modify PSTATE, no input reg
@@ -2086,7 +1979,6 @@ def pstatefield1_op : Operand<i32> {
       return false;
     return AArch64SVCR::lookupPStateImm0_1ByEncoding(MCOp.getImm()) != nullptr;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class MSRpstateImm0_1
@@ -2117,7 +2009,6 @@ def SysCRAsmOperand : AsmOperandClass {
 def sys_cr_op : Operand<i32> {
   let PrintMethod = "printSysCROperand";
   let ParserMatchClass = SysCRAsmOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class SystemXtI<bit L, string asm>
@@ -2162,7 +2053,6 @@ def rprfop : Operand<i32>, TImmLeaf<i32, [{
   }]> {
   let PrintMethod = "printRPRFMOperand";
   let ParserMatchClass = RangePrefetchOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // Branch (register) instructions:
@@ -2290,7 +2180,6 @@ multiclass AuthLoad<bit M, string asm, Operand opr> {
 def ccode : Operand<i32> {
   let PrintMethod = "printCondCode";
   let ParserMatchClass = CondCode;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def inv_ccode : Operand<i32> {
   // AL and NV are invalid in the aliases which use inv_ccode
@@ -2301,7 +2190,6 @@ def inv_ccode : Operand<i32> {
            MCOp.getImm() != AArch64CC::AL &&
            MCOp.getImm() != AArch64CC::NV;
   }];
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // Conditional branch target. 19-bit immediate. The low two bits of the target
@@ -2398,7 +2286,6 @@ class tbz_imm0_31<AsmOperandClass matcher> : Operand<i64>, ImmLeaf<i64, [{
   return (((uint32_t)Imm) < 32);
 }]> {
   let ParserMatchClass = matcher;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def tbz_imm0_31_diag : tbz_imm0_31<Imm0_31Operand>;
@@ -2408,7 +2295,6 @@ def tbz_imm32_63 : Operand<i64>, ImmLeaf<i64, [{
   return (((uint32_t)Imm) > 31) && (((uint32_t)Imm) < 64);
 }]> {
   let ParserMatchClass = TBZImm32_63Operand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 class BaseTestBranch<RegisterClass regtype, Operand immtype,
@@ -2923,17 +2809,14 @@ def movimm32_imm : Operand<i32> {
   let ParserMatchClass = AsmImmRange<0, 65535>;
   let EncoderMethod = "getMoveWideImmOpValue";
   let PrintMethod = "printImm";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def movimm32_shift : Operand<i32> {
   let PrintMethod = "printShifter";
   let ParserMatchClass = MovImm32ShifterOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def movimm64_shift : Operand<i32> {
   let PrintMethod = "printShifter";
   let ParserMatchClass = MovImm64ShifterOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in
@@ -3750,11 +3633,9 @@ multiclass CondSelectOp<bit op, bits<2> op2, string asm, PatFrag frag> {
 //---
 def maski8_or_more : Operand<i32>,
   ImmLeaf<i32, [{ return (Imm & 0xff) == 0xff; }]> {
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def maski16_or_more : Operand<i32>,
   ImmLeaf<i32, [{ return (Imm & 0xffff) == 0xffff; }]> {
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 
@@ -3812,7 +3693,6 @@ class uimm12_scaled<int Scale> : Operand<i64> {
   let EncoderMethod
    = "getLdStUImm12OpValue<AArch64::fixup_aarch64_ldst_imm12_scale" # Scale # ">";
   let PrintMethod = "printUImm12Offset<" # Scale # ">";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 def uimm12s1 : uimm12_scaled<1>;
@@ -3889,7 +3769,6 @@ def PrefetchOperand : AsmOperandClass {
 def prfop : Operand<i32> {
   let PrintMethod = "printPrefetchOp";
   let ParserMatchClass = PrefetchOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 let mayLoad = 0, mayStore = 0, hasSideEffects = 1 in
@@ -4025,8 +3904,6 @@ class ro_extend<AsmOperandClass ParserClass, string Reg, int Width>
   let DecoderMethod = "DecodeMemExtend";
   let EncoderMethod = "getMemExtendOpValue";
   let MIOperandInfo = (ops i32imm:$signed, i32imm:$doshift);
-  let OperandType = "OPERAND_SHIFTED_IMMEDIATE";
-  let OperandNamespace = "AArch64";
 }
 
 def ro_Wextend8   : ro_extend<MemWExtend8Operand,   "w", 8>;
@@ -11858,7 +11735,6 @@ def complexrotateop : Operand<i32>, TImmLeaf<i32, [{ return Imm >= 0 && Imm <= 2
 }]>> {
   let ParserMatchClass = ComplexRotationOperand<90, 0, "Even">;
   let PrintMethod = "printComplexRotationOp<90, 0>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 def complexrotateopodd : Operand<i32>, TImmLeaf<i32, [{ return Imm >= 0 && Imm <= 270;  }],
                                                   SDNodeXForm<imm, [{
@@ -11866,7 +11742,6 @@ def complexrotateopodd : Operand<i32>, TImmLeaf<i32, [{ return Imm >= 0 && Imm <
 }]>> {
   let ParserMatchClass = ComplexRotationOperand<180, 90, "Odd">;
   let PrintMethod = "printComplexRotationOp<180, 90>";
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 let mayLoad = 0, mayStore = 0, hasSideEffects = 0, mayRaiseFPException = 1, Uses = [FPCR] in
 class BaseSIMDThreeSameVectorComplex<bit Q, bit U, bits<2> size, bits<3> opcode,
@@ -13260,7 +13135,6 @@ def LSLImm3ShiftOperand : AsmOperandClass {
 def lsl_imm3_shift_operand : Operand<i64> {
   let PrintMethod = "printShifter";
   let ParserMatchClass = LSLImm3ShiftOperand;
-  let OperandType = "OPERAND_IMMEDIATE";
 }
 
 // Base CPA scalar add/subtract with lsl #imm3 shift

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
index f6d9855e78612..7774d07a214bf 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h
@@ -71,8 +71,6 @@ namespace AArch64 {
 enum OperandType {
   OPERAND_IMPLICIT_IMM_0 = MCOI::OPERAND_FIRST_TARGET,
   OPERAND_SHIFT_MSL,
-  OPERAND_SHIFTED_REGISTER,
-  OPERAND_SHIFTED_IMMEDIATE,
 };
 } // namespace AArch64
 

diff  --git a/llvm/test/tools/llvm-exegesis/AArch64/all-opcodes.test b/llvm/test/tools/llvm-exegesis/AArch64/all-opcodes.test
index c2d4fb8ec6428..4644b48bef1ae 100644
--- a/llvm/test/tools/llvm-exegesis/AArch64/all-opcodes.test
+++ b/llvm/test/tools/llvm-exegesis/AArch64/all-opcodes.test
@@ -2,19 +2,9 @@
 # all supported opcodes and gracefully handle unsupported ones.
 
 # RUN: llvm-exegesis --mtriple=aarch64-linux-gnu --mcpu=cortex-a55 --benchmark-phase=prepare-and-assemble-snippet \
-# RUN:               -random-generator-seed=55 \
 # RUN:               --mode=latency --opcode-index=-1 | FileCheck %s
 # RUN: llvm-exegesis --mtriple=aarch64-linux-gnu --mcpu=cortex-a55 --benchmark-phase=prepare-and-assemble-snippet \
-# RUN:               -random-generator-seed=55 \
 # RUN:               --mode=uops --opcode-index=-1 | FileCheck %s
 
-# RUN: llvm-exegesis --mtriple=aarch64-linux-gnu --mcpu=neoverse-v2 --benchmark-phase=prepare-and-assemble-snippet \
-# RUN:               -random-generator-seed=2 \
-# RUN:               --mode=latency --opcode-index=-1 | FileCheck --check-prefix CHECK-V2 %s
-# RUN: llvm-exegesis --mtriple=aarch64-linux-gnu --mcpu=neoverse-v2 --benchmark-phase=prepare-and-assemble-snippet \
-# RUN:               -random-generator-seed=2 \
-# RUN:               --mode=uops --opcode-index=-1 | FileCheck --check-prefix CHECK-V2 %s
-
-# One snippet per llvm opcode. Not all opcodes available on any given target.
-# CHECK-COUNT-2572: assembled_snippet: {{.*}}
-# CHECK-V2-COUNT-4601: assembled_snippet: {{.*}}
+# 100 means "quite a lot"
+# CHECK-COUNT-100: assembled_snippet: {{.*}}

diff  --git a/llvm/test/tools/llvm-exegesis/AArch64/setReg_init_check.s b/llvm/test/tools/llvm-exegesis/AArch64/setReg_init_check.s
index e27edacb54ef6..3ef664f899551 100644
--- a/llvm/test/tools/llvm-exegesis/AArch64/setReg_init_check.s
+++ b/llvm/test/tools/llvm-exegesis/AArch64/setReg_init_check.s
@@ -73,108 +73,3 @@ FPCR-ASM:         movi    d{{[0-9]+}}, #0000000000000000
 FPCR-ASM-NEXT:    mov     x8, #0x0
 FPCR-ASM-NEXT:    msr     FPCR, x8
 FPCR-ASM-NEXT:    bfcvt   h{{[0-9]+}}, s{{[0-9]+}}
-
-## NZCV Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ADCSWr --benchmark-phase=assemble-measured-code 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=NZCV-ASM < %t.s
-NZCV-ASM:         <foo>:
-NZCV-ASM:         mrs     x8, NZCV
-NZCV-ASM-NEXT:    mov     x9, #0xf0000000
-NZCV-ASM-NEXT:    bic     x8, x8, x9
-NZCV-ASM-NEXT:    msr     NZCV, x8
-NZCV-ASM-NEXT:    adcs    w{{[0-9]+}}, w{{[0-9]+}}, w{{[0-9]+}}
-
-## FFR Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=GLDFF1B_D --benchmark-phase=assemble-measured-code 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=FFR-ASM < %t.s
-FFR-ASM:         <foo>:
-FFR-ASM:         setffr
-FFR-ASM-NEXT:    ldff1b    { z{{[0-9]+}}.d }, p{{[0-9]+}}/z, [x{{[0-9]+}}, z{{[0-9]+}}.d]
-
-# NOTE: Multi-register classes below can wrap around, e.g. { v31.1d, v0.1d }
-# It's not possible to write a FileCheck pattern to support all cases, so we
-# must seed to get consistent output.
-
-## WSeqPair Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=CASPW --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=WSEQPAIR-ASM < %t.s
-WSEQPAIR-ASM:         <foo>:
-WSEQPAIR-ASM:         mov     w12, #0x0
-WSEQPAIR-ASM-NEXT:    mov     w13, #0x0
-WSEQPAIR-ASM-NEXT:    mov     w4, #0x0
-WSEQPAIR-ASM-NEXT:    mov     w5, #0x0
-WSEQPAIR-ASM:         casp    w12, w13, w4, w5, [x30]
-
-## XSeqPair Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=CASPX --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=XSEQPAIR-ASM < %t.s
-XSEQPAIR-ASM:         <foo>:
-XSEQPAIR-ASM:         mov     x12, #0x0
-XSEQPAIR-ASM-NEXT:    mov     x13, #0x0
-XSEQPAIR-ASM-NEXT:    mov     x4, #0x0
-XSEQPAIR-ASM-NEXT:    mov     x5, #0x0
-XSEQPAIR-ASM:         casp    x12, x13, x4, x5, [x30]
-
-## DD Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Twov1d_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=DD-ASM < %t.s
-DD-ASM:         <foo>:
-DD-ASM:         movi     d5, #0000000000000000
-DD-ASM-NEXT:    movi     d6, #0000000000000000
-DD-ASM:         st1      { v5.1d, v6.1d }, [x11], x30
-
-## DDD Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Threev1d_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=DDD-ASM < %t.s
-DDD-ASM:         <foo>:
-DDD-ASM:         movi     d5, #0000000000000000
-DDD-ASM-NEXT:    movi     d6, #0000000000000000
-DDD-ASM-NEXT:    movi     d7, #0000000000000000
-DDD-ASM:         st1      { v5.1d, v6.1d, v7.1d }, [x11], x30
-
-## DDDD Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Fourv1d_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=DDDD-ASM < %t.s
-DDDD-ASM:         <foo>:
-DDDD-ASM:         movi     d5, #0000000000000000
-DDDD-ASM-NEXT:    movi     d6, #0000000000000000
-DDDD-ASM-NEXT:    movi     d7, #0000000000000000
-DDDD-ASM-NEXT:    movi     d8, #0000000000000000
-DDDD-ASM:         st1      { v5.1d, v6.1d, v7.1d, v8.1d }, [x11], x30
-
-## QQ Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Twov16b_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=QQ-ASM < %t.s
-QQ-ASM:         <foo>:
-QQ-ASM:         movi     v5.2d, #0000000000000000
-QQ-ASM-NEXT:    movi     v6.2d, #0000000000000000
-QQ-ASM:         st1      { v5.16b, v6.16b }, [x11], x30
-
-## QQQ Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Threev16b_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=QQQ-ASM < %t.s
-QQQ-ASM:         <foo>:
-QQQ-ASM:         movi     v5.2d, #0000000000000000
-QQQ-ASM-NEXT:    movi     v6.2d, #0000000000000000
-QQQ-ASM-NEXT:    movi     v7.2d, #0000000000000000
-QQQ-ASM:         st1      { v5.16b, v6.16b, v7.16b }, [x11], x30
-
-## QQQQ Register Class Initialization Testcase
-RUN: llvm-exegesis -mtriple=aarch64 -mcpu=neoverse-v2 -mode=latency --dump-object-to-disk=%d --opcode-name=ST1Fourv16b_POST --benchmark-phase=assemble-measured-code --random-generator-seed=2 2>&1
-RUN: llvm-objdump -d %d > %t.s
-RUN: FileCheck %s --check-prefix=QQQQ-ASM < %t.s
-QQQQ-ASM:         <foo>:
-QQQQ-ASM:         movi     v5.2d, #0000000000000000
-QQQQ-ASM-NEXT:    movi     v6.2d, #0000000000000000
-QQQQ-ASM-NEXT:    movi     v7.2d, #0000000000000000
-QQQQ-ASM-NEXT:    movi     v8.2d, #0000000000000000
-QQQQ-ASM:         st1      { v5.16b, v6.16b, v7.16b, v8.16b }, [x11], x30

diff  --git a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
index 8e324d0d8fee9..0e73adab15d86 100644
--- a/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
+++ b/llvm/tools/llvm-exegesis/lib/AArch64/Target.cpp
@@ -70,13 +70,6 @@ static MCInst loadPPRImmediate(MCRegister Reg, unsigned RegBitWidth,
       .addImm(31); // All lanes true for 16 bits
 }
 
-static MCInst loadFFRImmediate(MCRegister Reg, unsigned RegBitWidth,
-                               const APInt &Value) {
-  assert(Value.getZExtValue() == 0 && "Expected initialisation value 0");
-  // For first-fault register FFR, we set it to a true
-  return MCInstBuilder(AArch64::SETFFR);
-}
-
 // Generates instructions to load an immediate value into an FPCR register.
 static std::vector<MCInst>
 loadFPCRImmediate(MCRegister Reg, unsigned RegBitWidth, const APInt &Value) {
@@ -87,42 +80,6 @@ loadFPCRImmediate(MCRegister Reg, unsigned RegBitWidth, const APInt &Value) {
   return {LoadImm, MoveToFPCR};
 }
 
-// Generates instructions to load an immediate value into a pair of W registers
-static std::vector<MCInst> loadWSeqPairImmediate(MCRegister Reg,
-                                                 unsigned RegBitWidth,
-                                                 const APInt &Value) {
-  MCRegister EvenReg = (Reg - AArch64::W0_W1) * 2 + AArch64::W0 + 0;
-  MCRegister OddReg = (Reg - AArch64::W0_W1) * 2 + AArch64::W0 + 1;
-  assert(Value.getBitWidth() <= RegBitWidth &&
-         "Value must fit in the Register");
-
-  MCInst LoadEven = MCInstBuilder(getLoadImmediateOpcode(RegBitWidth))
-                        .addReg(EvenReg)
-                        .addImm(Value.getZExtValue());
-  MCInst LoadOdd = MCInstBuilder(getLoadImmediateOpcode(RegBitWidth))
-                       .addReg(OddReg)
-                       .addImm(Value.getZExtValue());
-  return {LoadEven, LoadOdd};
-}
-
-// Generates instructions to load an immediate value into a pair of X registers
-static std::vector<MCInst> loadXSeqPairImmediate(MCRegister Reg,
-                                                 unsigned RegBitWidth,
-                                                 const APInt &Value) {
-  MCRegister EvenReg = (Reg - AArch64::X0_X1) * 2 + AArch64::X0 + 0;
-  MCRegister OddReg = (Reg - AArch64::X0_X1) * 2 + AArch64::X0 + 1;
-  assert(Value.getBitWidth() <= RegBitWidth &&
-         "Value must fit in the Register");
-
-  MCInst LoadEven = MCInstBuilder(getLoadImmediateOpcode(RegBitWidth))
-                        .addReg(EvenReg)
-                        .addImm(Value.getZExtValue());
-  MCInst LoadOdd = MCInstBuilder(getLoadImmediateOpcode(RegBitWidth))
-                       .addReg(OddReg)
-                       .addImm(Value.getZExtValue());
-  return {LoadEven, LoadOdd};
-}
-
 // Fetch base-instruction to load an FP immediate value into a register.
 static unsigned getLoadFPImmediateOpcode(unsigned RegBitWidth) {
   switch (RegBitWidth) {
@@ -149,59 +106,6 @@ static MCInst loadFPImmediate(MCRegister Reg, unsigned RegBitWidth,
   return Instructions;
 }
 
-// Generates instructions to load an immediate value into a DD, DDD, DDDD,
-// QQ, QQQ or QQQQ Reg
-static std::vector<MCInst>
-loadDQ234RegImmediate(MCRegister Reg, unsigned RegBitWidth, const APInt &Value,
-                      MCRegister BaseReg, unsigned RegCount) {
-  MCRegister RegDorQ0 = AArch64::D0;
-  if (RegBitWidth == 128)
-    RegDorQ0 = AArch64::Q0;
-
-  MCRegister RegDQ0 = RegDorQ0 + ((Reg - BaseReg + 0) % 32);
-  MCRegister RegDQ1 = RegDorQ0 + ((Reg - BaseReg + 1) % 32);
-  MCRegister RegDQ2 = RegDorQ0 + ((Reg - BaseReg + 2) % 32);
-  MCRegister RegDQ3 = RegDorQ0 + ((Reg - BaseReg + 3) % 32);
-
-  MCInst LoadDQ0 = loadFPImmediate(RegDQ0, RegBitWidth, Value);
-  MCInst LoadDQ1 = loadFPImmediate(RegDQ1, RegBitWidth, Value);
-  if (RegCount == 2)
-    return {LoadDQ0, LoadDQ1};
-  MCInst LoadDQ2 = loadFPImmediate(RegDQ2, RegBitWidth, Value);
-  if (RegCount == 3)
-    return {LoadDQ0, LoadDQ1, LoadDQ2};
-  MCInst LoadDQ3 = loadFPImmediate(RegDQ3, RegBitWidth, Value);
-  assert((RegCount == 4) && "ExpectedRegCount 2, 3 or 4");
-  return {LoadDQ0, LoadDQ1, LoadDQ2, LoadDQ3};
-}
-
-// Generates instructions to load immediate in the flags register
-static std::vector<MCInst>
-loadNZCVImmediate(MCRegister Reg, unsigned RegBitWidth, const APInt &Value) {
-  MCRegister TempReg1 = AArch64::X8;
-  MCRegister TempReg2 = AArch64::X9;
-
-  MCInst MoveFromNZCV =
-      MCInstBuilder(AArch64::MRS).addReg(TempReg1).addImm(AArch64SysReg::NZCV);
-  MCInst LoadMask =
-      MCInstBuilder(AArch64::MOVi64imm).addReg(TempReg2).addImm(0xf0000000);
-  MCInst BitClear = MCInstBuilder(AArch64::BICXrr)
-                        .addReg(TempReg1)
-                        .addReg(TempReg1)
-                        .addReg(TempReg2);
-  MCInst MoveToNZCV =
-      MCInstBuilder(AArch64::MSR).addImm(AArch64SysReg::NZCV).addReg(TempReg1);
-
-  if (Value.getZExtValue() == 0)
-    return {MoveFromNZCV, LoadMask, BitClear, MoveToNZCV};
-
-  MCInst OrrMask = MCInstBuilder(AArch64::ORRXrr)
-                       .addReg(TempReg1)
-                       .addReg(TempReg1)
-                       .addImm(Value.getZExtValue());
-  return {MoveFromNZCV, LoadMask, BitClear, OrrMask, MoveToNZCV};
-}
-
 #include "AArch64GenExegesis.inc"
 
 namespace {
@@ -242,30 +146,6 @@ class ExegesisAArch64Target : public ExegesisTarget {
       return {loadZPRImmediate(Reg, 128, Value)};
     if (Reg == AArch64::FPCR)
       return {loadFPCRImmediate(Reg, 32, Value)};
-    if (Reg == AArch64::NZCV)
-      return {loadNZCVImmediate(Reg, 32, Value)};
-    if (Reg == AArch64::FFR)
-      return {loadFFRImmediate(Reg, 32, Value)};
-    if (AArch64::WSeqPairsClassRegClass.contains(Reg))
-      return {loadWSeqPairImmediate(Reg, 32, Value)};
-    if (AArch64::XSeqPairsClassRegClass.contains(Reg))
-      return {loadXSeqPairImmediate(Reg, 64, Value)};
-    if (AArch64::DDRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 64, Value, AArch64::D0_D1, 2);
-    if (AArch64::DDDRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 64, Value, AArch64::D0_D1_D2, 3);
-    if (AArch64::DDDDRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 64, Value, AArch64::D0_D1_D2_D3, 4);
-    if (AArch64::QQRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 128, Value, AArch64::Q0_Q1, 2);
-    if (AArch64::QQQRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 128, Value, AArch64::Q0_Q1_Q2, 3);
-    if (AArch64::QQQQRegClass.contains(Reg))
-      return loadDQ234RegImmediate(Reg, 128, Value, AArch64::Q0_Q1_Q2_Q3, 4);
-    // TODO if (AArch64::PNRRegClass.contains(Reg))
-    // TODO if (AArch64::ZPRRegClass.contains(Reg))
-    // TODO if (AArch64::ZPR2RegClass.contains(Reg))
-    // TODO if (AArch64::ZPR2StridedOrContiguousRegClass.contains(Reg))
 
     errs() << "setRegTo is not implemented, results will be unreliable\n";
     return {};
@@ -344,13 +224,6 @@ Error ExegesisAArch64Target::randomizeTargetMCOperand(
   case llvm::AArch64::OPERAND_IMPLICIT_IMM_0:
     AssignedValue = MCOperand::createImm(0);
     return Error::success();
-  case llvm::AArch64::OPERAND_SHIFTED_REGISTER:
-    // TODO it would be better if these operands were randomized
-    AssignedValue = MCOperand::createReg(0);
-    return Error::success();
-  case llvm::AArch64::OPERAND_SHIFTED_IMMEDIATE:
-    AssignedValue = MCOperand::createImm(0);
-    return Error::success();
   case MCOI::OperandType::OPERAND_PCREL:
     AssignedValue = MCOperand::createImm(8);
     return Error::success();


        


More information about the llvm-branch-commits mailing list