Skip to content

Commit 1ae4726

Browse files
committed
[AArch64] Mark some operands as OPERAND_IMMEDIATE.
This allows llvm-exegesis to generate them as constants.
1 parent 76f2009 commit 1ae4726

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

llvm/lib/Target/AArch64/AArch64InstrFormats.td

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,11 @@ let DiagnosticType = "LogicalSecondSource" in {
861861
let RenderMethod = "addLogicalImmNotOperands<int64_t>";
862862
}
863863
}
864+
865+
def Imm0_127Operand : AsmImmRange<0, 127>;
866+
867+
let OperandType = "OPERAND_IMMEDIATE" in {
868+
864869
def logical_imm32 : Operand<i32>, IntImmLeaf<i32, [{
865870
return AArch64_AM::isLogicalImmediate(Imm.getZExtValue(), 32);
866871
}], logical_imm32_XFORM> {
@@ -893,7 +898,7 @@ def timm64_0_65535 : Operand<i64>, TImmLeaf<i64, [{
893898
def imm64_0_65535 : Operand<i64>, ImmLeaf<i64, [{
894899
return ((uint64_t)Imm) < 65536;
895900
}]>;
896-
}
901+
} // ParserMatchClass
897902

898903
def imm0_255 : Operand<i32>, ImmLeaf<i32, [{
899904
return ((uint32_t)Imm) < 256;
@@ -903,7 +908,6 @@ def imm0_255 : Operand<i32>, ImmLeaf<i32, [{
903908
}
904909

905910
// imm0_127 predicate - True if the immediate is in the range [0,127]
906-
def Imm0_127Operand : AsmImmRange<0, 127>;
907911
def imm0_127 : Operand<i32>, ImmLeaf<i32, [{
908912
return ((uint32_t)Imm) < 128;
909913
}]> {
@@ -1040,6 +1044,8 @@ def timm32_0_255 : Operand<i32>, TImmLeaf<i32, [{
10401044
let ParserMatchClass = Imm0_255Operand;
10411045
}
10421046

1047+
} // let OperandType = "OPERAND_IMMEDIATE"
1048+
10431049
// An arithmetic shifter operand:
10441050
// {7-6} - shift type: 00 = lsl, 01 = lsr, 10 = asr
10451051
// {5-0} - imm6
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# RUN: llvm-exegesis --mtriple=aarch64 --mcpu=neoverse-v2 --mode=latency --opcode-name=EXTRWrri --benchmark-phase=prepare-and-assemble-snippet | FileCheck %s
2+
3+
# CHECK: 'EXTRWrri {{W.*}} {{W.*}} {{W.*}} i_0x1'

llvm/test/tools/llvm-exegesis/AArch64/lit.local.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ if not ("AArch64" in config.root.targets):
22
# We need support for AArch64.
33
config.unsupported = True
44
elif not ("aarch64" in config.root.host_triple):
5-
# We need to be running on an PPC host.
5+
# We need to be running on an AArch64 host.
66
config.unsupported = True

0 commit comments

Comments
 (0)