[llvm] 1ae4726 - [AArch64] Mark some operands as OPERAND_IMMEDIATE.

David Green via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 14 08:58:56 PDT 2023


Author: David Green
Date: 2023-07-14T16:58:51+01:00
New Revision: 1ae4726ba24de0b23a312b53fa9993ad9d5d166c

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

LOG: [AArch64] Mark some operands as OPERAND_IMMEDIATE.

This allows llvm-exegesis to generate them as constants.

Added: 
    llvm/test/tools/llvm-exegesis/AArch64/immediates.s

Modified: 
    llvm/lib/Target/AArch64/AArch64InstrFormats.td
    llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index f16bb0b33b8721..f46d6a1919b699 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -861,6 +861,11 @@ let DiagnosticType = "LogicalSecondSource" in {
     let RenderMethod = "addLogicalImmNotOperands<int64_t>";
   }
 }
+
+def Imm0_127Operand : AsmImmRange<0, 127>;
+
+let OperandType = "OPERAND_IMMEDIATE" in {
+
 def logical_imm32 : Operand<i32>, IntImmLeaf<i32, [{
   return AArch64_AM::isLogicalImmediate(Imm.getZExtValue(), 32);
 }], logical_imm32_XFORM> {
@@ -893,7 +898,7 @@ def timm64_0_65535 : Operand<i64>, TImmLeaf<i64, [{
 def imm64_0_65535 : Operand<i64>, ImmLeaf<i64, [{
   return ((uint64_t)Imm) < 65536;
 }]>;
-}
+} // ParserMatchClass
 
 def imm0_255 : Operand<i32>, ImmLeaf<i32, [{
   return ((uint32_t)Imm) < 256;
@@ -903,7 +908,6 @@ def imm0_255 : Operand<i32>, ImmLeaf<i32, [{
 }
 
 // imm0_127 predicate - True if the immediate is in the range [0,127]
-def Imm0_127Operand : AsmImmRange<0, 127>;
 def imm0_127 : Operand<i32>, ImmLeaf<i32, [{
   return ((uint32_t)Imm) < 128;
 }]> {
@@ -1040,6 +1044,8 @@ def timm32_0_255 : Operand<i32>, TImmLeaf<i32, [{
   let ParserMatchClass = Imm0_255Operand;
 }
 
+} // let OperandType = "OPERAND_IMMEDIATE"
+
 // An arithmetic shifter operand:
 //  {7-6} - shift type: 00 = lsl, 01 = lsr, 10 = asr
 //  {5-0} - imm6

diff  --git a/llvm/test/tools/llvm-exegesis/AArch64/immediates.s b/llvm/test/tools/llvm-exegesis/AArch64/immediates.s
new file mode 100644
index 00000000000000..9621166e725579
--- /dev/null
+++ b/llvm/test/tools/llvm-exegesis/AArch64/immediates.s
@@ -0,0 +1,3 @@
+# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --opcode-name=EXTRWrri  --benchmark-phase=prepare-and-assemble-snippet | FileCheck %s
+
+# CHECK: 'EXTRWrri {{W.*}} {{W.*}} {{W.*}} i_0x1'

diff  --git a/llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg b/llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg
index 55b3963f60312e..0c7920cdc764b9 100644
--- a/llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg
+++ b/llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg
@@ -2,5 +2,5 @@ if not ("AArch64" in config.root.targets):
     # We need support for AArch64.
     config.unsupported = True
 elif not ("aarch64" in config.root.host_triple):
-    # We need to be running on an PPC host.
+    # We need to be running on an AArch64 host.
     config.unsupported = True


        


More information about the llvm-commits mailing list