[PATCH] D71330: [ARM][MVE] findVCMPToFoldIntoVPS. NFC.
Sjoerd Meijer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 11 01:57:47 PST 2019
SjoerdMeijer created this revision.
SjoerdMeijer added reviewers: dmgreen, samparker.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: LLVM.
While grepping for some inspriration, I came across this function, and I found the logic a bit difficult to follow, so I simplified it a bit.
https://reviews.llvm.org/D71330
Files:
llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
Index: llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
===================================================================
--- llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
+++ llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
@@ -141,25 +141,24 @@
// be a VCMP, we check that after this loop. If we find another instruction
// that reads cpsr, we return nullptr.
MachineBasicBlock::iterator CmpMI = MI;
+ NewOpcode = 0;
+
while (CmpMI != MI->getParent()->begin()) {
--CmpMI;
- if (CmpMI->modifiesRegister(ARM::VPR, TRI))
- break;
- if (CmpMI->readsRegister(ARM::VPR, TRI))
+ if (CmpMI->modifiesRegister(ARM::VPR, TRI) ||
+ CmpMI->readsRegister(ARM::VPR, TRI)) {
+ NewOpcode = VCMPOpcodeToVPT(CmpMI->getOpcode());
break;
+ }
}
- if (CmpMI == MI)
- return nullptr;
- NewOpcode = VCMPOpcodeToVPT(CmpMI->getOpcode());
- if (NewOpcode == 0)
+ if (!NewOpcode)
return nullptr;
// Search forward from CmpMI to MI, checking if either register was def'd
if (registerDefinedBetween(CmpMI->getOperand(1).getReg(), std::next(CmpMI),
- MI, TRI))
- return nullptr;
- if (registerDefinedBetween(CmpMI->getOperand(2).getReg(), std::next(CmpMI),
+ MI, TRI) ||
+ registerDefinedBetween(CmpMI->getOperand(2).getReg(), std::next(CmpMI),
MI, TRI))
return nullptr;
return &*CmpMI;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71330.233280.patch
Type: text/x-patch
Size: 1417 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191211/32f7e428/attachment.bin>
More information about the llvm-commits
mailing list