[llvm] [BOLT][NFC] Add MCPlusBuilder unittests for PAuth helpers (PR #162251)
Gergely Bálint via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 8 04:49:13 PDT 2025
https://github.com/bgergely0 updated https://github.com/llvm/llvm-project/pull/162251
>From f5b7079477c149a433a6d9cb06b4363dbd5ecee6 Mon Sep 17 00:00:00 2001
From: Gergely Balint <gergely.balint at arm.com>
Date: Wed, 1 Oct 2025 09:47:48 +0000
Subject: [PATCH] [BOLT][NFC] Add MCPlusBuilder unittests for PAuth helpers
PR #120064 added several MCPlusBuilder helpers for recognising
instructions which sign or authenticate the link register.
This patch adds MCPlusBuilder unittests for these helpers.
---
bolt/unittests/Core/MCPlusBuilder.cpp | 56 +++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/bolt/unittests/Core/MCPlusBuilder.cpp b/bolt/unittests/Core/MCPlusBuilder.cpp
index af4cc9da9c9f4..344b4535186d2 100644
--- a/bolt/unittests/Core/MCPlusBuilder.cpp
+++ b/bolt/unittests/Core/MCPlusBuilder.cpp
@@ -261,6 +261,62 @@ TEST_P(MCPlusBuilderTester, testAccessedRegsMultipleDefs) {
{AArch64::W5, AArch64::X5, AArch64::W5_HI});
}
+TEST_P(MCPlusBuilderTester, AArch64_Psign_Pauth_variants) {
+ if (GetParam() != Triple::aarch64)
+ GTEST_SKIP();
+
+ MCInst Paciasp = MCInstBuilder(AArch64::PACIASP);
+ MCInst Pacibsp = MCInstBuilder(AArch64::PACIBSP);
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Paciasp));
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(Pacibsp));
+
+ MCInst PaciaSPLR =
+ MCInstBuilder(AArch64::PACIA).addReg(AArch64::LR).addReg(AArch64::SP);
+ MCInst PacibSPLR =
+ MCInstBuilder(AArch64::PACIB).addReg(AArch64::LR).addReg(AArch64::SP);
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(PaciaSPLR));
+ ASSERT_TRUE(BC->MIB->isPSignOnLR(PacibSPLR));
+
+ MCInst Pacia1716 = MCInstBuilder(AArch64::PACIA1716);
+ MCInst Pacib1716 = MCInstBuilder(AArch64::PACIB1716);
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacia1716));
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacib1716));
+
+ MCInst Pacia171615 = MCInstBuilder(AArch64::PACIA171615);
+ MCInst Pacib171615 = MCInstBuilder(AArch64::PACIB171615);
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacia171615));
+ ASSERT_FALSE(BC->MIB->isPSignOnLR(Pacib171615));
+
+ MCInst Autiasp = MCInstBuilder(AArch64::AUTIASP);
+ MCInst Autibsp = MCInstBuilder(AArch64::AUTIBSP);
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autiasp));
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(Autibsp));
+
+ MCInst AutiaSPLR =
+ MCInstBuilder(AArch64::AUTIA).addReg(AArch64::LR).addReg(AArch64::SP);
+ MCInst AutibSPLR =
+ MCInstBuilder(AArch64::AUTIB).addReg(AArch64::LR).addReg(AArch64::SP);
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(AutiaSPLR));
+ ASSERT_TRUE(BC->MIB->isPAuthOnLR(AutibSPLR));
+
+ MCInst Autia1716 = MCInstBuilder(AArch64::AUTIA1716);
+ MCInst Autib1716 = MCInstBuilder(AArch64::AUTIB1716);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autia1716));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autib1716));
+
+ MCInst Autia171615 = MCInstBuilder(AArch64::AUTIA171615);
+ MCInst Autib171615 = MCInstBuilder(AArch64::AUTIB171615);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autia171615));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Autib171615));
+
+ MCInst Retaa = MCInstBuilder(AArch64::RETAA);
+ MCInst Retab = MCInstBuilder(AArch64::RETAB);
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Retaa));
+ ASSERT_FALSE(BC->MIB->isPAuthOnLR(Retab));
+ ASSERT_TRUE(BC->MIB->isPAuthAndRet(Retaa));
+ ASSERT_TRUE(BC->MIB->isPAuthAndRet(Retab));
+}
+
#endif // AARCH64_AVAILABLE
#ifdef X86_AVAILABLE
More information about the llvm-commits
mailing list