diff options
| author | Balaram Makam <bmakam@codeaurora.org> | 2017-04-08 03:30:15 +0000 |
|---|---|---|
| committer | Balaram Makam <bmakam@codeaurora.org> | 2017-04-08 03:30:15 +0000 |
| commit | b4419f9d30a3a421ec4e723ffc9fb53d9b13b494 (patch) | |
| tree | 47c70143acf732ae78b3eb4ddec10830897b4505 /llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | |
| parent | bfb2a9db31c026f123e3cd0d0a4884caa4671ae3 (diff) | |
| download | bcm5719-llvm-b4419f9d30a3a421ec4e723ffc9fb53d9b13b494.tar.gz bcm5719-llvm-b4419f9d30a3a421ec4e723ffc9fb53d9b13b494.zip | |
[AArch64] Refine Falkor Machine Model - Part 3
This concludes the refinements to Falkor Machine Model.
It includes SchedPredicates for immediate zero and LSL Fast.
Forwarding logic is also modeled for vector multiply and
accumulate only.
llvm-svn: 299810
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64InstrInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp index 24fc7d3c8b0..41fc8eceab5 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -763,6 +763,17 @@ bool AArch64InstrInfo::isAsCheapAsAMove(const MachineInstr &MI) const { llvm_unreachable("Unknown opcode to check as cheap as a move!"); } +bool AArch64InstrInfo::isFalkorLSLFast(const MachineInstr &MI) const { + if (MI.getNumOperands() < 4) + return false; + unsigned ShOpVal = MI.getOperand(3).getImm(); + unsigned ShImm = AArch64_AM::getShiftValue(ShOpVal); + if (AArch64_AM::getShiftType(ShOpVal) == AArch64_AM::LSL && + ShImm < 4) + return true; + return false; +} + bool AArch64InstrInfo::isCoalescableExtInstr(const MachineInstr &MI, unsigned &SrcReg, unsigned &DstReg, unsigned &SubIdx) const { |

