summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
diff options
context:
space:
mode:
authorBalaram Makam <bmakam@codeaurora.org>2017-04-08 03:30:15 +0000
committerBalaram Makam <bmakam@codeaurora.org>2017-04-08 03:30:15 +0000
commitb4419f9d30a3a421ec4e723ffc9fb53d9b13b494 (patch)
tree47c70143acf732ae78b3eb4ddec10830897b4505 /llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
parentbfb2a9db31c026f123e3cd0d0a4884caa4671ae3 (diff)
downloadbcm5719-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.cpp11
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 {
OpenPOWER on IntegriCloud