Skip to content

Commit 3f58ff2

Browse files
authored
AArch64: Remove the PAUTH_BLEND pseudo-instruction.
It can be represented using a regular MOVK instruction which also has the advantage of sometimes being selectable without a preceding MOV. Reviewers: ahmedbougacha, asl, atrosinenko Reviewed By: atrosinenko Pull Request: llvm#134765
1 parent 30d13e3 commit 3f58ff2

File tree

3 files changed

+1
-68
lines changed

3 files changed

+1
-68
lines changed

llvm/lib/Target/AArch64/AArch64InstrInfo.td

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,9 +1798,6 @@ def PAUTH_PROLOGUE : Pseudo<(outs), (ins), []>, Sched<[]> {
17981798
def PAUTH_EPILOGUE : Pseudo<(outs), (ins), []>, Sched<[]>;
17991799
}
18001800

1801-
def PAUTH_BLEND : Pseudo<(outs GPR64:$disc),
1802-
(ins GPR64:$addr_disc, i32imm:$int_disc), []>, Sched<[]>;
1803-
18041801
// These pointer authentication instructions require armv8.3a
18051802
let Predicates = [HasPAuth] in {
18061803

@@ -10130,7 +10127,7 @@ let Predicates = [HasMOPS, HasMTE], Defs = [NZCV], Size = 12, mayLoad = 0, maySt
1013010127
// v8.3 Pointer Authentication late patterns
1013110128

1013210129
def : Pat<(int_ptrauth_blend GPR64:$Rd, imm64_0_65535:$imm),
10133-
(PAUTH_BLEND GPR64:$Rd, (trunc_imm imm64_0_65535:$imm))>;
10130+
(MOVKXi GPR64:$Rd, (trunc_imm imm64_0_65535:$imm), 48)>;
1013410131
def : Pat<(int_ptrauth_blend GPR64:$Rd, GPR64:$Rn),
1013510132
(BFMXri GPR64:$Rd, GPR64:$Rn, 16, 15)>;
1013610133

llvm/lib/Target/AArch64/AArch64PointerAuth.cpp

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,6 @@ class AArch64PointerAuth : public MachineFunctionPass {
4242
void authenticateLR(MachineFunction &MF,
4343
MachineBasicBlock::iterator MBBI) const;
4444

45-
/// Stores blend(AddrDisc, IntDisc) to the Result register.
46-
void emitBlend(MachineBasicBlock::iterator MBBI, Register Result,
47-
Register AddrDisc, unsigned IntDisc) const;
48-
49-
/// Expands PAUTH_BLEND pseudo instruction.
50-
void expandPAuthBlend(MachineBasicBlock::iterator MBBI) const;
51-
5245
bool checkAuthenticatedLR(MachineBasicBlock::iterator TI) const;
5346
};
5447

@@ -249,32 +242,6 @@ unsigned llvm::AArch64PAuth::getCheckerSizeInBytes(AuthCheckMethod Method) {
249242
llvm_unreachable("Unknown AuthCheckMethod enum");
250243
}
251244

252-
void AArch64PointerAuth::emitBlend(MachineBasicBlock::iterator MBBI,
253-
Register Result, Register AddrDisc,
254-
unsigned IntDisc) const {
255-
MachineBasicBlock &MBB = *MBBI->getParent();
256-
DebugLoc DL = MBBI->getDebugLoc();
257-
258-
if (Result != AddrDisc)
259-
BuildMI(MBB, MBBI, DL, TII->get(AArch64::ORRXrs), Result)
260-
.addReg(AArch64::XZR)
261-
.addReg(AddrDisc)
262-
.addImm(0);
263-
264-
BuildMI(MBB, MBBI, DL, TII->get(AArch64::MOVKXi), Result)
265-
.addReg(Result)
266-
.addImm(IntDisc)
267-
.addImm(48);
268-
}
269-
270-
void AArch64PointerAuth::expandPAuthBlend(
271-
MachineBasicBlock::iterator MBBI) const {
272-
Register ResultReg = MBBI->getOperand(0).getReg();
273-
Register AddrDisc = MBBI->getOperand(1).getReg();
274-
unsigned IntDisc = MBBI->getOperand(2).getImm();
275-
emitBlend(MBBI, ResultReg, AddrDisc, IntDisc);
276-
}
277-
278245
bool AArch64PointerAuth::runOnMachineFunction(MachineFunction &MF) {
279246
Subtarget = &MF.getSubtarget<AArch64Subtarget>();
280247
TII = Subtarget->getInstrInfo();
@@ -290,7 +257,6 @@ bool AArch64PointerAuth::runOnMachineFunction(MachineFunction &MF) {
290257
break;
291258
case AArch64::PAUTH_PROLOGUE:
292259
case AArch64::PAUTH_EPILOGUE:
293-
case AArch64::PAUTH_BLEND:
294260
PAuthPseudoInstrs.push_back(MI.getIterator());
295261
break;
296262
}
@@ -305,9 +271,6 @@ bool AArch64PointerAuth::runOnMachineFunction(MachineFunction &MF) {
305271
case AArch64::PAUTH_EPILOGUE:
306272
authenticateLR(MF, It);
307273
break;
308-
case AArch64::PAUTH_BLEND:
309-
expandPAuthBlend(It);
310-
break;
311274
default:
312275
llvm_unreachable("Unhandled opcode");
313276
}

llvm/test/CodeGen/AArch64/ptrauth-pseudo-instructions.mir

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)