diff options
author | Evandro Menezes <e.menezes@samsung.com> | 2017-02-01 02:54:39 +0000 |
---|---|---|
committer | Evandro Menezes <e.menezes@samsung.com> | 2017-02-01 02:54:39 +0000 |
commit | b21fb29c26f386be8dd44518d121219db97eda28 (patch) | |
tree | 288adb40e4c4627e9294bcb7712c510f416700a9 /llvm/lib/Target/AArch64/AArch64MacroFusion.cpp | |
parent | 94edf029238d6e30d6946c7748b0edc785518607 (diff) | |
download | bcm5719-llvm-b21fb29c26f386be8dd44518d121219db97eda28.tar.gz bcm5719-llvm-b21fb29c26f386be8dd44518d121219db97eda28.zip |
[AArch64] Add new subtarget feature to fuse AES crypto operations
This feature enables the fusion of such operations on Cortex A57, as
recommended in its Software Optimisation Guide, section 4.13, and on Exynos
M1.
Differential revision: https://reviews.llvm.org/D28491
llvm-svn: 293738
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64MacroFusion.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64MacroFusion.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp b/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp index c1adc862fed..f6d693262c3 100644 --- a/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp +++ b/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp @@ -116,6 +116,19 @@ static bool shouldScheduleAdjacent(const AArch64InstrInfo &TII, return true; } + if (ST.hasFuseAES()) + // Fuse AES crypto operations. + switch(FirstOpcode) { + // AES encode. + case AArch64::AESErr: + return SecondOpcode == AArch64::AESMCrr || + SecondOpcode == AArch64::INSTRUCTION_LIST_END; + // AES decode. + case AArch64::AESDrr: + return SecondOpcode == AArch64::AESIMCrr || + SecondOpcode == AArch64::INSTRUCTION_LIST_END; + } + return false; } |