[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