[llvm] [AArch64] Add DC CIGDPAPA and DC CIPAPA instructions (PR #122718)
Jonathan Thackray via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 13 06:51:49 PST 2025
https://github.com/jthackray created https://github.com/llvm/llvm-project/pull/122718
Add `DC CIGDPAPA` and `DC CIPAPA` instructions, for the RME extension, which was added as part of Armv9.1-A, but these instructions were missed.
>From b3cb1240fbd78306ba91da331e7d0d48ba4db6b8 Mon Sep 17 00:00:00 2001
From: Jonathan Thackray <jonathan.thackray at arm.com>
Date: Mon, 13 Jan 2025 14:27:04 +0000
Subject: [PATCH] [AArch64] Add DC CIGDPAPA and DC CIPAPA instructions
Add `DC CIGDPAPA` and `DC CIPAPA` instructions, for the RME extension,
which was added as part of Armv9.1-A, but these instructions were missed.
---
llvm/lib/Target/AArch64/AArch64SystemOperands.td | 5 +++++
llvm/test/MC/AArch64/armv9.1a-rme.s | 5 +++++
llvm/test/MC/Disassembler/AArch64/armv9a-rme.txt | 7 +++++++
3 files changed, 17 insertions(+)
diff --git a/llvm/lib/Target/AArch64/AArch64SystemOperands.td b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
index df5db8fa514a1b..8f6c593d3e681f 100644
--- a/llvm/lib/Target/AArch64/AArch64SystemOperands.td
+++ b/llvm/lib/Target/AArch64/AArch64SystemOperands.td
@@ -246,6 +246,11 @@ def : DC<"CIPAE", 0b100, 0b0111, 0b1110, 0b000>;
def : DC<"CIGDPAE", 0b100, 0b0111, 0b1110, 0b111>;
}
+let Requires = [{ {AArch64::FeatureRME} }] in {
+def : DC<"CIGDPAPA", 0b110, 0b0111, 0b1110, 0b101>;
+def : DC<"CIPAPA", 0b110, 0b0111, 0b1110, 0b001>;
+}
+
let Requires = [{ {AArch64::FeatureOCCMO} }] in {
// Outer cacheable CMO (FEAT_OCCMO)
def : DC<"CIVAOC", 0b011, 0b0111, 0b1111, 0b000>;
diff --git a/llvm/test/MC/AArch64/armv9.1a-rme.s b/llvm/test/MC/AArch64/armv9.1a-rme.s
index 80b1d7d57a4631..5f455fbb569c21 100644
--- a/llvm/test/MC/AArch64/armv9.1a-rme.s
+++ b/llvm/test/MC/AArch64/armv9.1a-rme.s
@@ -68,3 +68,8 @@ sys #6, c8, c7, #4
// CHECK-NO-RME: sys #6, c8, c4, #7
// CHECK-NO-RME: sys #6, c8, c1, #4
// CHECK-NO-RME: sys #6, c8, c7, #4
+
+dc cigdpapa, x0
+dc cipapa, x0
+// CHECK: dc cigdpapa, x0 // encoding: [0xa0,0x7e,0x0e,0xd5]
+// CHECK: dc cipapa, x0 // encoding: [0x20,0x7e,0x0e,0xd5]
diff --git a/llvm/test/MC/Disassembler/AArch64/armv9a-rme.txt b/llvm/test/MC/Disassembler/AArch64/armv9a-rme.txt
index 25812004be2c05..00572be6f91a0b 100644
--- a/llvm/test/MC/Disassembler/AArch64/armv9a-rme.txt
+++ b/llvm/test/MC/Disassembler/AArch64/armv9a-rme.txt
@@ -23,3 +23,10 @@
# CHECK-NO-RME: sys #6, c8, c4, #7
# CHECK-NO-RME: sys #6, c8, c1, #4
# CHECK-NO-RME: sys #6, c8, c7, #4
+
+[0xa0,0x7e,0x0e,0xd5]
+[0x20,0x7e,0x0e,0xd5]
+# CHECK: dc cigdpapa, x0
+# CHECK: dc cipapa, x0
+# CHECK-NO-RME: sys #6, c7, c14, #5, x0
+# CHECK-NO-RME: sys #6, c7, c14, #1, x0
More information about the llvm-commits
mailing list