================
@@ -163,8 +163,15 @@ class AArch64AsmPrinter : public AsmPrinter {
   // Emit the sequence for AUT or AUTPAC.
   void emitPtrauthAuthResign(const MachineInstr *MI);
 
-  // Emit the sequence to compute a discriminator into x17, or reuse AddrDisc.
-  unsigned emitPtrauthDiscriminator(uint16_t Disc, unsigned AddrDisc);
+  // Emit the sequence to compute the discriminator.
+  // ScratchReg should be x16/x17.
+  // The returned register is either unmodified AddrDisc or x16/x17.
+  // If the expanded pseudo is allowed to clobber AddrDisc register, setting
+  // MayUseAddrAsScratch may save one MOV instruction, provided the address
----------------
atrosinenko wrote:

I agree the comment is not very clear - hopefully the updated version is more 
readable. The reason that the commit message mentions two instructions and this 
comment mentions only one is that the second `mov` is saved due to relaxing the 
register class.

When the particular instruction clobbers both x16 and x17 and AddrDisc is not 
used after the discriminator is computed, by relaxing the register class this
```
        ldr     x9, [x16]
        mov     x8, x16
        mov     x17, x8
        movk    x17, #34646, lsl #48
        blraa   x9, x17
```
can be simplified to
```
        ldr     x8, [x16]
        mov     x17, x16
        movk    x17, #34646, lsl #48
        blraa   x8, x17
```
which can be further simplified to
```
        ldr     x8, [x16]
        movk    x16, #34646, lsl #48
        blraa   x8, x16
```
by reusing AddrDisc in-place.

https://github.com/llvm/llvm-project/pull/115185
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to