[llvm] [SandboxVec][DAG] Implement PredIterator (PR #111604)
Sriraman Tallam via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 9 16:38:53 PDT 2024
================
@@ -8,10 +8,45 @@
#include "llvm/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.h"
#include "llvm/ADT/ArrayRef.h"
+#include "llvm/SandboxIR/Instruction.h"
#include "llvm/SandboxIR/Utils.h"
namespace llvm::sandboxir {
+PredIterator::value_type PredIterator::operator*() {
+ // If it's a DGNode, or a MemDGNode with an OpIt != end.
+ if (!isa<MemDGNode>(N) || OpIt != OpItE) {
+ assert(OpIt != OpItE && "Can't dereference end iterator!");
+ Value *OpV = *OpIt;
+ return DAG->getNode(cast<Instruction>(OpV));
+ }
+ // It's a MemDGNode with OpIt == end, so we need to use MemIt.
+ assert(MemIt != cast<MemDGNode>(N)->memPreds().end() &&
+ "Cant' dereference end iterator!");
+ return *MemIt;
+}
----------------
tmsri wrote:
I am not sure I understand how you are going to be using this?
https://github.com/llvm/llvm-project/pull/111604
More information about the llvm-commits
mailing list