[PATCH] D35299: [AArch64] Tie source and destination operands for AESMC/AESIMC.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 21 13:22:54 PDT 2017


fhahn updated this revision to Diff 107705.
fhahn edited the summary of this revision.
fhahn added a comment.

In https://reviews.llvm.org/D35299#816711, @t.p.northover wrote:

> > I'm afraid that it would create problems for the assembler too, wouldn't it?
>
> Yeah, the original causes failures in test/MC. I wonder why that wasn't spotted earlier?


I'm not entirely sure what you mean here. I've updated one of the AArch64 MC tests to build with +fuse-aes, to make sure the constraint does not mess up MC codegen.

> Anyway, I'm not sure the "single-use" heuristic is actually what we should care about. As far as I understand AES these instructions are only ever going to be seen with single-uses in reality so optimizing for other cases is probably premature.
> 
> For out-of-order non-fused implementations the register shouldn't matter as far as I can see, which leaves in-order unfused implementations. I've got much less experience there, but don't they tend to have early forwarding to dependent instructions anyway?
> 
> So perhaps a hybrid approach where the Pattern always picks these pseudo-instructions would be best?

Yes, the single-use case is what we should see in practice. I've removed the single use pattern from the patch.


https://reviews.llvm.org/D35299

Files:
  lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  lib/Target/AArch64/AArch64InstrInfo.td
  lib/Target/AArch64/AArch64MacroFusion.cpp
  test/CodeGen/AArch64/misched-fusion-aes.ll
  test/MC/AArch64/arm64-crypto.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35299.107705.patch
Type: text/x-patch
Size: 12682 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170721/6bed9fe6/attachment.bin>


More information about the llvm-commits mailing list