https://github.com/pcc updated https://github.com/llvm/llvm-project/pull/132857
>From 4eac4350b8a540aba5c5ed658353b4f6abaf329b Mon Sep 17 00:00:00 2001 From: Peter Collingbourne <p...@google.com> Date: Thu, 5 Jun 2025 22:15:52 -0700 Subject: [PATCH 1/2] Address comments Created using spr 1.3.6-beta.1 --- llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | 6 ++++-- llvm/lib/Target/AArch64/AArch64InstrInfo.td | 3 +-- .../AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll | 4 ++-- llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp index 80924c4858ccc..716cae5395ebc 100644 --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -173,7 +173,7 @@ class AArch64AsmPrinter : public AsmPrinter { const MachineOperand *AUTAddrDisc, Register Scratch, std::optional<AArch64PACKey::ID> PACKey, - uint64_t PACDisc, unsigned PACAddrDisc); + uint64_t PACDisc, Register PACAddrDisc); // Emit the sequence to compute the discriminator. // @@ -1871,6 +1871,8 @@ Register AArch64AsmPrinter::emitPtrauthDiscriminator(uint16_t Disc, Register AddrDisc, Register ScratchReg, bool MayUseAddrAsScratch) { + assert(ScratchReg == AArch64::X16 || ScratchReg == AArch64::X17 || + !STI->isX16X17Safer()); // So far we've used NoRegister in pseudos. Now we need real encodings. if (AddrDisc == AArch64::NoRegister) AddrDisc = AArch64::XZR; @@ -2073,7 +2075,7 @@ void AArch64AsmPrinter::emitPtrauthAuthResign( Register AUTVal, AArch64PACKey::ID AUTKey, uint64_t AUTDisc, const MachineOperand *AUTAddrDisc, Register Scratch, std::optional<AArch64PACKey::ID> PACKey, uint64_t PACDisc, - unsigned PACAddrDisc) { + Register PACAddrDisc) { const bool IsAUTPAC = PACKey.has_value(); // We expand AUT/AUTPAC into a sequence of the form diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td index 37acdc3e9f7cc..caa247c3c2ce4 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -1955,8 +1955,7 @@ let Predicates = [HasPAuth] in { def AUTxMxN : Pseudo<(outs GPR64:$AuthVal, GPR64common:$Scratch), (ins GPR64:$Val, i32imm:$Key, i64imm:$Disc, GPR64:$AddrDisc), - []>, Sched<[WriteI, ReadI]> { - let Constraints = "$AuthVal = $Val"; + [], "$AuthVal = $Val">, Sched<[WriteI, ReadI]> { let isCodeGenOnly = 1; let hasSideEffects = 0; let mayStore = 0; diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll index e6651c83af8af..e2aea6df78250 100644 --- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll +++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign-with-blend.ll @@ -165,10 +165,10 @@ define i64 @test_resign_blend_and_const(i64 %arg, i64 %arg1) { ; CHECKED-NEXT: mov x17, x16 ; CHECKED-NEXT: xpacd x17 ; CHECKED-NEXT: cmp x16, x17 -; CHECKED-NEXT: b.eq [[L]]auth_success_[[N2:[0-9]+]] +; CHECKED-NEXT: b.eq [[L]]auth_success_1 ; CHECKED-NEXT: mov x16, x17 ; CHECKED-NEXT: b [[L]]resign_end_1 -; CHECKED-NEXT: Lauth_success_[[N2]]: +; CHECKED-NEXT: Lauth_success_1: ; CHECKED-NEXT: mov x17, #56789 ; CHECKED-NEXT: pacdb x16, x17 ; CHECKED-NEXT: Lresign_end_1: diff --git a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll index 47fa3f8e88c41..f95dc5600aec8 100644 --- a/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll +++ b/llvm/test/CodeGen/AArch64/ptrauth-intrinsic-auth-resign.ll @@ -687,10 +687,10 @@ define i64 @test_resign_da_constdisc(i64 %arg, i64 %arg1) { ; CHECKED-NEXT: mov x17, x16 ; CHECKED-NEXT: xpacd x17 ; CHECKED-NEXT: cmp x16, x17 -; CHECKED-NEXT: b.eq [[L]]auth_success_[[N1:[0-9]+]] +; CHECKED-NEXT: b.eq [[L]]auth_success_7 ; CHECKED-NEXT: mov x16, x17 ; CHECKED-NEXT: b [[L]]resign_end_6 -; CHECKED-NEXT: Lauth_success_[[N1]]: +; CHECKED-NEXT: Lauth_success_7: ; CHECKED-NEXT: mov x17, #256 ; CHECKED-NEXT: pacda x16, x17 ; CHECKED-NEXT: Lresign_end_6: >From 01161f76e5fbc64b96300171a5c09962fa9046f8 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne <p...@google.com> Date: Wed, 9 Jul 2025 13:46:14 -0700 Subject: [PATCH 2/2] Address comment Created using spr 1.3.6-beta.1 --- llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp index 4befc321acb3c..3d740a0cb3dc7 100644 --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -178,14 +178,13 @@ class AArch64AsmPrinter : public AsmPrinter { // Emit the sequence to compute the discriminator. // - // ScratchReg should be x16/x17. - // - // The returned register is either unmodified AddrDisc or x16/x17. + // The returned register is either unmodified AddrDisc or ScratchReg. // // If the expanded pseudo is allowed to clobber AddrDisc register, setting // MayUseAddrAsScratch may save one MOV instruction, provided the address // is already in x16/x17 (i.e. return x16/x17 which is the *modified* AddrDisc - // register at the same time): + // register at the same time) or the OS doesn't make it safer to use x16/x17 + // (see AArch64Subtarget::isX16X17Safer()): // // mov x17, x16 // movk x17, #1234, lsl #48 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits